Initializes a new instance of the game control system, setting up initial state and configurations.
The Phaser scene associated with this instance.
This constructor initializes the game control system with necessary setups for handling inputs.
It prepares an interactions array indexed by button identifiers and configures default states for each button.
Specific buttons like MENU and STATS are set not to repeat their actions.
It concludes by calling the init
method to complete the setup.
Handles button press events on a gamepad. This method sets the gamepad as chosen on the first input if no gamepad is currently chosen. It checks if gamepad support is enabled and if the event comes from the chosen gamepad. If so, it maps the button press to a specific action using a custom configuration, emits an event for the button press, and records the time of the action.
The gamepad on which the button was pressed.
The specific button that was pressed.
The intensity or value of the button press, if applicable.
Responds to a button release event on a gamepad by checking if the gamepad is supported and currently chosen. If conditions are met, it identifies the configured action for the button, emits an event signaling the button release, and clears the record of the button.
The gamepad from which the button was released.
The specific button that was released.
The intensity or value of the button release, if applicable.
Retrieves the active configuration for the currently chosen device. It checks if a specific device ID is stored in configurations and returns it.
InterfaceConfig The configuration object for the active gamepad, or null if not set.
Retrieves the configuration object for a gamepad based on its identifier. The method identifies specific gamepad models based on substrings in the identifier and returns predefined configurations for recognized models. If no specific configuration matches, it defaults to a generic gamepad configuration.
The identifier string of the gamepad.
InterfaceConfig The configuration object corresponding to the identified gamepad type.
Retrieves the configuration object for a keyboard layout based on its identifier.
The identifier string of the keyboard layout.
InterfaceConfig The configuration object corresponding to the identified keyboard layout.
Sets up event handlers and initializes gamepad and keyboard controls.
This method configures event listeners for both gamepad and keyboard inputs. It handles gamepad connections/disconnections and button press events, and ensures keyboard controls are set up. Additionally, it manages the game's behavior when it loses focus to prevent unwanted game actions during this state.
Initializes the chosen gamepad by setting its identifier in the local storage and updating the UI to reflect the chosen gamepad. If a gamepad name is provided, it uses that as the chosen gamepad; otherwise, it defaults to the currently chosen gamepad.
Optional
gamepadName: StringOptional parameter to specify the name of the gamepad to initialize as chosen.
Initializes the chosen keyboard layout by setting its identifier in the local storage and updating the UI to reflect the chosen layout. If a layout name is provided, it uses that as the chosen layout; otherwise, it defaults to the currently chosen layout.
Optional
layoutKeyboard: StringOptional parameter to specify the name of the keyboard layout to initialize as chosen.
Injects a custom mapping configuration into the configuration for a specific gamepad. If the device does not have an existing configuration, it initializes one first.
The identifier of the device to configure.
The mapping configuration to apply to the device.
Handles the disconnection of a gamepad by adding its identifier to a list of disconnected gamepads. This is necessary because Phaser retains memory of previously connected gamepads, and without tracking disconnections, it would be impossible to determine the connection status of gamepads. This method ensures that disconnected gamepads are recognized and can be appropriately hidden in the gamepad selection menu.
The gamepad that has been disconnected.
Updates the tracking of disconnected gamepads when a gamepad is reconnected.
It removes the reconnected gamepad's identifier from the disconnectedGamepads
array,
effectively updating its status to connected.
The gamepad that has been reconnected.
Initializes or updates configurations for connected gamepads. It retrieves the names of all connected gamepads, sets up their configurations according to stored or default settings, and ensures these configurations are saved. If the connected gamepad is the currently chosen one, it reinitializes the chosen gamepad settings.
The gamepad that is being set up.
Manages and handles all input controls for the game, including keyboard and gamepad interactions.
Remarks
This class is designed to centralize input management across the game. It facilitates the setup, configuration, and handling of all game inputs, making it easier to manage various input devices such as keyboards and gamepads. The class provides methods for setting up input devices, handling their events, and responding to changes in input state (e.g., button presses, releases).
The
InputsController
class also includes mechanisms to handle game focus events to ensure input states are correctly reset and managed when the game loses or regains focus, maintaining robust and responsive control handling throughout the game's lifecycle.Key responsibilities include:
Usage of this class is intended to simplify input management across various parts of the game, providing a unified interface for all input-related interactions.