Files
Werewolf/server/modules/GameManager.js
2021-11-09 22:54:44 -05:00

53 lines
1.6 KiB
JavaScript

const globals = require('../config/globals');
class GameManager {
constructor (logger) {
this.logger = logger;
//this.activeGameRunner = new ActiveGameRunner(this.postGame).getInstance();
//this.gameSocketUtility = GameSocketUtility;
}
createGame = (gameParams) => {
const expectedKeys = ['deck', 'hasTimer', 'timerParams'];
if (typeof gameParams !== 'object' || expectedKeys.some((key) => !Object.keys(gameParams).includes(key))) {
this.logger.error('Tried to create game with invalid options: ' + JSON.stringify(gameParams));
return Promise.reject('Tried to create game with invalid options: ' + gameParams);
} else {
const newAccessCode = this.generateAccessCode();
return Promise.resolve(newAccessCode);
}
}
generateAccessCode = () => {
const numLetters = globals.ACCESS_CODE_CHAR_POOL.length;
const codeDigits = [];
let iterations = globals.ACCESS_CODE_LENGTH;
while (iterations > 0) {
iterations--;
codeDigits.push(globals.ACCESS_CODE_CHAR_POOL[getRandomInt(numLetters)]);
}
return codeDigits.join('');
}
}
function getRandomInt (max) {
return Math.floor(Math.random() * Math.floor(max));
}
class Singleton {
constructor (logger) {
if (!Singleton.instance) {
logger.log('CREATING SINGLETON GAME MANAGER');
Singleton.instance = new GameManager(logger);
}
}
getInstance () {
return Singleton.instance;
}
}
module.exports = Singleton;