diff --git a/src/client/graphics/GameRenderer.ts b/src/client/graphics/GameRenderer.ts index e1b782005..fe41506f3 100644 --- a/src/client/graphics/GameRenderer.ts +++ b/src/client/graphics/GameRenderer.ts @@ -2,7 +2,7 @@ import { EventBus } from "../../core/EventBus"; import { GameView } from "../../core/game/GameView"; import { UserSettings } from "../../core/game/UserSettings"; import { GameStartingModal } from "../GameStartingModal"; -import { InputHandler, RefreshGraphicsEvent as RedrawGraphicsEvent } from "../InputHandler"; +import { RefreshGraphicsEvent as RedrawGraphicsEvent } from "../InputHandler"; import { FrameProfiler } from "./FrameProfiler"; import { TransformHandler } from "./TransformHandler"; import { UIState } from "./UIState"; @@ -24,8 +24,8 @@ import { MainRadialMenu } from "./layers/MainRadialMenu"; import { MultiTabModal } from "./layers/MultiTabModal"; import { NameLayer } from "./layers/NameLayer"; import { NukeTrajectoryPreviewLayer } from "./layers/NukeTrajectoryPreviewLayer"; -import { PingTargetPreviewLayer } from "./layers/PingTargetPreviewLayer"; import { PerformanceOverlay } from "./layers/PerformanceOverlay"; +import { PingTargetPreviewLayer } from "./layers/PingTargetPreviewLayer"; import { PlayerInfoOverlay } from "./layers/PlayerInfoOverlay"; import { PlayerPanel } from "./layers/PlayerPanel"; import { RailroadLayer } from "./layers/RailroadLayer"; @@ -313,10 +313,12 @@ export class GameRenderer { this.context = context; } -private redrawEventCleanup?: () => void; + private redrawEventCleanup?: () => void; initialize() { - this.redrawEventCleanup = this.eventBus.on(RedrawGraphicsEvent, () => this.redraw()); + this.redrawEventCleanup = this.eventBus.on(RedrawGraphicsEvent, () => + this.redraw(), + ); this.layers.forEach((l) => l.init?.()); document.body.appendChild(this.canvas); @@ -335,7 +337,7 @@ private redrawEventCleanup?: () => void; rafId = requestAnimationFrame(() => this.renderGame()); }); } - + destroy() { this.redrawEventCleanup?.(); this.layers.forEach((l) => l.destroy?.()); diff --git a/src/client/graphics/layers/FxLayer.ts b/src/client/graphics/layers/FxLayer.ts index 8f768ced0..13368f598 100644 --- a/src/client/graphics/layers/FxLayer.ts +++ b/src/client/graphics/layers/FxLayer.ts @@ -1,4 +1,5 @@ import { Theme } from "../../../core/configuration/Config"; +import { EventBus } from "../../../core/EventBus"; import { UnitType } from "../../../core/game/Game"; import { BonusEventUpdate, @@ -7,6 +8,7 @@ import { RailroadUpdate, } from "../../../core/game/GameUpdates"; import { GameView, UnitView } from "../../../core/game/GameView"; +import { PingPlacedEvent } from "../../../core/game/Ping"; import SoundManager, { SoundEffect } from "../../sound/SoundManager"; import { renderNumber } from "../../Utils"; import { AnimatedSpriteLoader } from "../AnimatedSpriteLoader"; @@ -14,13 +16,11 @@ import { conquestFxFactory } from "../fx/ConquestFx"; import { Fx, FxType } from "../fx/Fx"; import { NukeAreaFx } from "../fx/NukeAreaFx"; import { nukeFxFactory, ShockwaveFx } from "../fx/NukeFx"; +import { PingFx } from "../fx/PingFx"; import { SpriteFx } from "../fx/SpriteFx"; import { TargetFx } from "../fx/TargetFx"; import { TextFx } from "../fx/TextFx"; import { UnitExplosionFx } from "../fx/UnitExplosionFx"; -import { EventBus } from "../../../core/EventBus"; -import { PingPlacedEvent } from "../../../core/game/Ping"; -import { PingFx } from "../fx/PingFx"; import { Layer } from "./Layer"; export class FxLayer implements Layer { private canvas: HTMLCanvasElement; @@ -36,7 +36,10 @@ export class FxLayer implements Layer { private boatTargetFxByUnitId: Map = new Map(); private nukeTargetFxByUnitId: Map = new Map(); - constructor(private game: GameView, private eventBus: EventBus) { + constructor( + private game: GameView, + private eventBus: EventBus, + ) { this.theme = this.game.config().theme(); } @@ -358,13 +361,12 @@ export class FxLayer implements Layer { console.error("Failed to load FX sprites:", err); } - this.pingEventCleanup?.(); + if (this.pingEventCleanup) { + this.pingEventCleanup(); + this.pingEventCleanup = undefined; + } this.pingEventCleanup = this.eventBus.on(PingPlacedEvent, (event) => { - const pingFx = new PingFx( - this.game, - event.type, - event.tile, - ); + const pingFx = new PingFx(this.game, event.type, event.tile); this.allFx.push(pingFx); }); } diff --git a/src/client/graphics/layers/PingTrajectoryPreviewLayer.ts b/src/client/graphics/layers/PingTrajectoryPreviewLayer.ts index 320bb9456..f84e5f10e 100644 --- a/src/client/graphics/layers/PingTrajectoryPreviewLayer.ts +++ b/src/client/graphics/layers/PingTrajectoryPreviewLayer.ts @@ -1,12 +1,12 @@ import { EventBus } from "../../../core/EventBus"; -import { GameView } from "../../../core/game/GameView"; import { TileRef } from "../../../core/game/GameMap"; +import { GameView } from "../../../core/game/GameView"; +import { PingType } from "../../../core/game/Ping"; +import { MouseMoveEvent, PingSelectedEvent } from "../../InputHandler"; import { TransformHandler } from "../TransformHandler"; import { Layer } from "./Layer"; -import { MouseMoveEvent, PingSelectedEvent } from "../../InputHandler"; -import { PingType } from "../../../core/game/Ping"; -export class PingTargetPreviewLayer implements Layer { +export class PingTrajectoryPreviewLayer implements Layer { private mousePos = { x: 0, y: 0 }; private pingTargetTile: TileRef | null = null; private currentPingType: PingType | null = null; @@ -114,7 +114,13 @@ export class PingTargetPreviewLayer implements Layer { context.save(); context.fillStyle = pingColor; context.beginPath(); - context.arc(x, y, PingTrajectoryPreviewLayer.PING_PREVIEW_RADIUS, 0, 2 * Math.PI); + context.arc( + x, + y, + PingTargetPreviewLayer.PING_PREVIEW_RADIUS, + 0, + 2 * Math.PI, + ); context.fill(); context.restore(); }