From 8142bc107051202d749c40b54e7f0544f6381f37 Mon Sep 17 00:00:00 2001 From: evanpelle Date: Thu, 28 May 2026 09:09:17 -0700 Subject: [PATCH] Add Render Debug GUI toggle to settings modal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The lil-gui render-settings panel (createDebugGui) has been an orphaned export since the WebGL renderer landed — no caller, no hotkey, no menu entry. Wire it to a button in SettingsModal that toggles the panel on and off, and group it with the existing Performance Overlay toggle under a new "Development Only" section above the Exit Game block. --- resources/lang/en.json | 3 + src/client/ClientGameRunner.ts | 14 ++++- src/client/InputHandler.ts | 2 + src/client/hud/layers/SettingsModal.ts | 81 +++++++++++++++++++------- 4 files changed, 77 insertions(+), 23 deletions(-) diff --git a/resources/lang/en.json b/resources/lang/en.json index 8199cd994..a9eeffd3e 100644 --- a/resources/lang/en.json +++ b/resources/lang/en.json @@ -824,6 +824,9 @@ "go_to_player_desc": "Toggle zooming in on the player in the beginning of a game.", "performance_overlay_label": "Performance Overlay", "performance_overlay_desc": "Toggle the performance overlay. When enabled, the performance overlay will be displayed. Press shift-D during game to toggle.", + "render_debug_gui": "Render Debug GUI", + "render_debug_gui_desc": "Toggle the renderer tuning panel", + "development_only": "Development Only", "easter_writing_speed_label": "Writing Speed Multiplier", "easter_writing_speed_desc": "Adjust how fast you pretend to code (x1–x100)", "easter_bug_count_label": "Bug Count", diff --git a/src/client/ClientGameRunner.ts b/src/client/ClientGameRunner.ts index 3261a03dc..3077065b3 100644 --- a/src/client/ClientGameRunner.ts +++ b/src/client/ClientGameRunner.ts @@ -47,6 +47,7 @@ import { MouseMoveEvent, MouseUpEvent, TickMetricsEvent, + ToggleRenderDebugGuiEvent, } from "./InputHandler"; import { endGame, startGame, startTime } from "./LocalPersistantStats"; import { terrainMapFileLoader } from "./TerrainMapFileLoader"; @@ -66,7 +67,7 @@ import { import { createCanvas } from "./Utils"; import { WebGLFrameBuilder } from "./WebGLFrameBuilder"; import { createRenderer, GameRenderer } from "./hud/GameRenderer"; -import { GameView as WebGLGameView } from "./render/gl"; +import { createDebugGui, GameView as WebGLGameView } from "./render/gl"; import { ALL_UNIT_TYPES, UnitState } from "./render/types"; import { SoundManager } from "./sound/SoundManager"; @@ -478,6 +479,17 @@ async function createClientGame( (e) => view.setShowPatterns((e as CustomEvent).detail === "true"), ); + let debugGui: ReturnType | null = null; + eventBus.on(ToggleRenderDebugGuiEvent, () => { + if (debugGui === null) { + debugGui = createDebugGui(view.getSettings()); + debugGui.open(); + } else { + debugGui.destroy(); + debugGui = null; + } + }); + const gameRenderer = createRenderer( inputOverlay, gameView, diff --git a/src/client/InputHandler.ts b/src/client/InputHandler.ts index d0cc7334d..4b3e9c15a 100644 --- a/src/client/InputHandler.ts +++ b/src/client/InputHandler.ts @@ -84,6 +84,8 @@ export class CloseViewEvent implements GameEvent {} export class RefreshGraphicsEvent implements GameEvent {} +export class ToggleRenderDebugGuiEvent implements GameEvent {} + export class TogglePerformanceOverlayEvent implements GameEvent {} export class ToggleStructureEvent implements GameEvent { diff --git a/src/client/hud/layers/SettingsModal.ts b/src/client/hud/layers/SettingsModal.ts index e1d19199d..bd9bf4821 100644 --- a/src/client/hud/layers/SettingsModal.ts +++ b/src/client/hud/layers/SettingsModal.ts @@ -6,7 +6,11 @@ import { assetUrl } from "../../../core/AssetUrls"; import { EventBus } from "../../../core/EventBus"; import { UserSettings } from "../../../core/game/UserSettings"; import { Controller } from "../../Controller"; -import { AlternateViewEvent, RefreshGraphicsEvent } from "../../InputHandler"; +import { + AlternateViewEvent, + RefreshGraphicsEvent, + ToggleRenderDebugGuiEvent, +} from "../../InputHandler"; import { translateText } from "../../Utils"; import { SetBackgroundMusicVolumeEvent, @@ -174,6 +178,11 @@ export class SettingsModal extends LitElement implements Controller { this.requestUpdate(); } + private onRenderDebugGuiButtonClick() { + this.eventBus.emit(new ToggleRenderDebugGuiEvent()); + this.closeModal(); + } + private onExitButtonClick() { // redirect to the home page window.location.href = "/"; @@ -501,30 +510,58 @@ export class SettingsModal extends LitElement implements Controller { - + + + +