X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=game.js;h=706bfc7a153353358d0064f0b15deed18f44f09e;hb=2c93bc13fb20e23084671ca3dc92ce9ee3e33494;hp=20cd2411e2275ff8aef51e1c35a3772931815b6b;hpb=ea14cbbefb26afd558aff8329d92f1a7b9442bac;p=empires-server diff --git a/game.js b/game.js index 20cd241..706bfc7 100644 --- a/game.js +++ b/game.js @@ -1,11 +1,31 @@ /* 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; } + /* Suport for game meta-data. + * + * What we want here is an effectively static field that is + * accessible through either the class name (SomeGame.meta) or an + * instance (some_game.meta). To pull this off we do keep two copies + * of the data. But the game classes can just set SomeGame.meta once + * and then reference it either way. + */ + static set meta(data) { + /* This allows class access (SomeGame.meta) via the get method below. */ + this._meta = data; + + /* While this allows access via an instance (some_game.meta). */ + this.prototype.meta = data; + } + + static get meta() { + return this._meta; + } + add_client(response) { const id = this.next_client_id; this.clients.push({id: id,