X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=empires-client.js;h=617e821dbbc05e670258934fa784062c3441e5c2;hb=b783f37012c917117b4ece1a523f1681e16f3c56;hp=ff952a3e5281d2bdd15a8918c9a76542e152e939;hpb=591fb6a7ac42ce2a38e185ee8f71b7b4c615f813;p=empires-html diff --git a/empires-client.js b/empires-client.js index ff952a3..617e821 100644 --- a/empires-client.js +++ b/empires-client.js @@ -13,13 +13,8 @@ ${message} 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"); @@ -53,7 +48,7 @@ events.addEventListener("players", function(event) { } }); -events.addEventListener("player-register", function(event) { +events.addEventListener("player-join", function(event) { const players = document.getElementById("players"); const player = JSON.parse(event.data); @@ -61,16 +56,49 @@ events.addEventListener("player-register", function(event) { 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-deregister", function(event) { +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("game-state", function(event) { + const data = JSON.parse(event.data); + const old_state = data.old_state; + const new_state = data.new_state; + + const hide_selector = ".show-state-" +old_state+ ",.hide-state-" +new_state; + const show_selector = ".hide-state-" +old_state+ ",.show-state-" +new_state; + + /* Hide all elements based on the state transition. */ + var elts = document.querySelectorAll(hide_selector); + for (const elt of elts) { + elt.style.display = "none"; + } + + /* And show all elements based on the same state transition. */ + elts = document.querySelectorAll(show_selector); + for (const elt of elts) { + elt.style.display = "block"; + } +}); + +events.addEventListener("character-reveal", function(event) { + const data = JSON.parse(event.data); + const character_name = data.character; + + const character = document.getElementById("character-reveal"); + + character.innerText = character_name; +}); + events.addEventListener("capture", function(event_string) { const players = document.getElementById("players"); const event = JSON.parse(event_string.data);