From ea95069604dab79161aa91ca58da68903ec6cb0f Mon Sep 17 00:00:00 2001 From: evanpelle Date: Mon, 8 Jun 2026 14:15:07 -0700 Subject: [PATCH] Move special effects toggle to graphics settings, wire to renderer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The special effects toggle wrote settings.specialEffects but nothing in the WebGL pipeline read it — the FX pass is gated on passEnabled.fx. The setting was orphaned when the old canvas renderer was removed, so the toggle had no visual effect. Move the toggle into the graphics settings modal (under a new Effects section) and remove it from the in-game settings modal and the homepage user settings modal. Rewire it to a passEnabled.fx graphics override so it actually toggles the FX pass, applied live via the existing graphics override listener. Delete the now-dead fxLayer()/toggleFxLayer() from UserSettings. Note: users who previously disabled special effects will reset to on, since the old settings.specialEffects key is no longer read. --- resources/lang/en.json | 1 + src/client/UserSettingModal.ts | 18 -------- .../hud/layers/GraphicsSettingsModal.ts | 45 +++++++++++++++++++ src/client/hud/layers/SettingsModal.ts | 31 ------------- src/client/render/gl/GraphicsOverrides.ts | 5 +++ src/client/render/gl/RenderOverrides.ts | 3 ++ src/core/game/UserSettings.ts | 8 ---- 7 files changed, 54 insertions(+), 57 deletions(-) diff --git a/resources/lang/en.json b/resources/lang/en.json index 18fa3da00..f3016e666 100644 --- a/resources/lang/en.json +++ b/resources/lang/en.json @@ -946,6 +946,7 @@ "highlight_thicken_desc": "How much the border thickens on hover", "rail_distance_label": "Train track draw distance", "rail_distance_desc": "How far zoomed out train tracks remain visible", + "section_effects": "Effects", "reset_label": "Reset to defaults", "reset_desc": "Clear all graphics overrides" }, diff --git a/src/client/UserSettingModal.ts b/src/client/UserSettingModal.ts index b0a260a70..fe52b0a02 100644 --- a/src/client/UserSettingModal.ts +++ b/src/client/UserSettingModal.ts @@ -221,15 +221,6 @@ export class UserSettingModal extends BaseModal { ); } - private toggleFxLayer() { - this.userSettings.toggleFxLayer(); - - console.log( - "💥 Special effects:", - this.userSettings.fxLayer() ? "ON" : "OFF", - ); - } - private toggleCursorCostLabel() { this.userSettings.toggleCursorCostLabel(); @@ -769,15 +760,6 @@ export class UserSettingModal extends BaseModal { @change=${this.toggleAlertFrame} > - - - ) { + const current = this.userSettings.graphicsOverrides(); + this.userSettings.setGraphicsOverrides({ + ...current, + passEnabled: { ...current.passEnabled, ...patch }, + }); + this.requestUpdate(); + } + + private currentSpecialEffects(): boolean { + return ( + this.userSettings.graphicsOverrides().passEnabled?.fx ?? + renderDefaults.passEnabled.fx + ); + } + + private onToggleSpecialEffects() { + this.patchPassEnabled({ fx: !this.currentSpecialEffects() }); + } + private onNameScaleChange(event: Event) { const value = parseFloat((event.target as HTMLInputElement).value); this.patchName({ nameScaleFactor: value }); @@ -504,6 +524,31 @@ export class GraphicsSettingsModal extends LitElement implements Controller { +
+ ${translateText("graphics_setting.section_effects")} +
+ + +
- -