This new "Input Type" switching feature, which is used for gamepad UIs, is a hindrance to gamepad users.
--
KB_B = all keyboard buttons and mouse buttons
GP_B = all gampepad buttons and control sticks
-- Previous functionality
Gamepad mode off
- UI mode locked in Keyboard mode
Gamepad mode Auto
- UI mode toggles between modes based on what peripheral's button is pressed at any time
Gamepad mode ON
- UI mode locked in gamepad mode
With this functionality, when gamepad mode is set to ON, the KB_B function simultaneously with the gamepad, where applicable.
- This mainly excludes UI specific keybinds.
Pressing KB_B[Escape] in any UI scene, beside "hud"/"hudui", functions as SCENE_MANAGER:ShowBaseScene()
Pressing KB_B[Escape] in a hud scene, opens the main game menu
This functionality allows for gamepad users to use the KB_Bs as additional keybinds
-- New functionality
The above still holds true
Input type constant cycling based on what peripheral's button is pressed at any time
- Input type manages what UI controls are active
- Input type manages what keybind button groups are active.
With this functionality, when gamepad mode is set to ON, the KB_B do not function simultaneously with the gamepad.
Pressing any KB_B switches the INPUT_TYPE to keyboard keybinds, disabling gamepad keybinds
Pressing any GP_B switches the INPUT_TYPE to gamepad keybinds, disabling keyboard keybinds
While playing in gamepad mode ON, using a KB_B to open a UI scene will open the UI scene with keyboard keybinds active, gamepad keybinds disabled
- This forces the user to have to activate gamepad keybinds by switching the INPUT_TYPE to gamepad by pressing any GP_B before making any selections in the UI possible.
- This also means the KB_B[Escape] will then not function to exit to hud. In fact, you can cycle through input types without having any effect on the UI.
Example 1:
- GP_B[ B ] = Default back button, will exit the UI when on main scene.
- KB_B[Escape] should always exit to hud when the hud scene is not showing.
- Press KB_B[ I ] ( opens inventory), GP_B[ B ], KB_B[Escape], GP_B[ B ], KB_B[Escape], GP_B[ B ], KB_B[Escape], GP_B[ B ], KB_B[Escape], GP_B[ B ] ... infinitely, will only cycle input types.
- Pressing either GP_B[ B ] or KB_B[Escape] at any time after entering the the inventory scene should have exited to the hud.
Example 2:
- Pressing KB_B[Escape] while gamepad keybinds are active in the hud scene does not open the main game menu.
- It first activates the keyboard keybinds, then you must press KB_B[Escape] again to open the main game menu.
- However, if one was to unintentionally press another GP_B prior to pressing KB_B[Escape], they would have to press KB_B[Escape] 2 more times to access the main game menu.
This INPUT_TYPE cycle feature is only available on platforms where DoesPlatformAllowConfiguringAutomaticInputChanging() returns true.
Those platforms are otherwise known as computers (PC). Generally, a PC has a keyboard and mouse plugged into them.
When a player is using a gamepad to play on a PC, they most likely also have immediate access to a keyboard and mouse as well.
This allows them to use the keyboard as keybinds, the mouse (which is required by the game on a pc without touchscreen) to navigate the main game menu, as well as the character select scene.
This also allows them to switch to keyboard MODE to make use of some keyboard UI features not available in gamepad mode.
This INPUT_TYPE cycle feature's usability allows users "without" a gamepad to manipulate gamepad mode UIs.
This does not allow a mouse to manipulate gamepad UI buttons/list items.
This INPUT_TYPE cycle feature's usability is not intended for actual gamepad users, however, is forced on them.
-- Suggestions:
Add checkBox between Gamepad mode and Use Keyboard Chat In Gamepad mode to enable this feature. (default OFF)
Add keybind to enable this feature (like as done for switching game modes)