]> git.cworth.org Git - lmno.games/blob - empires/empires-client.js
Track removal of players (by either deregister or by capture)
[lmno.games] / empires / empires-client.js
1 const API = "https://families.cworth.org/api/";
2
3 function undisplay(element) {
4   element.style.display="none";
5 }
6
7 function add_message(severity, message) {
8   message = `<div class="message ${severity}" onclick="undisplay(this)">
9 ${message}
10 <span class="hide-button" onclick="undisplay(this.parentElement)">&times</span>
11 </div>`;
12   const message_area = document.getElementById('message-area');
13   message_area.insertAdjacentHTML('beforeend', message);
14 }
15
16 function register_loaded(name) {
17   add_message("success", name + " is now in the game!");
18 }
19
20 function register(form) {
21   var request = new XMLHttpRequest();
22   request.addEventListener("load", register_loaded(form.name.value));
23
24   request.open("POST", API + "register");
25   request.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
26   var data = {
27     "name": form.name.value,
28     "character": form.character.value
29   };
30   request.send(JSON.stringify(data));
31
32   form.reset();
33 }
34
35 const events = new EventSource(API + "events");
36
37 events.addEventListener("players", function(event) {
38   const players_element = document.getElementById("players");
39   const players = JSON.parse(event.data);
40
41   players_element.innerHTML = '';
42   for (const player of players) {
43     var li = document.createElement('li');
44     li.id = "player-" + player.id;
45     li.innerText = player.name;
46     players_element.appendChild(li);
47   }
48 });
49
50 events.addEventListener("player-register", function(event) {
51   const players = document.getElementById("players");
52   const player = JSON.parse(event.data);
53
54   const li = document.createElement('li');
55   li.id = "player-" + player.id;
56   li.innerText = player.name;
57   players.appendChild(li);
58 });
59
60 events.addEventListener("player-deregister", function(event) {
61   const players = document.getElementById("players");
62   const id = JSON.parse(event.data);
63   const player = document.getElementById("player-" + id.id);
64
65   players.removeChild(player);
66 });
67
68 events.addEventListener("capture", function(event_string) {
69   const players = document.getElementById("players");
70   const event = JSON.parse(event_string.data);
71   const player = document.getElementById("player-" + event.captee);
72
73   players.removeChild(player);
74 });