X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=empires-client.js;h=3d528e08ba1e4efbee827b04a3c166c2ec90cd25;hb=50249f0614d350197f7629f0f0a2d2071ad98204;hp=511527b216151a47955afc314b223703ad4dd56e;hpb=7324367e0d32f5ddbca9deb28927d7327d7aa06d;p=empires-html diff --git a/empires-client.js b/empires-client.js index 511527b..3d528e0 100644 --- a/empires-client.js +++ b/empires-client.js @@ -9,17 +9,12 @@ function add_message(severity, message) { ${message} × `; - message_area = document.getElementById('message-area'); + const message_area = document.getElementById('message-area'); message_area.insertAdjacentHTML('beforeend', message); } -function register_loaded(name) { - add_message("success", name + " is now in the game!"); -} - function register(form) { var request = new XMLHttpRequest(); - request.addEventListener("load", register_loaded(form.name.value)); request.open("POST", API + "register"); request.setRequestHeader("Content-Type", "application/json; charset=UTF-8"); @@ -31,3 +26,53 @@ function register(form) { form.reset(); } + +const events = new EventSource(API + "events"); + +events.onerror = function(event) { + if (event.target.readyState === EventSource.CLOSED) { + add_message("danger", "Connection to server lost."); + } +}; + +events.addEventListener("players", function(event) { + const players_element = document.getElementById("players"); + const players = JSON.parse(event.data); + + players_element.innerHTML = ''; + for (const player of players) { + var li = document.createElement('li'); + li.id = "player-" + player.id; + li.innerText = player.name; + players_element.appendChild(li); + } +}); + +events.addEventListener("player-join", function(event) { + const players = document.getElementById("players"); + const player = JSON.parse(event.data); + + const li = document.createElement('li'); + li.id = "player-" + player.id; + li.innerText = player.name; + players.appendChild(li); + + add_message("success", player.name + " is now in the game!"); +}); + +events.addEventListener("player-leave", function(event) { + const players = document.getElementById("players"); + const id = JSON.parse(event.data); + const player = document.getElementById("player-" + id.id); + + add_message("info", player.innerText + " has left the game."); + players.removeChild(player); +}); + +events.addEventListener("capture", function(event_string) { + const players = document.getElementById("players"); + const event = JSON.parse(event_string.data); + const player = document.getElementById("player-" + event.captee); + + players.removeChild(player); +});