It feels cleaner to have a single object to import and hang everything
we need off of it.
const express = require("express");
const Game = require("./game.js");
const express = require("express");
const Game = require("./game.js");
-const router = express.Router();
-
const GamePhase = {
JOIN: 1,
REVEAL: 2,
const GamePhase = {
JOIN: 1,
REVEAL: 2,
+Empires.router = express.Router();
+const router = Empires.router;
+
router.post('/spectator', (request, response) => {
const game = request.game;
var name = request.session.nickname;
router.post('/spectator', (request, response) => {
const game = request.game;
var name = request.session.nickname;
response.send(game.players);
});
response.send(game.players);
});
-exports.router = router;
-exports.Game = Empires;
-
Empires.meta = {
name: "Empires",
identifier: "empires"
};
Empires.meta = {
name: "Empires",
identifier: "empires"
};
+
+exports.Game = Empires;
/* 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;
/* Add routes that are common to all games. */
/* Add routes that are common to all games. */
- engine.router.get('/', (request, response) => {
+ router.get('/', (request, response) => {
const game = request.game;
if (! request.session.nickname)
const game = request.game;
if (! request.session.nickname)
response.render(`${game.meta.identifier}-game.html`);
});
response.render(`${game.meta.identifier}-game.html`);
});
- engine.router.get('/events', (request, response) => {
+ router.get('/events', (request, response) => {
const game = request.game;
game.handle_events(request, response);
const game = request.game;
game.handle_events(request, response);
/* Further, add some routes conditionally depending on whether the
* engine provides specific, necessary methods for the routes. */
if (engine.Game.prototype.add_move) {
/* Further, add some routes conditionally depending on whether the
* engine provides specific, necessary methods for the routes. */
if (engine.Game.prototype.add_move) {
- engine.router.post('/move', (request, response) => {
+ router.post('/move', (request, response) => {
const game = request.game;
const move = request.body.move;
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}/`, engine.router);
+ app.use(`/${engine.Game.meta.identifier}/[a-zA-Z0-9]{4}/`, router);
}
app.listen(4000, function () {
}
app.listen(4000, function () {
const express = require("express");
const Game = require("./game.js");
const express = require("express");
const Game = require("./game.js");
-const router = express.Router();
-
class TicTacToe extends Game {
constructor(id) {
super(id);
class TicTacToe extends Game {
constructor(id) {
super(id);
-exports.router = router;
-exports.Game = TicTacToe;
+TicTacToe.router = express.Router();
TicTacToe.meta = {
name: "Tic Tac Toe",
identifier: "tictactoe"
};
TicTacToe.meta = {
name: "Tic Tac Toe",
identifier: "tictactoe"
};
+
+exports.Game = TicTacToe;