From 6dff1477da64388880a2ecebb597f740051ec50e Mon Sep 17 00:00:00 2001 From: Greenlamp Date: Fri, 17 May 2024 21:47:45 +0200 Subject: [PATCH] fix ui update when on keyboard and pressing a gamepad button, change icons --- .../settings/abstract-settings-ui-handler.ts | 48 ++++++++++--------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/src/ui/settings/abstract-settings-ui-handler.ts b/src/ui/settings/abstract-settings-ui-handler.ts index ba16b1c44d0..e75b6fc95f6 100644 --- a/src/ui/settings/abstract-settings-ui-handler.ts +++ b/src/ui/settings/abstract-settings-ui-handler.ts @@ -301,28 +301,6 @@ export default abstract class AbstractSettingsUiUiHandler extends UiHandler { // Fetch the active gamepad configuration from the input controller. const activeConfig = this.getActiveConfig(); - const specialIcons = { - 'BUTTON_HOME': 'T_Home_Key_Dark.png', - 'BUTTON_DELETE': 'T_Del_Key_Dark.png', - } - for (const settingName of Object.keys(this.navigationIcons)) { - if (Object.keys(specialIcons).includes(settingName)) { - this.navigationIcons[settingName].setTexture("keyboard"); - this.navigationIcons[settingName].setFrame(specialIcons[settingName]); - this.navigationIcons[settingName].alpha = 1; - continue - } - const icon = this.scene.inputController?.getIconForLatestInputRecorded(settingName); - if (icon) { - const type = this.scene.inputController?.getLastSourceType(); - this.navigationIcons[settingName].setTexture(type); - this.navigationIcons[settingName].setFrame(icon); - this.navigationIcons[settingName].alpha = 1; - } else { - this.navigationIcons[settingName].alpha = 0; - } - } - // Set the UI layout for the active configuration. If unsuccessful, exit the function early. if (!this.setLayout(activeConfig)) return; @@ -355,6 +333,30 @@ export default abstract class AbstractSettingsUiUiHandler extends UiHandler { this.setScrollCursor(this.scrollCursor); } + updateNavigationDisplay() { + const specialIcons = { + 'BUTTON_HOME': 'T_Home_Key_Dark.png', + 'BUTTON_DELETE': 'T_Del_Key_Dark.png', + } + for (const settingName of Object.keys(this.navigationIcons)) { + if (Object.keys(specialIcons).includes(settingName)) { + this.navigationIcons[settingName].setTexture("keyboard"); + this.navigationIcons[settingName].setFrame(specialIcons[settingName]); + this.navigationIcons[settingName].alpha = 1; + continue + } + const icon = this.scene.inputController?.getIconForLatestInputRecorded(settingName); + if (icon) { + const type = this.scene.inputController?.getLastSourceType(); + this.navigationIcons[settingName].setTexture(type); + this.navigationIcons[settingName].setFrame(icon); + this.navigationIcons[settingName].alpha = 1; + } else { + this.navigationIcons[settingName].alpha = 0; + } + } + } + /** * Show the UI with the provided arguments. * @@ -364,6 +366,7 @@ export default abstract class AbstractSettingsUiUiHandler extends UiHandler { show(args: any[]): boolean { super.show(args); + this.updateNavigationDisplay(); // Update the bindings for the current active gamepad configuration. this.updateBindings(); @@ -433,6 +436,7 @@ export default abstract class AbstractSettingsUiUiHandler extends UiHandler { const ui = this.getUi(); // Defines the maximum number of rows that can be displayed on the screen. let success = false; + this.updateNavigationDisplay(); // Handle the input based on the button pressed. if (button === Button.CANCEL) {