Skip to content

Commit 3c1c8f8

Browse files
committed
Separate map navigation from game logic
Now our game logic is down to pretty much the minimum needed
1 parent c4abf96 commit 3c1c8f8

9 files changed

Lines changed: 22 additions & 21 deletions

File tree

src/game/Game.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import type {GameMap} from "../map/GameMap";
22
import type {GameMode} from "./mode/GameMode";
33
import type {GameResult} from "./result/GameResult";
4-
import {mapNavigationHandler} from "./action/MapNavigationHandler";
54
import {territoryManager} from "./TerritoryManager";
65
import {playerManager} from "./player/PlayerManager";
76
import {Player} from "./player/Player";
@@ -27,15 +26,14 @@ import {gameTicker} from "./GameTicker";
2726
export function startGame(map: GameMap, mode: GameMode, seed: number, players: { name: string }[], clientId: number, isLocal: boolean) {
2827
initGameData(map, mode, isLocal);
2928
gameLoadRegistry.broadcast();
30-
mapNavigationHandler.enable();
3129
territoryManager.reset();
3230
const maxPlayers = spawnManager.init(500);
3331
borderManager.reset(maxPlayers);
3432
attackActionHandler.init(maxPlayers);
3533
playerManager.init(players.map((p, i) => new (i === clientId ? ClientPlayer : Player)(i, p.name, HSLColor.fromRGB(0, 200, 200))), clientId, maxPlayers);
3634

3735
random.reset(seed);
38-
gameInitHandler.broadcast();
36+
gameInitRegistry.broadcast();
3937
playerManager.randomizeSpawnPoints();
4038
}
4139

@@ -86,7 +84,7 @@ export function quitGame() {
8684
* If {@link GameTicker.isPaused} is false this event was fired along gameInit or gameResult.
8785
*/
8886
export const gameLoadRegistry = new EventHandlerRegistry<[]>();
89-
export const gameInitHandler = new EventHandlerRegistry<[]>();
87+
export const gameInitRegistry = new EventHandlerRegistry<[]>();
9088
export const gameStartRegistry = new EventHandlerRegistry<[]>();
9189
export const gamePauseRegistry = new EventHandlerRegistry<[]>();
9290
export const gameResumeRegistry = new EventHandlerRegistry<[]>();

src/game/GameStats.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import type {Player} from "./player/Player";
22
import {gameTicker} from "./GameTicker";
3-
import {gameInitHandler} from "./Game";
3+
import {gameInitRegistry} from "./Game";
44
import {playerManager} from "./player/PlayerManager";
55

66
export let largestPlayers: Player[] = [];
77

8-
gameInitHandler.register(() => {
8+
gameInitRegistry.register(() => {
99
largestPlayers = [...playerManager.getPlayers()];
1010
});
1111

src/game/action/MapActionHandler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {hasBorderWith} from "../attack/AttackActionValidator";
99
import {isLocalGame, isPlaying} from "../GameData";
1010
import {sendPacket, submitGameAction} from "../../network/NetworkManager";
1111
import {SpawnRequestPacket} from "../../network/protocol/packet/game/SpawnRequestPacket";
12-
import {gameInitHandler, gameStartRegistry} from "../Game";
12+
import {gameInitRegistry, gameStartRegistry} from "../Game";
1313
import {gameTicker} from "../GameTicker";
1414
import {AttackActionPacket} from "../../network/protocol/packet/game/AttackActionPacket";
1515
import {findStartingPoint} from "../../map/area/BoatPathfinding";
@@ -78,5 +78,5 @@ export const mapActionHandler = new MapActionHandler();
7878

7979
interactionManager.click.register(mapActionHandler, -100);
8080

81-
gameInitHandler.register(() => mapActionHandler.setAction(MapActionHandler.spawnSelectAction));
81+
gameInitRegistry.register(() => mapActionHandler.setAction(MapActionHandler.spawnSelectAction));
8282
gameStartRegistry.register(() => mapActionHandler.setAction(MapActionHandler.attackAction));

src/game/action/MapNavigationHandler.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {interactionManager} from "../../event/InteractionManager";
33
import {mapTransformHandler} from "../../event/MapTransformHandler";
44
import {gameMap, isPlaying} from "../GameData";
55
import {windowResizeHandler} from "../../event/WindowResizeHandler";
6+
import {gameInitRegistry, gameQuitRegistry} from "../Game";
67

78
/**
89
* Default map navigation handler.
@@ -120,4 +121,6 @@ class MapNavigationHandler implements ScrollEventListener, DragEventListener, Mu
120121

121122
export const mapNavigationHandler = new MapNavigationHandler();
122123

123-
windowResizeHandler.register(() => isPlaying && mapNavigationHandler.onDragMove(0, 0, 0, 0));
124+
windowResizeHandler.register(() => isPlaying && mapNavigationHandler.onDragMove(0, 0, 0, 0));
125+
gameInitRegistry.register(() => mapNavigationHandler.enable());
126+
gameQuitRegistry.register(() => mapNavigationHandler.disable());

src/game/boat/BoatManager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {packetRegistry, validatePacket} from "../../network/PacketManager";
88
import {bordersTile} from "../../util/MathUtil";
99
import {gameMap} from "../GameData";
1010
import {triggerDebugEvent} from "../../util/DebugData";
11-
import {gameInitHandler} from "../Game";
11+
import {gameInitRegistry} from "../Game";
1212

1313
class BoatManager {
1414
private readonly boats: Boat[] = [];
@@ -111,7 +111,7 @@ class BoatManager {
111111
export const boatManager = new BoatManager();
112112

113113
gameTicker.registry.register(boatManager.tick);
114-
gameInitHandler.register(boatManager.reset);
114+
gameInitRegistry.register(boatManager.reset);
115115

116116
validatePacket(BoatActionPacket, packet => {
117117
return playerManager.validatePlayer(packet.player)

src/renderer/GameRenderer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type {RendererLayer} from "./layer/RendererLayer";
22
import {windowResizeHandler} from "../event/WindowResizeHandler";
3-
import {gameInitHandler} from "../game/Game";
3+
import {gameInitRegistry} from "../game/Game";
44
import {EventHandlerRegistry} from "../event/EventHandlerRegistry";
55
import {GameGLContext} from "./GameGLContext";
66
import {SortedArray} from "../util/SortedArray";
@@ -85,4 +85,4 @@ export const gameRenderer = new GameRenderer();
8585
export const renderingContextInit = new EventHandlerRegistry<[number, GameGLContext]>();
8686

8787
windowResizeHandler.register(gameRenderer.resize);
88-
gameInitHandler.register(() => gameRenderer.switchContext(rendererContextGameplay));
88+
gameInitRegistry.register(() => gameRenderer.switchContext(rendererContextGameplay));

src/renderer/manager/PlayerNameRenderingManager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {territoryManager} from "../../game/TerritoryManager";
44
import {gameMap} from "../../game/GameData";
55
import {playerManager} from "../../game/player/PlayerManager";
66
import {borderManager} from "../../game/BorderManager";
7-
import {gameInitHandler} from "../../game/Game";
7+
import {gameInitRegistry} from "../../game/Game";
88
import {registerTransactionExecutor} from "../../game/transaction/TransactionExecutors";
99
import {TerritoryTransaction} from "../../game/transaction/TerritoryTransaction";
1010

@@ -207,7 +207,7 @@ export class PlayerNameRenderingData {
207207

208208
export const playerNameRenderingManager = new PlayerNameRenderingManager();
209209

210-
gameInitHandler.register(() => playerNameRenderingManager.reset(playerManager.getPlayers()));
210+
gameInitRegistry.register(() => playerNameRenderingManager.reset(playerManager.getPlayers()));
211211

212212
registerTransactionExecutor(TerritoryTransaction, function (this: TerritoryTransaction) {
213213
const attackerName = new PlayerNameUpdate(this.attacker?.id ?? -1, false);

src/ui/element/GameHud.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {hideAllUIElements, loadStaticElement, showUIElement} from "../UIManager"
66
import {interactionManager} from "../../event/InteractionManager";
77
import {resolveElement} from "../UIElement";
88
import {mapActionHandler} from "../../game/action/MapActionHandler";
9-
import {gameResultRegistry, gameInitHandler} from "../../game/Game";
9+
import {gameResultRegistry, gameInitRegistry} from "../../game/Game";
1010
import {clientPlayer} from "../../game/player/PlayerManager";
1111
import {showPanel} from "../type/UIPanel";
1212
import {t} from "../../util/Lang";
@@ -62,7 +62,7 @@ gameTicker.registry.register(() => {
6262
densityElement.innerText = (clientPlayer.getTroops() / clientPlayer.getTerritorySize()).toFixed(2) + "%";
6363
});
6464

65-
gameInitHandler.register(() => {
65+
gameInitRegistry.register(() => {
6666
hideAllUIElements();
6767
showUIElement("GameHud");
6868
setSliderValue(0.5);

src/ui/element/MainMenu.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@ import {loadStaticElement} from "../UIManager";
1010
import {t} from "../../util/Lang";
1111
import {buildButton} from "../type/TextNode";
1212
import {buildContainer} from "../type/ContentField";
13-
import {openMultiplayerLobby} from "./MultiplayerLobby";
13+
//import {openMultiplayerLobby} from "./MultiplayerLobby";
1414

1515
//@module ui
1616

1717
loadStaticElement("MainMenu")
1818

19-
const btnStartMultiplayer: HTMLButtonElement = (window.document.getElementById("btnStartMultiplayer") as HTMLButtonElement);
19+
//const btnStartMultiplayer: HTMLButtonElement = (window.document.getElementById("btnStartMultiplayer") as HTMLButtonElement);
2020
const btnStartSingleplayer: HTMLButtonElement = (window.document.getElementById("btnStartSingleplayer") as HTMLButtonElement);
2121

2222
const playerNameValidationExp: RegExp = /^[a-zA-Z0-9\u00A0-\u00FF\u0100-\u024F\u1E00-\u1EFF\-_. ({)}<>]*$/;
2323

24-
registerClickListener("btnStartMultiplayer", () => openMultiplayerLobby());
24+
//registerClickListener("btnStartMultiplayer", () => openMultiplayerLobby());
2525

2626
registerClickListener("btnStartSingleplayer", () => {
2727
showPanel(t("menu.map.select"), buildContainer("grid", "grid-3col").setContent(...getDefaultMapIds().map(map =>
@@ -34,7 +34,7 @@ registerClickListener("linkPrivacy", () => showPanel("Privacy Policy"));
3434

3535
loadValidatedInput("playerNameInput", "playerNameInputValidation")
3636
.onInput((_value, valid) => {
37-
btnStartMultiplayer.disabled = !valid;
37+
//btnStartMultiplayer.disabled = !valid;
3838
btnStartSingleplayer.disabled = !valid;
3939
})
4040
.mutate(value => value.trim())

0 commit comments

Comments
 (0)