X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=empires-client.js;h=994ed1a4e84680a24cb5815bc9dd72708f79ec6b;hb=1d72ba34f93cf0c821771bc6697891004abab95b;hp=3d528e08ba1e4efbee827b04a3c166c2ec90cd25;hpb=6ae3309fc78ab84e973562dee6c1dff94abcccfe;p=empires-html diff --git a/empires-client.js b/empires-client.js index 3d528e0..994ed1a 100644 --- a/empires-client.js +++ b/empires-client.js @@ -27,6 +27,36 @@ function register(form) { form.reset(); } +function toggle_host_tools() { + const host_tools = document.getElementById("host-tools"); + + if (host_tools.style.display === "none") + host_tools.style.display = "block"; + else + host_tools.style.display = "none"; +} + +function post_reveal() { + const request = new XMLHttpRequest(); + + request.open("POST", API + "reveal"); + request.send(); +} + +function post_start() { + const request = new XMLHttpRequest(); + + request.open("POST", API + "start"); + request.send(); +} + +function post_reset() { + const request = new XMLHttpRequest(); + + request.open("POST", API + "reset"); + request.send(); +} + const events = new EventSource(API + "events"); events.onerror = function(event) { @@ -36,6 +66,7 @@ events.onerror = function(event) { }; events.addEventListener("players", function(event) { + const players_div = document.getElementById("players-div"); const players_element = document.getElementById("players"); const players = JSON.parse(event.data); @@ -46,9 +77,13 @@ events.addEventListener("players", function(event) { li.innerText = player.name; players_element.appendChild(li); } + + /* Force players list to be visible. */ + players_div.style.display = "block"; }); events.addEventListener("player-join", function(event) { + const players_div = document.getElementById("players-div"); const players = document.getElementById("players"); const player = JSON.parse(event.data); @@ -57,7 +92,8 @@ events.addEventListener("player-join", function(event) { li.innerText = player.name; players.appendChild(li); - add_message("success", player.name + " is now in the game!"); + /* Force players list to be visible. */ + players_div.style.display = "block"; }); events.addEventListener("player-leave", function(event) { @@ -69,6 +105,36 @@ events.addEventListener("player-leave", function(event) { 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);