mirror of
https://github.com/AlecM33/Werewolf.git
synced 2025-12-26 07:47:50 +01:00
don't emit killed event to person receiving mod powers
This commit is contained in:
@@ -175,12 +175,13 @@ class GameManager {
|
||||
: accessCode;
|
||||
};
|
||||
|
||||
transferModeratorPowers = (game, person, namespace, logger) => {
|
||||
transferModeratorPowers = (socket, game, person, namespace, logger) => {
|
||||
if (person && (person.out || person.userType === globals.USER_TYPES.SPECTATOR)) {
|
||||
logger.debug('game ' + game.accessCode + ': transferring mod powers to ' + person.name);
|
||||
if (game.moderator === person) {
|
||||
person.userType = globals.USER_TYPES.MODERATOR;
|
||||
this.namespace.to(person.socketId).emit(globals.EVENTS.SYNC_GAME_STATE);
|
||||
socket.to(game.accessCode).emit(globals.EVENT_IDS.KILL_PLAYER, person.id);
|
||||
} else {
|
||||
const oldModerator = game.moderator;
|
||||
if (game.moderator.userType === globals.USER_TYPES.TEMPORARY_MODERATOR) {
|
||||
@@ -204,17 +205,18 @@ class GameManager {
|
||||
}
|
||||
};
|
||||
|
||||
killPlayer = (game, person, namespace, logger) => {
|
||||
killPlayer = (socket, game, person, namespace, logger) => {
|
||||
if (person && !person.out) {
|
||||
logger.debug('game ' + game.accessCode + ': killing player ' + person.name);
|
||||
if (person.userType !== globals.USER_TYPES.TEMPORARY_MODERATOR) {
|
||||
person.userType = globals.USER_TYPES.KILLED_PLAYER;
|
||||
}
|
||||
person.out = true;
|
||||
namespace.in(game.accessCode).emit(globals.EVENT_IDS.KILL_PLAYER, person.id);
|
||||
// temporary moderators will transfer their powers automatically to the first person they kill.
|
||||
if (game.moderator.userType === globals.USER_TYPES.TEMPORARY_MODERATOR) {
|
||||
this.transferModeratorPowers(game, person, namespace, logger);
|
||||
this.transferModeratorPowers(socket, game, person, namespace, logger);
|
||||
} else {
|
||||
namespace.in(game.accessCode).emit(globals.EVENT_IDS.KILL_PLAYER, person.id);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -75,7 +75,7 @@ class SocketManager {
|
||||
gameManager.getTimeRemaining(game, socket);
|
||||
break;
|
||||
case EVENT_IDS.KILL_PLAYER:
|
||||
gameManager.killPlayer(game, game.people.find((person) => person.id === args.personId), namespace, this.logger);
|
||||
gameManager.killPlayer(socket, game, game.people.find((person) => person.id === args.personId), namespace, this.logger);
|
||||
break;
|
||||
case EVENT_IDS.REVEAL_PLAYER:
|
||||
gameManager.revealPlayer(game, args.personId);
|
||||
|
||||
@@ -9,7 +9,7 @@ const GameStateCurator = require('../../../../server/modules/GameStateCurator');
|
||||
const logger = require('../../../../server/modules/Logger.js')(false);
|
||||
|
||||
describe('GameManager', () => {
|
||||
let gameManager, namespace;
|
||||
let gameManager, namespace, socket;
|
||||
|
||||
beforeAll(() => {
|
||||
spyOn(logger, 'debug');
|
||||
@@ -17,6 +17,7 @@ describe('GameManager', () => {
|
||||
|
||||
const inObj = { emit: () => {} };
|
||||
namespace = { in: () => { return inObj; }, to: () => { return inObj; } };
|
||||
socket = { id: '123', emit: () => {}, to: () => { return { emit: () => {} }; } };
|
||||
gameManager = new GameManager(logger, globals.ENVIRONMENT.PRODUCTION).getInstance();
|
||||
gameManager.setGameSocketNamespace(namespace);
|
||||
});
|
||||
@@ -43,7 +44,7 @@ describe('GameManager', () => {
|
||||
moderator.id,
|
||||
new Date().toJSON()
|
||||
);
|
||||
gameManager.transferModeratorPowers(game, personToTransferTo, namespace, logger);
|
||||
gameManager.transferModeratorPowers(socket, game, personToTransferTo, namespace, logger);
|
||||
|
||||
expect(game.moderator).toEqual(personToTransferTo);
|
||||
expect(personToTransferTo.userType).toEqual(USER_TYPES.MODERATOR);
|
||||
@@ -69,7 +70,7 @@ describe('GameManager', () => {
|
||||
new Date().toJSON()
|
||||
);
|
||||
game.spectators.push(personToTransferTo);
|
||||
gameManager.transferModeratorPowers(game, personToTransferTo, namespace, logger);
|
||||
gameManager.transferModeratorPowers(socket, game, personToTransferTo, namespace, logger);
|
||||
|
||||
expect(game.moderator).toEqual(personToTransferTo);
|
||||
expect(personToTransferTo.userType).toEqual(USER_TYPES.MODERATOR);
|
||||
@@ -95,7 +96,7 @@ describe('GameManager', () => {
|
||||
tempMod.id,
|
||||
new Date().toJSON()
|
||||
);
|
||||
gameManager.transferModeratorPowers(game, personToTransferTo, namespace, logger);
|
||||
gameManager.transferModeratorPowers(socket, game, personToTransferTo, namespace, logger);
|
||||
|
||||
expect(game.moderator).toEqual(personToTransferTo);
|
||||
expect(personToTransferTo.userType).toEqual(USER_TYPES.MODERATOR);
|
||||
@@ -120,7 +121,7 @@ describe('GameManager', () => {
|
||||
tempMod.id,
|
||||
new Date().toJSON()
|
||||
);
|
||||
gameManager.transferModeratorPowers(game, personToTransferTo, namespace, logger);
|
||||
gameManager.transferModeratorPowers(socket, game, personToTransferTo, namespace, logger);
|
||||
|
||||
expect(game.moderator).toEqual(personToTransferTo);
|
||||
expect(personToTransferTo.userType).toEqual(USER_TYPES.MODERATOR);
|
||||
@@ -146,7 +147,7 @@ describe('GameManager', () => {
|
||||
mod.id,
|
||||
new Date().toJSON()
|
||||
);
|
||||
gameManager.killPlayer(game, player, namespace, logger);
|
||||
gameManager.killPlayer(socket, game, player, namespace, logger);
|
||||
|
||||
expect(player.out).toEqual(true);
|
||||
expect(player.userType).toEqual(USER_TYPES.KILLED_PLAYER);
|
||||
@@ -169,11 +170,11 @@ describe('GameManager', () => {
|
||||
tempMod.id,
|
||||
new Date().toJSON()
|
||||
);
|
||||
gameManager.killPlayer(game, tempMod, namespace, logger);
|
||||
gameManager.killPlayer(socket, game, tempMod, namespace, logger);
|
||||
|
||||
expect(tempMod.out).toEqual(true);
|
||||
expect(tempMod.userType).toEqual(USER_TYPES.TEMPORARY_MODERATOR);
|
||||
expect(namespace.in().emit).toHaveBeenCalled();
|
||||
expect(namespace.in().emit).not.toHaveBeenCalled();
|
||||
expect(gameManager.transferModeratorPowers).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user