]> git.cworth.org Git - empires-server/commitdiff
Add new game.js with a new parent class Game
authorCarl Worth <cworth@cworth.org>
Sat, 30 May 2020 00:16:33 +0000 (17:16 -0700)
committerCarl Worth <cworth@cworth.org>
Sat, 30 May 2020 00:16:33 +0000 (17:16 -0700)
This new parent is now extended by our two game classes: Empires and
TicTacToe. There's not yet any real functionality in the Game class
yet, (just storage of the name of the engine). But this will give us a
place to lodge some common functionality as we aim to reduce code
duplication.

empires.js
game.js [new file with mode: 0644]
tictactoe.js

index 7907ce0c80a7711d4c92044f7391298156c2a664..749f26ed9058bbfa60d30138b23ce62a9732e5ab 100644 (file)
@@ -1,4 +1,7 @@
 const express = require("express");
+const Game = require("./game.js");
+
+const engine_name = "empires";
 
 const router = express.Router();
 
@@ -30,8 +33,9 @@ function shuffle(a) {
   }
 }
 
-class Game {
+class Empires extends Game {
   constructor() {
+    super(engine_name);
     this._spectators = [];
     this.next_spectator_id = 1;
     this._players = [];
@@ -387,5 +391,5 @@ router.get('/players', (request, response) => {
 router.get('/events', handle_events);
 
 exports.router = router;
-exports.name = "empires";
-exports.Game = Game;
+exports.name = engine_name;
+exports.Game = Empires;
diff --git a/game.js b/game.js
new file mode 100644 (file)
index 0000000..028c039
--- /dev/null
+++ b/game.js
@@ -0,0 +1,8 @@
+/* Base class providing common code for game engine implementations. */
+class Game {
+  constructor(name) {
+    this.name = name;
+  }
+}
+
+module.exports = Game;
index a38cea0e807f02d4e1aea2448263c7a2ebdbae1e..5b8729e48568ff114bc3acc9884495ff61081062 100644 (file)
@@ -1,9 +1,13 @@
 const express = require("express");
+const Game = require("./game.js");
+
+const engine_name = "tictactoe";
 
 const router = express.Router();
 
-class TicTacToe {
+class TicTacToe extends Game {
   constructor() {
+    super(engine_name);
     this.moves = [];
     this.board = Array(9).fill(null);
     this.clients = [];
@@ -100,5 +104,5 @@ router.get('/events', (request, response) => {
 });
 
 exports.router = router;
-exports.name = "tictactoe";
+exports.name = engine_name;
 exports.Game = TicTacToe;