/* Load each of our game mini-apps. */
var empires = require("./empires");
+var tictactoe = require("./tictactoe");
class LMNO {
constructor() {
/* Mount sub apps. only _after_ we have done all the middleware we need. */
app.use('/empires/[a-zA-Z0-9]{4}/', empires.app);
+app.use('/tictactoe/[a-zA-Z0-9]{4}/', tictactoe.app);
app.listen(4000, function () {
console.log('LMNO server listening on localhost:4000');
--- /dev/null
+{% extends "base.html" %}
+
+{% block head %}
+<link rel="stylesheet" href="/tictactoe/tictactoe.css" type="text/css" />
+
+<script src="/react.js"></script>
+<script src="/react-dom.js"></script>
+<script type="module" src="/tictactoe/tictactoe.js"></script>
+{% endblock %}
+
+{% block page %}
+<h1>Tic Tac Toe</h1>
+
+<p>
+ Just the classic game.
+</p>
+
+<div id="tictactoe"></div>
+
+{% endblock %}
--- /dev/null
+const express = require("express");
+const cors = require("cors");
+const body_parser = require("body-parser");
+const path = require("path");
+const nunjucks = require("nunjucks");
+
+const app = express();
+app.use(cors());
+app.use(body_parser.urlencoded({ extended: false }));
+app.use(body_parser.json());
+
+nunjucks.configure("templates", {
+ autoescape: true,
+ express: app
+});
+
+app.get('/', (request, response) => {
+ const game = request.game;
+
+ if (! request.session.nickname)
+ response.render('choose-nickname.html', { game_name: "Tic Tac Toe" });
+ else
+ response.render('tictactoe-game.html');
+});
+
+exports.app = app;