From efaf7760e48df87e9a445b78154b4dfc3e5ca343 Mon Sep 17 00:00:00 2001 From: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Date: Sun, 24 Aug 2025 14:34:21 -0500 Subject: [PATCH] [Bug] Fix speedup/slowdown buttons not working properly (#6393) Fix speedup button resetting to minimum speed --- src/ui-inputs.ts | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/ui-inputs.ts b/src/ui-inputs.ts index 71c5ac1049e..72ae59faaec 100644 --- a/src/ui-inputs.ts +++ b/src/ui-inputs.ts @@ -13,7 +13,7 @@ import { SettingsGamepadUiHandler } from "#ui/settings-gamepad-ui-handler"; import { SettingsKeyboardUiHandler } from "#ui/settings-keyboard-ui-handler"; import { SettingsUiHandler } from "#ui/settings-ui-handler"; import { StarterSelectUiHandler } from "#ui/starter-select-ui-handler"; -import type Phaser from "phaser"; +import Phaser from "phaser"; type ActionKeys = Record void>; @@ -224,25 +224,26 @@ export class UiInputs { buttonSpeedChange(up = true): void { const settingGameSpeed = settingIndex(SettingKeys.Game_Speed); + const settingOptions = Setting[settingGameSpeed].options; + let currentSetting = settingOptions.findIndex(item => item.value === globalScene.gameSpeed.toString()); + // if current setting is -1, then the current game speed is not a valid option, so default to index 5 (3x) + if (currentSetting === -1) { + currentSetting = 5; + } + let direction: number; if (up && globalScene.gameSpeed < 5) { - globalScene.gameData.saveSetting( - SettingKeys.Game_Speed, - Setting[settingGameSpeed].options.findIndex(item => item.label === `${globalScene.gameSpeed}x`) + 1, - ); - if (globalScene.ui?.getMode() === UiMode.SETTINGS) { - (globalScene.ui.getHandler() as SettingsUiHandler).show([]); - } + direction = 1; } else if (!up && globalScene.gameSpeed > 1) { - globalScene.gameData.saveSetting( - SettingKeys.Game_Speed, - Math.max( - Setting[settingGameSpeed].options.findIndex(item => item.label === `${globalScene.gameSpeed}x`) - 1, - 0, - ), - ); - if (globalScene.ui?.getMode() === UiMode.SETTINGS) { - (globalScene.ui.getHandler() as SettingsUiHandler).show([]); - } + direction = -1; + } else { + return; + } + globalScene.gameData.saveSetting( + SettingKeys.Game_Speed, + Phaser.Math.Clamp(currentSetting + direction, 0, settingOptions.length - 1), + ); + if (globalScene.ui?.getMode() === UiMode.SETTINGS) { + (globalScene.ui.getHandler() as SettingsUiHandler).show([]); } } }