From 472377b494ff9183d95f1274274c53dce87b76d5 Mon Sep 17 00:00:00 2001 From: Kevin <118262634+kev306@users.noreply.github.com> Date: Sat, 8 Feb 2025 17:45:07 +1100 Subject: [PATCH] Creating gameEngine folder under gameplay (#736) --- src/databaseAdapters/user.ts | 2 +- src/gameplay/{ => gameEngine}/anonymizer.ts | 2 +- .../cards/avalon/ladyOfTheLake.ts | 2 +- .../cards/avalon/refOfTheRain.ts | 2 +- .../cards/avalon/sireOfTheSea.ts | 2 +- src/gameplay/{ => gameEngine}/cards/cards.ts | 0 src/gameplay/{ => gameEngine}/cards/types.ts | 2 +- src/gameplay/{ => gameEngine}/game.ts | 26 +++++++++---------- src/gameplay/{ => gameEngine}/gameModes.ts | 0 src/gameplay/{ => gameEngine}/gameTimer.ts | 2 +- src/gameplay/{ => gameEngine}/gameWrapper.ts | 2 +- .../phases/avalon/assassination.ts | 4 +-- .../{ => gameEngine}/phases/avalon/lady.js | 2 +- .../{ => gameEngine}/phases/avalon/ref.js | 2 +- .../{ => gameEngine}/phases/avalon/sire.js | 2 +- .../phases/common/finished.ts | 2 +- .../{ => gameEngine}/phases/common/frozen.ts | 2 +- .../{ => gameEngine}/phases/common/paused.ts | 2 +- .../phases/common/pickingTeam.ts | 4 +-- .../{ => gameEngine}/phases/common/voided.ts | 2 +- .../phases/common/votingMission.ts | 4 +-- .../phases/common/votingTeam.ts | 4 +-- .../{ => gameEngine}/phases/phases.ts | 0 src/gameplay/{ => gameEngine}/phases/types.ts | 2 +- .../{ => gameEngine}/roles/avalon/assassin.ts | 0 .../{ => gameEngine}/roles/avalon/hitberon.ts | 0 .../{ => gameEngine}/roles/avalon/isolde.ts | 0 .../{ => gameEngine}/roles/avalon/merlin.ts | 0 .../{ => gameEngine}/roles/avalon/mordred.ts | 0 .../roles/avalon/mordredassassin.ts | 0 .../{ => gameEngine}/roles/avalon/morgana.ts | 0 .../{ => gameEngine}/roles/avalon/oberon.ts | 0 .../{ => gameEngine}/roles/avalon/percival.ts | 0 .../roles/avalon/resistance.ts | 0 .../{ => gameEngine}/roles/avalon/spy.ts | 0 .../{ => gameEngine}/roles/avalon/tristan.ts | 0 src/gameplay/{ => gameEngine}/roles/roles.ts | 0 src/gameplay/{ => gameEngine}/roles/types.ts | 0 src/gameplay/{ => gameEngine}/room.ts | 10 +++---- src/gameplay/{ => gameEngine}/roomTypes.ts | 0 .../{ => gameEngine}/tests/anonymizer.test.ts | 0 .../{ => gameEngine}/tests/game.test.ts | 8 +++--- src/gameplay/{ => gameEngine}/types.ts | 0 .../{ => gameEngine}/voidGameTracker.ts | 0 src/models/user.ts | 2 +- src/rewards/constants.ts | 2 +- src/rewards/getRewards.ts | 2 +- src/routes/index.js | 8 ++++-- src/routes/types.ts | 2 +- src/sockets/bot.js | 2 +- src/sockets/commands/admin/atestgame.ts | 8 +++--- src/sockets/commands/mod/mforcemove.ts | 4 +-- src/sockets/commands/mod/mtogglepause.ts | 2 +- src/sockets/filters/createRoomFilter.ts | 4 +-- src/sockets/sockets.ts | 24 ++++++++++------- src/sockets/types.ts | 2 +- 56 files changed, 81 insertions(+), 73 deletions(-) rename src/gameplay/{ => gameEngine}/anonymizer.ts (98%) rename src/gameplay/{ => gameEngine}/cards/avalon/ladyOfTheLake.ts (97%) rename src/gameplay/{ => gameEngine}/cards/avalon/refOfTheRain.ts (97%) rename src/gameplay/{ => gameEngine}/cards/avalon/sireOfTheSea.ts (97%) rename src/gameplay/{ => gameEngine}/cards/cards.ts (100%) rename src/gameplay/{ => gameEngine}/cards/types.ts (89%) rename src/gameplay/{ => gameEngine}/game.ts (99%) rename src/gameplay/{ => gameEngine}/gameModes.ts (100%) rename src/gameplay/{ => gameEngine}/gameTimer.ts (99%) rename src/gameplay/{ => gameEngine}/gameWrapper.ts (99%) rename src/gameplay/{ => gameEngine}/phases/avalon/assassination.ts (98%) rename src/gameplay/{ => gameEngine}/phases/avalon/lady.js (98%) rename src/gameplay/{ => gameEngine}/phases/avalon/ref.js (98%) rename src/gameplay/{ => gameEngine}/phases/avalon/sire.js (98%) rename src/gameplay/{ => gameEngine}/phases/common/finished.ts (95%) rename src/gameplay/{ => gameEngine}/phases/common/frozen.ts (94%) rename src/gameplay/{ => gameEngine}/phases/common/paused.ts (94%) rename src/gameplay/{ => gameEngine}/phases/common/pickingTeam.ts (97%) rename src/gameplay/{ => gameEngine}/phases/common/voided.ts (94%) rename src/gameplay/{ => gameEngine}/phases/common/votingMission.ts (98%) rename src/gameplay/{ => gameEngine}/phases/common/votingTeam.ts (98%) rename src/gameplay/{ => gameEngine}/phases/phases.ts (100%) rename src/gameplay/{ => gameEngine}/phases/types.ts (96%) rename src/gameplay/{ => gameEngine}/roles/avalon/assassin.ts (100%) rename src/gameplay/{ => gameEngine}/roles/avalon/hitberon.ts (100%) rename src/gameplay/{ => gameEngine}/roles/avalon/isolde.ts (100%) rename src/gameplay/{ => gameEngine}/roles/avalon/merlin.ts (100%) rename src/gameplay/{ => gameEngine}/roles/avalon/mordred.ts (100%) rename src/gameplay/{ => gameEngine}/roles/avalon/mordredassassin.ts (100%) rename src/gameplay/{ => gameEngine}/roles/avalon/morgana.ts (100%) rename src/gameplay/{ => gameEngine}/roles/avalon/oberon.ts (100%) rename src/gameplay/{ => gameEngine}/roles/avalon/percival.ts (100%) rename src/gameplay/{ => gameEngine}/roles/avalon/resistance.ts (100%) rename src/gameplay/{ => gameEngine}/roles/avalon/spy.ts (100%) rename src/gameplay/{ => gameEngine}/roles/avalon/tristan.ts (100%) rename src/gameplay/{ => gameEngine}/roles/roles.ts (100%) rename src/gameplay/{ => gameEngine}/roles/types.ts (100%) rename src/gameplay/{ => gameEngine}/room.ts (98%) rename src/gameplay/{ => gameEngine}/roomTypes.ts (100%) rename src/gameplay/{ => gameEngine}/tests/anonymizer.test.ts (100%) rename src/gameplay/{ => gameEngine}/tests/game.test.ts (98%) rename src/gameplay/{ => gameEngine}/types.ts (100%) rename src/gameplay/{ => gameEngine}/voidGameTracker.ts (100%) diff --git a/src/databaseAdapters/user.ts b/src/databaseAdapters/user.ts index ebca83c07..e3e2bfe71 100644 --- a/src/databaseAdapters/user.ts +++ b/src/databaseAdapters/user.ts @@ -1,5 +1,5 @@ import User from '../models/user'; -import { IUser } from '../gameplay/types'; +import { IUser } from '../gameplay/gameEngine/types'; import { S3AvatarSet } from '../clients/s3/S3Agent'; interface DatabaseAdapter { diff --git a/src/gameplay/anonymizer.ts b/src/gameplay/gameEngine/anonymizer.ts similarity index 98% rename from src/gameplay/anonymizer.ts rename to src/gameplay/gameEngine/anonymizer.ts index 2618266d5..c3cb45e2a 100644 --- a/src/gameplay/anonymizer.ts +++ b/src/gameplay/gameEngine/anonymizer.ts @@ -1,4 +1,4 @@ -import shuffleArray from '../util/shuffleArray'; +import shuffleArray from '../../util/shuffleArray'; import { IRecoverable, RecoverableComponent } from './types'; const ANON_NAMES = [ diff --git a/src/gameplay/cards/avalon/ladyOfTheLake.ts b/src/gameplay/gameEngine/cards/avalon/ladyOfTheLake.ts similarity index 97% rename from src/gameplay/cards/avalon/ladyOfTheLake.ts rename to src/gameplay/gameEngine/cards/avalon/ladyOfTheLake.ts index a76c03924..e18e1605e 100644 --- a/src/gameplay/cards/avalon/ladyOfTheLake.ts +++ b/src/gameplay/gameEngine/cards/avalon/ladyOfTheLake.ts @@ -1,6 +1,6 @@ import { Phase } from '../../phases/types'; import { Card, ICard } from '../types'; -import { SocketUser } from '../../../sockets/types'; +import { SocketUser } from '../../../../sockets/types'; class LadyOfTheLake implements ICard { private thisRoom: any; diff --git a/src/gameplay/cards/avalon/refOfTheRain.ts b/src/gameplay/gameEngine/cards/avalon/refOfTheRain.ts similarity index 97% rename from src/gameplay/cards/avalon/refOfTheRain.ts rename to src/gameplay/gameEngine/cards/avalon/refOfTheRain.ts index 2502d0673..4a39eade0 100644 --- a/src/gameplay/cards/avalon/refOfTheRain.ts +++ b/src/gameplay/gameEngine/cards/avalon/refOfTheRain.ts @@ -1,6 +1,6 @@ import { Phase } from '../../phases/types'; import { Card, ICard } from '../types'; -import { SocketUser } from '../../../sockets/types'; +import { SocketUser } from '../../../../sockets/types'; class RefOfTheRain implements ICard { private thisRoom: any; diff --git a/src/gameplay/cards/avalon/sireOfTheSea.ts b/src/gameplay/gameEngine/cards/avalon/sireOfTheSea.ts similarity index 97% rename from src/gameplay/cards/avalon/sireOfTheSea.ts rename to src/gameplay/gameEngine/cards/avalon/sireOfTheSea.ts index 6c4ae7934..b71648394 100644 --- a/src/gameplay/cards/avalon/sireOfTheSea.ts +++ b/src/gameplay/gameEngine/cards/avalon/sireOfTheSea.ts @@ -1,6 +1,6 @@ import { Phase } from '../../phases/types'; import { Card, ICard } from '../types'; -import { SocketUser } from '../../../sockets/types'; +import { SocketUser } from '../../../../sockets/types'; class SireOfTheSea implements ICard { private thisRoom: any; diff --git a/src/gameplay/cards/cards.ts b/src/gameplay/gameEngine/cards/cards.ts similarity index 100% rename from src/gameplay/cards/cards.ts rename to src/gameplay/gameEngine/cards/cards.ts diff --git a/src/gameplay/cards/types.ts b/src/gameplay/gameEngine/cards/types.ts similarity index 89% rename from src/gameplay/cards/types.ts rename to src/gameplay/gameEngine/cards/types.ts index 8b692cdd6..27a0fcf6b 100644 --- a/src/gameplay/cards/types.ts +++ b/src/gameplay/gameEngine/cards/types.ts @@ -1,4 +1,4 @@ -import { SocketUser } from '../../sockets/types'; +import { SocketUser } from '../../../sockets/types'; export enum Card { LadyOfTheLake = 'Lady of the Lake', diff --git a/src/gameplay/game.ts b/src/gameplay/gameEngine/game.ts similarity index 99% rename from src/gameplay/game.ts rename to src/gameplay/gameEngine/game.ts index ff448c49a..193dbf987 100644 --- a/src/gameplay/game.ts +++ b/src/gameplay/gameEngine/game.ts @@ -2,14 +2,14 @@ import _ from 'lodash'; import Room, { RoomConfig } from './room'; -import usernamesIndexes from '../myFunctions/usernamesIndexes'; -import User from '../models/user'; -import GameRecord from '../models/gameRecord'; -import RatingPeriodGameRecord from '../models/RatingPeriodGameRecord'; -import { isMod } from '../modsadmins/mods'; -import { isTO } from '../modsadmins/tournamentOrganizers'; -import { isDev } from '../modsadmins/developers'; -import { modOrTOString } from '../modsadmins/modOrTO'; +import usernamesIndexes from '../../myFunctions/usernamesIndexes'; +import User from '../../models/user'; +import GameRecord from '../../models/gameRecord'; +import RatingPeriodGameRecord from '../../models/RatingPeriodGameRecord'; +import { isMod } from '../../modsadmins/mods'; +import { isTO } from '../../modsadmins/tournamentOrganizers'; +import { isDev } from '../../modsadmins/developers'; +import { modOrTOString } from '../../modsadmins/modOrTO'; import { RoomCreationType } from './roomTypes'; import { Phase } from './phases/types'; @@ -22,17 +22,17 @@ import { } from './types'; import { GameTimer, Timeouts } from './gameTimer'; import { VoidGameTracker } from './voidGameTracker'; -import { SocketUser } from '../sockets/types'; +import { SocketUser } from '../../sockets/types'; import { avalonRoles, rolesThatCantGuessMerlin } from './roles/roles'; import { avalonCards } from './cards/cards'; import { avalonPhases, commonPhases } from './phases/phases'; import { Card } from './cards/types'; import { Role } from './roles/types'; -import { millisToStr } from '../util/time'; -import shuffleArray from '../util/shuffleArray'; +import { millisToStr } from '../../util/time'; +import shuffleArray from '../../util/shuffleArray'; import { Anonymizer } from './anonymizer'; -import { sendReplyToCommand } from '../sockets/sockets'; -import { gamesPlayedMetric } from '../metrics/gameMetrics'; +import { sendReplyToCommand } from '../../sockets/sockets'; +import { gamesPlayedMetric } from '../../metrics/gameMetrics'; export const WAITING = 'Waiting'; export const MIN_PLAYERS = 5; diff --git a/src/gameplay/gameModes.ts b/src/gameplay/gameEngine/gameModes.ts similarity index 100% rename from src/gameplay/gameModes.ts rename to src/gameplay/gameEngine/gameModes.ts diff --git a/src/gameplay/gameTimer.ts b/src/gameplay/gameEngine/gameTimer.ts similarity index 99% rename from src/gameplay/gameTimer.ts rename to src/gameplay/gameEngine/gameTimer.ts index 06c466264..f3a7e3208 100644 --- a/src/gameplay/gameTimer.ts +++ b/src/gameplay/gameEngine/gameTimer.ts @@ -1,6 +1,6 @@ import { ButtonSettings, isGamePhase, Phase } from './phases/types'; import Game, { getRandomInt } from './game'; -import { postGameMoveChecks } from '../sockets/sockets'; +import { postGameMoveChecks } from '../../sockets/sockets'; import { Alliance } from './types'; // All in milliseconds diff --git a/src/gameplay/gameWrapper.ts b/src/gameplay/gameEngine/gameWrapper.ts similarity index 99% rename from src/gameplay/gameWrapper.ts rename to src/gameplay/gameEngine/gameWrapper.ts index f69b586bd..803a5c0aa 100644 --- a/src/gameplay/gameWrapper.ts +++ b/src/gameplay/gameEngine/gameWrapper.ts @@ -2,7 +2,7 @@ // This wrapper mainly serves as a way to detect and make callbacks // to the socket.js file for updates. import Game, { GameConfig } from './game'; -import { SocketUser } from '../sockets/types'; +import { SocketUser } from '../../sockets/types'; import { Alliance } from './types'; type SocketServerCallback = (action: string, game: GameWrapper) => void; diff --git a/src/gameplay/phases/avalon/assassination.ts b/src/gameplay/gameEngine/phases/avalon/assassination.ts similarity index 98% rename from src/gameplay/phases/avalon/assassination.ts rename to src/gameplay/gameEngine/phases/avalon/assassination.ts index d1f5d9e97..3a393dc0d 100644 --- a/src/gameplay/phases/avalon/assassination.ts +++ b/src/gameplay/gameEngine/phases/avalon/assassination.ts @@ -1,6 +1,6 @@ -import usernamesIndexes from '../../../myFunctions/usernamesIndexes'; +import usernamesIndexes from '../../../../myFunctions/usernamesIndexes'; import { ButtonSettings, IPhase, Phase } from '../types'; -import { SocketUser } from '../../../sockets/types'; +import { SocketUser } from '../../../../sockets/types'; import { Alliance } from '../../types'; import { Role } from '../../roles/types'; diff --git a/src/gameplay/phases/avalon/lady.js b/src/gameplay/gameEngine/phases/avalon/lady.js similarity index 98% rename from src/gameplay/phases/avalon/lady.js rename to src/gameplay/gameEngine/phases/avalon/lady.js index 493d4e92a..190129bc0 100644 --- a/src/gameplay/phases/avalon/lady.js +++ b/src/gameplay/gameEngine/phases/avalon/lady.js @@ -1,4 +1,4 @@ -import usernamesIndexes from '../../../myFunctions/usernamesIndexes'; +import usernamesIndexes from '../../../../myFunctions/usernamesIndexes'; import { Phase } from '../types'; import { Card } from '../../cards/types'; diff --git a/src/gameplay/phases/avalon/ref.js b/src/gameplay/gameEngine/phases/avalon/ref.js similarity index 98% rename from src/gameplay/phases/avalon/ref.js rename to src/gameplay/gameEngine/phases/avalon/ref.js index da26de20c..fdbbddb61 100644 --- a/src/gameplay/phases/avalon/ref.js +++ b/src/gameplay/gameEngine/phases/avalon/ref.js @@ -1,4 +1,4 @@ -import usernamesIndexes from '../../../myFunctions/usernamesIndexes'; +import usernamesIndexes from '../../../../myFunctions/usernamesIndexes'; import { Phase } from '../types'; class Ref { diff --git a/src/gameplay/phases/avalon/sire.js b/src/gameplay/gameEngine/phases/avalon/sire.js similarity index 98% rename from src/gameplay/phases/avalon/sire.js rename to src/gameplay/gameEngine/phases/avalon/sire.js index c5c34c826..984a422df 100644 --- a/src/gameplay/phases/avalon/sire.js +++ b/src/gameplay/gameEngine/phases/avalon/sire.js @@ -1,4 +1,4 @@ -import usernamesIndexes from '../../../myFunctions/usernamesIndexes'; +import usernamesIndexes from '../../../../myFunctions/usernamesIndexes'; import { Phase } from '../types'; class Sire { diff --git a/src/gameplay/phases/common/finished.ts b/src/gameplay/gameEngine/phases/common/finished.ts similarity index 95% rename from src/gameplay/phases/common/finished.ts rename to src/gameplay/gameEngine/phases/common/finished.ts index 3d144731a..bab2ad21a 100644 --- a/src/gameplay/phases/common/finished.ts +++ b/src/gameplay/gameEngine/phases/common/finished.ts @@ -1,5 +1,5 @@ import { ButtonSettings, IPhase, Phase } from '../types'; -import { SocketUser } from '../../../sockets/types'; +import { SocketUser } from '../../../../sockets/types'; import { Alliance } from '../../types'; class Finished implements IPhase { diff --git a/src/gameplay/phases/common/frozen.ts b/src/gameplay/gameEngine/phases/common/frozen.ts similarity index 94% rename from src/gameplay/phases/common/frozen.ts rename to src/gameplay/gameEngine/phases/common/frozen.ts index 9f489906f..3a2e3fa00 100644 --- a/src/gameplay/phases/common/frozen.ts +++ b/src/gameplay/gameEngine/phases/common/frozen.ts @@ -1,5 +1,5 @@ import { ButtonSettings, IPhase, Phase } from '../types'; -import { SocketUser } from '../../../sockets/types'; +import { SocketUser } from '../../../../sockets/types'; class Frozen implements IPhase { static phase = Phase.Frozen; diff --git a/src/gameplay/phases/common/paused.ts b/src/gameplay/gameEngine/phases/common/paused.ts similarity index 94% rename from src/gameplay/phases/common/paused.ts rename to src/gameplay/gameEngine/phases/common/paused.ts index 0f7072e9a..4a204e182 100644 --- a/src/gameplay/phases/common/paused.ts +++ b/src/gameplay/gameEngine/phases/common/paused.ts @@ -1,5 +1,5 @@ import { ButtonSettings, IPhase, Phase } from '../types'; -import { SocketUser } from '../../../sockets/types'; +import { SocketUser } from '../../../../sockets/types'; class Paused implements IPhase { static phase = Phase.Paused; diff --git a/src/gameplay/phases/common/pickingTeam.ts b/src/gameplay/gameEngine/phases/common/pickingTeam.ts similarity index 97% rename from src/gameplay/phases/common/pickingTeam.ts rename to src/gameplay/gameEngine/phases/common/pickingTeam.ts index e01521b98..ec9edcea1 100644 --- a/src/gameplay/phases/common/pickingTeam.ts +++ b/src/gameplay/gameEngine/phases/common/pickingTeam.ts @@ -1,7 +1,7 @@ -import usernamesIndexes from '../../../myFunctions/usernamesIndexes'; +import usernamesIndexes from '../../../../myFunctions/usernamesIndexes'; import { ButtonSettings, IPhase, Phase } from '../types'; import { MIN_PLAYERS, NUM_PLAYERS_ON_MISSION } from '../../game'; -import { SocketUser } from '../../../sockets/types'; +import { SocketUser } from '../../../../sockets/types'; class PickingTeam implements IPhase { static phase = Phase.PickingTeam; diff --git a/src/gameplay/phases/common/voided.ts b/src/gameplay/gameEngine/phases/common/voided.ts similarity index 94% rename from src/gameplay/phases/common/voided.ts rename to src/gameplay/gameEngine/phases/common/voided.ts index 6ae371db6..b07211502 100644 --- a/src/gameplay/phases/common/voided.ts +++ b/src/gameplay/gameEngine/phases/common/voided.ts @@ -1,5 +1,5 @@ import { ButtonSettings, IPhase, Phase } from '../types'; -import { SocketUser } from '../../../sockets/types'; +import { SocketUser } from '../../../../sockets/types'; import { Alliance } from '../../types'; class Voided implements IPhase { diff --git a/src/gameplay/phases/common/votingMission.ts b/src/gameplay/gameEngine/phases/common/votingMission.ts similarity index 98% rename from src/gameplay/phases/common/votingMission.ts rename to src/gameplay/gameEngine/phases/common/votingMission.ts index ee3e491fe..5651c407b 100644 --- a/src/gameplay/phases/common/votingMission.ts +++ b/src/gameplay/gameEngine/phases/common/votingMission.ts @@ -1,7 +1,7 @@ -import usernamesIndexes from '../../../myFunctions/usernamesIndexes'; +import usernamesIndexes from '../../../../myFunctions/usernamesIndexes'; import { ButtonSettings, IPhase, Phase } from '../types'; import { Alliance } from '../../types'; -import { SocketUser } from '../../../sockets/types'; +import { SocketUser } from '../../../../sockets/types'; class VotingMission implements IPhase { static phase = Phase.VotingMission; diff --git a/src/gameplay/phases/common/votingTeam.ts b/src/gameplay/gameEngine/phases/common/votingTeam.ts similarity index 98% rename from src/gameplay/phases/common/votingTeam.ts rename to src/gameplay/gameEngine/phases/common/votingTeam.ts index 67ea4c0ca..7e7e4da26 100644 --- a/src/gameplay/phases/common/votingTeam.ts +++ b/src/gameplay/gameEngine/phases/common/votingTeam.ts @@ -1,7 +1,7 @@ -import usernamesIndexes from '../../../myFunctions/usernamesIndexes'; +import usernamesIndexes from '../../../../myFunctions/usernamesIndexes'; import { ButtonSettings, IPhase, Phase } from '../types'; import { Alliance } from '../../types'; -import { SocketUser } from '../../../sockets/types'; +import { SocketUser } from '../../../../sockets/types'; class VotingTeam implements IPhase { static phase = Phase.VotingTeam; diff --git a/src/gameplay/phases/phases.ts b/src/gameplay/gameEngine/phases/phases.ts similarity index 100% rename from src/gameplay/phases/phases.ts rename to src/gameplay/gameEngine/phases/phases.ts diff --git a/src/gameplay/phases/types.ts b/src/gameplay/gameEngine/phases/types.ts similarity index 96% rename from src/gameplay/phases/types.ts rename to src/gameplay/gameEngine/phases/types.ts index 3dd0f6b50..34d8cf013 100644 --- a/src/gameplay/phases/types.ts +++ b/src/gameplay/gameEngine/phases/types.ts @@ -1,4 +1,4 @@ -import { SocketUser } from '../../sockets/types'; +import { SocketUser } from '../../../sockets/types'; export enum Phase { // Core phases diff --git a/src/gameplay/roles/avalon/assassin.ts b/src/gameplay/gameEngine/roles/avalon/assassin.ts similarity index 100% rename from src/gameplay/roles/avalon/assassin.ts rename to src/gameplay/gameEngine/roles/avalon/assassin.ts diff --git a/src/gameplay/roles/avalon/hitberon.ts b/src/gameplay/gameEngine/roles/avalon/hitberon.ts similarity index 100% rename from src/gameplay/roles/avalon/hitberon.ts rename to src/gameplay/gameEngine/roles/avalon/hitberon.ts diff --git a/src/gameplay/roles/avalon/isolde.ts b/src/gameplay/gameEngine/roles/avalon/isolde.ts similarity index 100% rename from src/gameplay/roles/avalon/isolde.ts rename to src/gameplay/gameEngine/roles/avalon/isolde.ts diff --git a/src/gameplay/roles/avalon/merlin.ts b/src/gameplay/gameEngine/roles/avalon/merlin.ts similarity index 100% rename from src/gameplay/roles/avalon/merlin.ts rename to src/gameplay/gameEngine/roles/avalon/merlin.ts diff --git a/src/gameplay/roles/avalon/mordred.ts b/src/gameplay/gameEngine/roles/avalon/mordred.ts similarity index 100% rename from src/gameplay/roles/avalon/mordred.ts rename to src/gameplay/gameEngine/roles/avalon/mordred.ts diff --git a/src/gameplay/roles/avalon/mordredassassin.ts b/src/gameplay/gameEngine/roles/avalon/mordredassassin.ts similarity index 100% rename from src/gameplay/roles/avalon/mordredassassin.ts rename to src/gameplay/gameEngine/roles/avalon/mordredassassin.ts diff --git a/src/gameplay/roles/avalon/morgana.ts b/src/gameplay/gameEngine/roles/avalon/morgana.ts similarity index 100% rename from src/gameplay/roles/avalon/morgana.ts rename to src/gameplay/gameEngine/roles/avalon/morgana.ts diff --git a/src/gameplay/roles/avalon/oberon.ts b/src/gameplay/gameEngine/roles/avalon/oberon.ts similarity index 100% rename from src/gameplay/roles/avalon/oberon.ts rename to src/gameplay/gameEngine/roles/avalon/oberon.ts diff --git a/src/gameplay/roles/avalon/percival.ts b/src/gameplay/gameEngine/roles/avalon/percival.ts similarity index 100% rename from src/gameplay/roles/avalon/percival.ts rename to src/gameplay/gameEngine/roles/avalon/percival.ts diff --git a/src/gameplay/roles/avalon/resistance.ts b/src/gameplay/gameEngine/roles/avalon/resistance.ts similarity index 100% rename from src/gameplay/roles/avalon/resistance.ts rename to src/gameplay/gameEngine/roles/avalon/resistance.ts diff --git a/src/gameplay/roles/avalon/spy.ts b/src/gameplay/gameEngine/roles/avalon/spy.ts similarity index 100% rename from src/gameplay/roles/avalon/spy.ts rename to src/gameplay/gameEngine/roles/avalon/spy.ts diff --git a/src/gameplay/roles/avalon/tristan.ts b/src/gameplay/gameEngine/roles/avalon/tristan.ts similarity index 100% rename from src/gameplay/roles/avalon/tristan.ts rename to src/gameplay/gameEngine/roles/avalon/tristan.ts diff --git a/src/gameplay/roles/roles.ts b/src/gameplay/gameEngine/roles/roles.ts similarity index 100% rename from src/gameplay/roles/roles.ts rename to src/gameplay/gameEngine/roles/roles.ts diff --git a/src/gameplay/roles/types.ts b/src/gameplay/gameEngine/roles/types.ts similarity index 100% rename from src/gameplay/roles/types.ts rename to src/gameplay/gameEngine/roles/types.ts diff --git a/src/gameplay/room.ts b/src/gameplay/gameEngine/room.ts similarity index 98% rename from src/gameplay/room.ts rename to src/gameplay/gameEngine/room.ts index 95fdafa64..4b6a01458 100644 --- a/src/gameplay/room.ts +++ b/src/gameplay/gameEngine/room.ts @@ -1,18 +1,18 @@ // @ts-nocheck import { GAME_MODE_NAMES, GameMode } from './gameModes'; -import { SocketUser } from '../sockets/types'; +import { SocketUser } from '../../sockets/types'; import Game, { MIN_PLAYERS } from './game'; import { Timeouts } from './gameTimer'; -import { ReadyPrompt } from '../sockets/readyPrompt'; +import { ReadyPrompt } from '../../sockets/readyPrompt'; import { avalonRoles } from './roles/roles'; import { avalonCards } from './cards/cards'; import { avalonPhases, commonPhases } from './phases/phases'; import { Role } from './roles/types'; import { Phase } from './phases/types'; -import { millisToStr } from '../util/time'; +import { millisToStr } from '../../util/time'; import { RoomPlayer } from './types'; -import { isMod } from '../modsadmins/mods'; -import { isAdmin } from '../modsadmins/admins'; +import { isMod } from '../../modsadmins/mods'; +import { isAdmin } from '../../modsadmins/admins'; export class RoomConfig { host: string; diff --git a/src/gameplay/roomTypes.ts b/src/gameplay/gameEngine/roomTypes.ts similarity index 100% rename from src/gameplay/roomTypes.ts rename to src/gameplay/gameEngine/roomTypes.ts diff --git a/src/gameplay/tests/anonymizer.test.ts b/src/gameplay/gameEngine/tests/anonymizer.test.ts similarity index 100% rename from src/gameplay/tests/anonymizer.test.ts rename to src/gameplay/gameEngine/tests/anonymizer.test.ts diff --git a/src/gameplay/tests/game.test.ts b/src/gameplay/gameEngine/tests/game.test.ts similarity index 98% rename from src/gameplay/tests/game.test.ts rename to src/gameplay/gameEngine/tests/game.test.ts index bc106085b..aa4006961 100644 --- a/src/gameplay/tests/game.test.ts +++ b/src/gameplay/gameEngine/tests/game.test.ts @@ -1,7 +1,7 @@ import Game, { GameConfig, NUM_PLAYERS_ON_MISSION } from '../game'; import { RoomConfig } from '../room'; import { GameMode } from '../gameModes'; -import { ReadyPrompt } from '../../sockets/readyPrompt'; +import { ReadyPrompt } from '../../../sockets/readyPrompt'; import { RoomCreationType } from '../roomTypes'; import { Phase } from '../phases/types'; import { Alliance } from '../types'; @@ -9,9 +9,9 @@ import { Card } from '../cards/types'; import { Role } from '../roles/types'; jest.mock('../gameWrapper'); -jest.mock('../../models/gameRecord'); -jest.mock('../../models/user'); -jest.mock('../../models/RatingPeriodGameRecord'); +jest.mock('../../../models/gameRecord'); +jest.mock('../../../models/user'); +jest.mock('../../../models/RatingPeriodGameRecord'); describe('Game Engine', () => { let game: Game; diff --git a/src/gameplay/types.ts b/src/gameplay/gameEngine/types.ts similarity index 100% rename from src/gameplay/types.ts rename to src/gameplay/gameEngine/types.ts diff --git a/src/gameplay/voidGameTracker.ts b/src/gameplay/gameEngine/voidGameTracker.ts similarity index 100% rename from src/gameplay/voidGameTracker.ts rename to src/gameplay/gameEngine/voidGameTracker.ts diff --git a/src/models/user.ts b/src/models/user.ts index d97459307..5484ad347 100644 --- a/src/models/user.ts +++ b/src/models/user.ts @@ -1,7 +1,7 @@ import mongoose from 'mongoose'; // @ts-ignore import passportLocalMongoose from 'passport-local-mongoose'; -import type { IUser } from '../gameplay/types'; +import type { IUser } from '../gameplay/gameEngine/types'; const UserSchema = new mongoose.Schema({ username: { diff --git a/src/rewards/constants.ts b/src/rewards/constants.ts index b90768f47..f936b6e89 100644 --- a/src/rewards/constants.ts +++ b/src/rewards/constants.ts @@ -1,4 +1,4 @@ -import { Role } from '../gameplay/roles/types'; +import { Role } from '../gameplay/gameEngine/roles/types'; const constants = { ADMIN_BADGE: 'ADMIN_BADGE', diff --git a/src/rewards/getRewards.ts b/src/rewards/getRewards.ts index a22de1f12..31c8b9e14 100644 --- a/src/rewards/getRewards.ts +++ b/src/rewards/getRewards.ts @@ -10,7 +10,7 @@ import { isMod } from '../modsadmins/mods'; import { isTO } from '../modsadmins/tournamentOrganizers'; import { isDev } from '../modsadmins/developers'; import { PatreonAgent } from '../clients/patreon/patreonAgent'; -import { IUser } from '../gameplay/types'; +import { IUser } from '../gameplay/gameEngine/types'; import { PatreonController } from '../clients/patreon/patreonController'; import constants from './constants'; import { S3Agent } from '../clients/s3/S3Agent'; diff --git a/src/routes/index.js b/src/routes/index.js index e70edb8dd..3c2f57777 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -13,8 +13,12 @@ import { sendEmailVerification } from '../myFunctions/sendEmailVerification'; import { disallowVPNs } from '../util/vpnDetection'; import Settings from '../settings'; -import { Alliance } from '../gameplay/types'; -import { resRoles, rolesToAlliances, spyRoles } from '../gameplay/roles/roles'; +import { Alliance } from '../gameplay/gameEngine/types'; +import { + resRoles, + rolesToAlliances, + spyRoles, +} from '../gameplay/gameEngine/roles/roles'; import { sendResetPassword } from '../myFunctions/sendResetPassword'; import uuid from 'uuid'; import { captchaMiddleware } from '../util/captcha'; diff --git a/src/routes/types.ts b/src/routes/types.ts index c4be7d8d2..6b638d1b7 100644 --- a/src/routes/types.ts +++ b/src/routes/types.ts @@ -1,5 +1,5 @@ import { Request } from 'express'; -import { IUser } from '../gameplay/types'; +import { IUser } from '../gameplay/gameEngine/types'; export interface EnrichedRequest extends Request { user: IUser; diff --git a/src/sockets/bot.js b/src/sockets/bot.js index 35ced1757..eb2019106 100644 --- a/src/sockets/bot.js +++ b/src/sockets/bot.js @@ -1,5 +1,5 @@ import axios from 'axios'; -import { Phase } from '../gameplay/phases/types'; +import { Phase } from '../gameplay/gameEngine/phases/types'; export const enabledBots = []; enabledBots.push({ diff --git a/src/sockets/commands/admin/atestgame.ts b/src/sockets/commands/admin/atestgame.ts index e23c9f213..fb5f6c3b5 100644 --- a/src/sockets/commands/admin/atestgame.ts +++ b/src/sockets/commands/admin/atestgame.ts @@ -1,7 +1,7 @@ // @ts-nocheck import { Command } from '../types'; -import gameRoom from '../../../gameplay/gameWrapper'; +import gameRoom from '../../../gameplay/gameEngine/gameWrapper'; import { SocketUser } from '../../types'; import { SimpleBotSocket } from '../../bot'; import { @@ -12,9 +12,9 @@ import { sendToAllChat, socketCallback, } from '../../sockets'; -import { RoomCreationType } from '../../../gameplay/roomTypes'; -import { Role } from '../../../gameplay/roles/types'; -import { Card } from '../../../gameplay/cards/types'; +import { RoomCreationType } from '../../../gameplay/gameEngine/roomTypes'; +import { Role } from '../../../gameplay/gameEngine/roles/types'; +import { Card } from '../../../gameplay/gameEngine/cards/types'; function addBots(args: string[], senderSocket: SocketUser, roomId: number) { if (!args[1]) { diff --git a/src/sockets/commands/mod/mforcemove.ts b/src/sockets/commands/mod/mforcemove.ts index 36e34ddda..57cc67b05 100644 --- a/src/sockets/commands/mod/mforcemove.ts +++ b/src/sockets/commands/mod/mforcemove.ts @@ -1,8 +1,8 @@ import { Command } from '../types'; import { modOrTOString } from '../../../modsadmins/modOrTO'; import { getIndexFromUsername, rooms } from '../../sockets'; -import { Alliance } from '../../../gameplay/types'; -import { Phase } from '../../../gameplay/phases/types'; +import { Alliance } from '../../../gameplay/gameEngine/types'; +import { Phase } from '../../../gameplay/gameEngine/phases/types'; export const mforcemove: Command = { command: 'mforcemove', diff --git a/src/sockets/commands/mod/mtogglepause.ts b/src/sockets/commands/mod/mtogglepause.ts index 5395fe272..955e414d0 100644 --- a/src/sockets/commands/mod/mtogglepause.ts +++ b/src/sockets/commands/mod/mtogglepause.ts @@ -1,6 +1,6 @@ import { Command } from '../types'; import { rooms } from '../../sockets'; -import { Phase } from '../../../gameplay/phases/types'; +import { Phase } from '../../../gameplay/gameEngine/phases/types'; export const mtogglepause: Command = { command: 'mtogglepause', diff --git a/src/sockets/filters/createRoomFilter.ts b/src/sockets/filters/createRoomFilter.ts index c78919516..b7a1ddea1 100644 --- a/src/sockets/filters/createRoomFilter.ts +++ b/src/sockets/filters/createRoomFilter.ts @@ -1,5 +1,5 @@ -import GameWrapper from '../../gameplay/gameWrapper'; -import { WAITING } from '../../gameplay/game'; +import GameWrapper from '../../gameplay/gameEngine/gameWrapper'; +import { WAITING } from '../../gameplay/gameEngine/game'; export class CreateRoomFilter { // Returns true if user can create a room. Else false. diff --git a/src/sockets/sockets.ts b/src/sockets/sockets.ts index fa207ef87..60bf625fc 100644 --- a/src/sockets/sockets.ts +++ b/src/sockets/sockets.ts @@ -2,7 +2,7 @@ import { Server as SocketServer, Socket } from 'socket.io'; import { SocketUser } from './types'; -import GameWrapper from '../gameplay/gameWrapper'; +import GameWrapper from '../gameplay/gameEngine/gameWrapper'; import savedGameObj from '../models/savedGame'; import { getAllRewardsForUser } from '../rewards/getRewards'; @@ -15,7 +15,12 @@ import { isAdmin } from '../modsadmins/admins'; import { isMod } from '../modsadmins/mods'; import { isPercival } from '../modsadmins/percivals'; import { isTO } from '../modsadmins/tournamentOrganizers'; -import { GAME_MODE_NAMES, GameMode, isGameMode, strToGameMode } from '../gameplay/gameModes'; +import { + GAME_MODE_NAMES, + GameMode, + isGameMode, + strToGameMode, +} from '../gameplay/gameEngine/gameModes'; import { ChatSpamFilter } from './filters/chatSpamFilter'; import { MessageWithDate, Quote } from './quote'; @@ -28,16 +33,16 @@ import { mtogglepause } from './commands/mod/mtogglepause'; import { mrevealallroles } from './commands/mod/mrevealallroles'; import * as util from 'util'; -import { RoomCreationType } from '../gameplay/roomTypes'; +import { RoomCreationType } from '../gameplay/gameEngine/roomTypes'; import { CreateRoomFilter } from './filters/createRoomFilter'; -import Game, { GameConfig } from '../gameplay/game'; -import { RoomConfig } from '../gameplay/room'; +import Game, { GameConfig } from '../gameplay/gameEngine/game'; +import { RoomConfig } from '../gameplay/gameEngine/room'; import { MatchmakingQueue, QueueEntry } from './matchmakingQueue'; import { ReadyPrompt, ReadyPromptReplyFromClient } from './readyPrompt'; import { JoinQueueFilter } from './filters/joinQueueFilter'; -import { Role } from '../gameplay/roles/types'; -import { Phase } from '../gameplay/phases/types'; -import { Card } from '../gameplay/cards/types'; +import { Role } from '../gameplay/gameEngine/roles/types'; +import { Phase } from '../gameplay/gameEngine/phases/types'; +import { Card } from '../gameplay/gameEngine/cards/types'; import { TOCommandsImported } from './commands/tournamentOrganisers'; import { uniqueLoginsMetric } from '../metrics/miscellaneousMetrics'; @@ -771,8 +776,7 @@ const applyApplicableRewards = function (socket) { // Moderator badge else if (socket.rewards.includes(REWARDS.MOD_BADGE)) { socket.request.badge = 'M'; - } - else if (isPercival(socket.request.user.username)) { + } else if (isPercival(socket.request.user.username)) { socket.request.badge = 'P'; } // TO badge diff --git a/src/sockets/types.ts b/src/sockets/types.ts index c90a7728e..60fdd8231 100644 --- a/src/sockets/types.ts +++ b/src/sockets/types.ts @@ -1,6 +1,6 @@ import { Socket } from 'socket.io'; import User, { UserDocument } from '../models/user'; -import { IUser } from '../gameplay/types'; +import { IUser } from '../gameplay/gameEngine/types'; interface SocketUserAdditions { inRoomId?: number;