We use a static getter/setter function for this since JavaScript
doesn't yet have wide support for static fields.
Also, we duplicate the data on both a field within the class itself
(Game._meta) as well as in the prototype (Game.prototype). The purpose
of this is so that we can access this meta-data as either a class
static (Game.meta) or via an instance (some_game.meta).
this.next_client_id = 1;
}
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,
add_client(response) {
const id = this.next_client_id;
this.clients.push({id: id,