mirror of
https://github.com/AlecM33/Werewolf.git
synced 2025-12-26 15:57:50 +01:00
ending games, style low timer
This commit is contained in:
@@ -12,7 +12,8 @@ const globals = {
|
||||
KILL_PLAYER: 'killPlayer',
|
||||
REVEAL_PLAYER: 'revealPlayer',
|
||||
TRANSFER_MODERATOR: 'transferModerator',
|
||||
CHANGE_NAME: 'changeName'
|
||||
CHANGE_NAME: 'changeName',
|
||||
END_GAME: 'endGame'
|
||||
},
|
||||
MESSAGES: {
|
||||
ENTER_NAME: "Client must enter name."
|
||||
|
||||
@@ -49,7 +49,7 @@ class ActiveGameRunner {
|
||||
});
|
||||
|
||||
gameProcess.on('exit', () => {
|
||||
this.logger.debug('Game ' + game.accessCode + ' has ended.');
|
||||
this.logger.debug('Game ' + game.accessCode + ' timer has expired.');
|
||||
delete this.timerThreads[game.accessCode];
|
||||
});
|
||||
gameProcess.send({
|
||||
|
||||
@@ -33,7 +33,7 @@ class GameManager {
|
||||
ackFn(this.environment);
|
||||
});
|
||||
|
||||
socket.on(globals.CLIENT_COMMANDS.START_GAME, (accessCode, personId) => {
|
||||
socket.on(globals.CLIENT_COMMANDS.START_GAME, (accessCode) => {
|
||||
let game = this.activeGameRunner.activeGames[accessCode];
|
||||
if (game) {
|
||||
game.status = globals.STATUS.IN_PROGRESS;
|
||||
@@ -158,6 +158,17 @@ class GameManager {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
socket.on(globals.CLIENT_COMMANDS.END_GAME, (accessCode) => {
|
||||
let game = this.activeGameRunner.activeGames[accessCode];
|
||||
if (game) {
|
||||
game.status = globals.STATUS.ENDED;
|
||||
for (let person of game.people) {
|
||||
person.revealed = true;
|
||||
}
|
||||
namespace.in(accessCode).emit(globals.CLIENT_COMMANDS.END_GAME, GameStateCurator.mapPeopleForModerator(game.people));
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -7,6 +7,23 @@ const globals = require("../config/globals")
|
||||
const GameStateCurator = {
|
||||
getGameStateFromPerspectiveOfPerson: (game, person, gameRunner, socket, logger) => {
|
||||
return getGameStateBasedOnPermissions(game, person, gameRunner);
|
||||
},
|
||||
|
||||
mapPeopleForModerator: (people) => {
|
||||
return people
|
||||
.filter((person) => {
|
||||
return person.assigned === true
|
||||
})
|
||||
.map((person) => ({
|
||||
name: person.name,
|
||||
id: person.id,
|
||||
userType: person.userType,
|
||||
gameRole: person.gameRole,
|
||||
gameRoleDescription: person.gameRoleDescription,
|
||||
alignment: person.alignment,
|
||||
out: person.out,
|
||||
revealed: person.revealed
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +44,7 @@ function getGameStateBasedOnPermissions(game, person, gameRunner) {
|
||||
switch (person.userType) {
|
||||
case globals.USER_TYPES.PLAYER:
|
||||
case globals.USER_TYPES.KILLED_PLAYER:
|
||||
return {
|
||||
let state = {
|
||||
accessCode: game.accessCode,
|
||||
status: game.status,
|
||||
moderator: mapPerson(game.moderator),
|
||||
@@ -37,10 +54,16 @@ function getGameStateBasedOnPermissions(game, person, gameRunner) {
|
||||
.filter((person) => {
|
||||
return person.assigned === true
|
||||
})
|
||||
.map((filteredPerson) => mapPerson(filteredPerson)),
|
||||
.map((filteredPerson) =>
|
||||
mapPerson(filteredPerson)
|
||||
),
|
||||
timerParams: game.timerParams,
|
||||
isFull: game.isFull,
|
||||
}
|
||||
if (game.status === globals.STATUS.ENDED) {
|
||||
state.people = GameStateCurator.mapPeopleForModerator(game.people);
|
||||
}
|
||||
return state;
|
||||
case globals.USER_TYPES.MODERATOR:
|
||||
return {
|
||||
accessCode: game.accessCode,
|
||||
@@ -48,7 +71,7 @@ function getGameStateBasedOnPermissions(game, person, gameRunner) {
|
||||
moderator: mapPerson(game.moderator),
|
||||
client: client,
|
||||
deck: game.deck,
|
||||
people: mapPeopleForModerator(game.people, client),
|
||||
people: GameStateCurator.mapPeopleForModerator(game.people, client),
|
||||
timerParams: game.timerParams,
|
||||
isFull: game.isFull,
|
||||
spectators: game.spectators
|
||||
@@ -88,23 +111,6 @@ function getGameStateBasedOnPermissions(game, person, gameRunner) {
|
||||
}
|
||||
}
|
||||
|
||||
function mapPeopleForModerator(people) {
|
||||
return people
|
||||
.filter((person) => {
|
||||
return person.assigned === true
|
||||
})
|
||||
.map((person) => ({
|
||||
name: person.name,
|
||||
id: person.id,
|
||||
userType: person.userType,
|
||||
gameRole: person.gameRole,
|
||||
gameRoleDescription: person.gameRoleDescription,
|
||||
alignment: person.alignment,
|
||||
out: person.out,
|
||||
revealed: person.revealed
|
||||
}));
|
||||
}
|
||||
|
||||
function mapPerson(person) {
|
||||
if (person.revealed) {
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user