Previously, we were referencing engine.Game separately from
engine.router, etc. But now that engine.Game is the only property
that's part of the interface, let's dereference that immediately at
the time of require() so that later on we can just use "engine" in
place of "engine.Game".
* add_move method.
*/
const engines = {
* add_move method.
*/
const engines = {
- empires: require("./empires"),
- tictactoe: require("./tictactoe")
+ empires: require("./empires").Game,
+ tictactoe: require("./tictactoe").Game
const engine = engines[engine_name];
const engine = engines[engine_name];
- const game = new engine.Game(id);
+ const game = new engine(id);
/* Mount sub apps. only _after_ we have done all the middleware we need. */
for (let key in engines) {
const engine = engines[key];
/* Mount sub apps. only _after_ we have done all the middleware we need. */
for (let key in engines) {
const engine = engines[key];
- const router = engine.Game.router;
+ const router = engine.router;
/* Add routes that are common to all games. */
router.get('/', (request, response) => {
/* Add routes that are common to all games. */
router.get('/', (request, response) => {
/* Further, add some routes conditionally depending on whether the
* engine provides specific, necessary methods for the routes. */
/* Further, add some routes conditionally depending on whether the
* engine provides specific, necessary methods for the routes. */
- if (engine.Game.prototype.add_move) {
+ if (engine.prototype.add_move) {
router.post('/move', (request, response) => {
const game = request.game;
const move = request.body.move;
router.post('/move', (request, response) => {
const game = request.game;
const move = request.body.move;
}
/* And mount the whole router at the path for the game. */
}
/* And mount the whole router at the path for the game. */
- app.use(`/${engine.Game.meta.identifier}/[a-zA-Z0-9]{4}/`, router);
+ app.use(`/${engine.meta.identifier}/[a-zA-Z0-9]{4}/`, router);
}
app.listen(4000, function () {
}
app.listen(4000, function () {