X-Git-Url: https://git.cworth.org/git?p=empires-server;a=blobdiff_plain;f=lmno.js;h=54baea91f8d5688a74071fa45d19a12cd13ae091;hp=0db678957f0d0e09717fd9e6257d5c3d57189dff;hb=HEAD;hpb=3586642fb026f5caa5da24ec8a68862509f0d4d1 diff --git a/lmno.js b/lmno.js index 0db6789..54baea9 100644 --- a/lmno.js +++ b/lmno.js @@ -59,14 +59,21 @@ njx.addFilter('active', function(list) { if (list) return list.filter(e => e.active === true); else - return null; + return []; }); njx.addFilter('idle', function(list) { if (list) return list.filter(e => e.active === false); else - return null; + return []; +}); + +njx.addFilter('map_prop', function(list, prop) { + if (list) + return list.map(e => e[prop]); + else + return []; }); /* Load each of our game mini-apps. @@ -122,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]; @@ -135,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: @@ -149,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 */ @@ -281,7 +302,7 @@ app.post('/login', async (request, response) => { return; }); -/* API to set uer profile information */ +/* API to set user profile information */ app.put('/profile', (request, response) => { const nickname = request.body.nickname; if (nickname) {