]> git.cworth.org Git - empires-html/blobdiff - empires-client.js
Style the revealed character names extra large
[empires-html] / empires-client.js
index ff952a3e5281d2bdd15a8918c9a76542e152e939..39c59ece8156b358f08bf8fc2a2a06abd4b05001 100644 (file)
@@ -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");
@@ -41,6 +36,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);
 
@@ -51,9 +47,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-register", function(event) {
+events.addEventListener("player-join", function(event) {
+  const players_div = document.getElementById("players-div");
   const players = document.getElementById("players");
   const player = JSON.parse(event.data);
 
@@ -61,16 +61,50 @@ events.addEventListener("player-register", function(event) {
   li.id = "player-" + player.id;
   li.innerText = player.name;
   players.appendChild(li);
+
+  /* Force players list to be visible. */
+  players_div.style.display = "block";
 });
 
-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);