X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=lmno.js;h=f5e7c1eea74af41df45a909e19b6eaa8cd83d19d;hb=f0928e27d0f8926573ca30906c0d3348d1c00e6a;hp=569d33d620244371488a64bcdca10b8804602b72;hpb=f0f8fab1203b64af04c7c41c6a4a5d7a3cfe88c6;p=lmno-server diff --git a/lmno.js b/lmno.js index 569d33d..f5e7c1e 100644 --- a/lmno.js +++ b/lmno.js @@ -129,10 +129,9 @@ class LMNO { return [...Array(4)].map(() => LMNO.letters.charAt(Math.floor(Math.random() * LMNO.letters.length))).join(''); } - create_game(engine_name) { - do { - var id = this.generate_id(); - } while (id in this.games); + create_game_with_id(engine_name, id) { + if (this.games[id]) + return null; const engine = engines[engine_name]; @@ -142,6 +141,14 @@ class LMNO { return game; } + + create_game(engine_name) { + do { + var id = this.generate_id(); + } while (id in this.games); + + return this.create_game_with_id(engine_name, id); + } } /* Some letters we don't use in our IDs: @@ -156,6 +163,13 @@ LMNO.letters = "CCDDDGGGHHJKLLLLMMMMPPPPQRRRSSSTTTVVWWYYZ"; const lmno = new LMNO(); +/* Pre-allocate an empires game with ID QRST. + * This is for convenience in the development of the flempires + * client which would like to have stable API endpoints across + * server restarts. + */ +lmno.create_game_with_id("empires", "QRST"); + /* Force a game ID into a canonical form as described above. */ function lmno_canonize(id) { /* Capitalize */