Highlight matching structures on UnitDisplay hover

Wires the existing ToggleStructureEvent (emitted on UnitDisplay button
mouseenter/leave) to view.setHighlightStructureTypes via a small
StructureHighlightController. StructurePass + StructureLevelPass already
implement the highlight visual — this just connects the two ends.
This commit is contained in:
evanpelle
2026-05-22 13:34:12 +01:00
parent 19beab9a70
commit 42feb36825
2 changed files with 30 additions and 0 deletions
@@ -0,0 +1,28 @@
/**
* StructureHighlightController — forwards UnitDisplay hover events to the
* renderer so matching structures glow while others dim.
*
* UnitDisplay emits ToggleStructureEvent on @mouseenter / @mouseleave for each
* unit-type button, with a payload of "production source" types
* (Warship → [Port], AtomBomb → [MissileSilo, SAMLauncher], building → itself).
* This controller just plumbs that payload to view.setHighlightStructureTypes;
* StructurePass + StructureLevelPass already implement the visual highlight.
*/
import { EventBus } from "../../core/EventBus";
import { Controller } from "../Controller";
import { ToggleStructureEvent } from "../InputHandler";
import { GameView as WebGLGameView } from "../render/gl";
export class StructureHighlightController implements Controller {
constructor(
private eventBus: EventBus,
private view: WebGLGameView,
) {}
init() {
this.eventBus.on(ToggleStructureEvent, (e) =>
this.view.setHighlightStructureTypes(e.structureTypes),
);
}
}
+2
View File
@@ -7,6 +7,7 @@ import { TransformHandler } from "../TransformHandler";
import { UIState } from "../UIState";
import { BuildPreviewController } from "../controllers/BuildPreviewController";
import { HoverHighlightController } from "../controllers/HoverHighlightController";
import { StructureHighlightController } from "../controllers/StructureHighlightController";
import { WarshipSelectionController } from "../controllers/WarshipSelectionController";
import { GameView as WebGLGameView } from "../render/gl";
import { FrameProfiler } from "./FrameProfiler";
@@ -272,6 +273,7 @@ export function createRenderer(
new WarshipSelectionController(game, eventBus, transformHandler, view),
new BuildPreviewController(game, eventBus, uiState, transformHandler, view),
new HoverHighlightController(game, eventBus, transformHandler, view),
new StructureHighlightController(eventBus, view),
new AttackingTroopsOverlay(game, transformHandler, eventBus, userSettings),
eventsDisplay,
actionableEvents,