mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-07-23 16:15:10 +00:00
feat(highlight): replace the small-player highlight toggle with a strength slider (#4588)
## Description: Replaces the "Highlight small players" on/off toggle with a **0-500% Strength slider** controlling the glow's **width** (0 = off, 100% = the previous default). - `UserSettings`: `highlightSmallPlayers()`/toggle → `highlightGlowStrength()`/set, float-backed, clamped to [0, 5]. - `SmallPlayerGlowPass` takes the strength via a setter (pushed by `ClientGameRunner` on the settings-changed event), so it stays a pure consumer and the slider still updates live while the settings modal has the sim paused. Width = a non-linear blur-iteration count; intensity compensated so wider stays about as bright. - `MapRenderer` persists the strength across a WebGL context restore. - `SettingsModal`: the toggle row becomes a range input. Behavior note: with the toggle gone the glow **defaults ON at 100%** (old toggle defaulted OFF); can default to 0 (opt-in) if preferred. ## Please complete the following: - [x] I have added screenshots for all UI updates - [x] I process any text displayed to the user through translateText() and I've added it to the en.json file - [x] I have added relevant tests to the test directory
This commit is contained in:
@@ -139,8 +139,11 @@ export class UserSettings {
|
||||
return this.getBool("settings.emojis", true);
|
||||
}
|
||||
|
||||
highlightSmallPlayers() {
|
||||
return this.getBool("settings.highlightSmallPlayers", false);
|
||||
highlightGlowStrength() {
|
||||
// 0 = off, 1 = default; capped at 5 (the 500% slider max) so a value
|
||||
// persisted from an older, larger range can't display/apply above it.
|
||||
const v = this.getFloat("settings.highlightGlowStrength", 1);
|
||||
return Math.min(5, Math.max(0, v));
|
||||
}
|
||||
|
||||
performanceOverlay() {
|
||||
@@ -195,11 +198,8 @@ export class UserSettings {
|
||||
this.setBool("settings.emojis", !this.emojis());
|
||||
}
|
||||
|
||||
toggleHighlightSmallPlayers() {
|
||||
this.setBool(
|
||||
"settings.highlightSmallPlayers",
|
||||
!this.highlightSmallPlayers(),
|
||||
);
|
||||
setHighlightGlowStrength(value: number) {
|
||||
this.setFloat("settings.highlightGlowStrength", value);
|
||||
}
|
||||
|
||||
// Performance overlay specifically needs a direct setter for Shift-D
|
||||
|
||||
Reference in New Issue
Block a user