X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=game.js;h=ca12fb3e6d302470f5cb1ce946907f3361c50474;hb=731c54ef14f2fdc852961c7c2429117d4e7472d6;hp=5bbd7f503885a964105a90266f5e36d8cd981210;hpb=17ceff9f690f9689f38fe3d0d448fccba72bf044;p=empires-server diff --git a/game.js b/game.js index 5bbd7f5..ca12fb3 100644 --- a/game.js +++ b/game.js @@ -1,9 +1,12 @@ /* Base class providing common code for game engine implementations. */ class Game { - constructor(name) { - this.name = name; + constructor(id) { + this.id = id; this.clients = []; this.next_client_id = 1; + + /* Send a comment to every connected client every 15 seconds. */ + setInterval(() => {this.broadcast_string(":");}, 15000); } /* Suport for game meta-data. @@ -69,6 +72,17 @@ class Game { request.on('close', () => { this.remove_client(id); }); + + /* Finally, if this game class has a "state" property, stream that + * current state to the client. */ + if (this.state) { + const state_json = JSON.stringify(this.state); + response.write(`event: game-state\ndata: ${state_json}\n\n`); + } + } + + broadcast_move(move) { + this.broadcast_event("move", move); } }