From a89e744ed0e8c759caf041a580112365bbfe4303 Mon Sep 17 00:00:00 2001 From: radiohotline Date: Tue, 25 Aug 2026 16:33:56 +0300 Subject: escoria update --- addons/escoria-core/game/esc_inputs_manager.gd | 36 ++++++++++++++++---------- 1 file changed, 22 insertions(+), 14 deletions(-) (limited to 'addons/escoria-core/game/esc_inputs_manager.gd') diff --git a/addons/escoria-core/game/esc_inputs_manager.gd b/addons/escoria-core/game/esc_inputs_manager.gd index 762da5e..b2d8b5b 100644 --- a/addons/escoria-core/game/esc_inputs_manager.gd +++ b/addons/escoria-core/game/esc_inputs_manager.gd @@ -2,8 +2,11 @@ ## ## Catches, handles and distributes input events for the game. ## @MANAGER -extends Resource class_name ESCInputsManager +extends Resource + +## Emitted when input mode changes. +signal input_mode_changed(new_mode: int) ## Valid input flags[br] @@ -27,7 +30,12 @@ const ESC_UI_PRIMARY_ACTION = "esc_ui_primary_action" ## The current input mode -var input_mode = INPUT_ALL +var input_mode = INPUT_ALL: + get: + return input_mode + set(new_mode): + input_mode = new_mode + input_mode_changed.emit(new_mode) ## A LIFO stack of hovered items var hover_stack: HoverStack @@ -43,7 +51,7 @@ var hotspot_focused: String = "" ## #### Parameters[br] ##[br] ## - event: The event to process[br] -## - is_default_state: Whether the current state is escoria.GAME_STATE.DEFAULT[br] +## - is_default_state: Whether the current state is escoria.GameState.DEFAULT[br] ##[br] ## **Returns** Whether the function processed the event. var custom_input_handler = null @@ -77,7 +85,7 @@ func _init(): ## #### Returns[br] ## [br] ## Returns nothing. -func _on_event_finished(return_code: int, event_name: String): +func _on_event_finished(_return_code: int, _event_name: String): if _hovered_element == null: hotspot_focused = "" @@ -138,7 +146,7 @@ func register_background(background: ESCBackground): ## [br] ## | Name | Type | Description | Required? |[br] ## |:-----|:-----|:------------|:----------|[br] -## |callback|`Variant`|Function reference satisfying the above contract event The event to process is_default_state Whether the current state is escoria.GAME_STATE.DEFAULT returns whether the function processed the event `callback` is responsible for calling `get_tree().set_input_as_handled()`, if appropriate.|yes|[br] +## |callback|`Variant`|Function reference satisfying the above contract event The event to process is_default_state Whether the current state is escoria.GameState.DEFAULT returns whether the function processed the event `callback` is responsible for calling `get_tree().set_input_as_handled()`, if appropriate.|yes|[br] ## [br] ## #### Returns[br] ## [br] @@ -154,7 +162,7 @@ func register_custom_input_handler(callback) -> void: ## | Name | Type | Description | Required? |[br] ## |:-----|:-----|:------------|:----------|[br] ## |event|`InputEvent`|The event to process|yes|[br] -## |is_default_state|`bool`|Whether the current state is escoria.GAME_STATE.DEFAULT|yes|[br] +## |is_default_state|`bool`|Whether the current state is escoria.GameState.DEFAULT|yes|[br] ## [br] ## #### Returns[br] ## [br] @@ -162,8 +170,8 @@ func register_custom_input_handler(callback) -> void: func try_custom_input_handler(event: InputEvent, is_default_state: bool) -> bool: if custom_input_handler: return custom_input_handler.call(event, is_default_state) - else: - return false + + return false ## Callback called by hover stack content change.[br] ## [br] @@ -209,9 +217,9 @@ func set_hovered_node(item: ESCItem) -> bool: _hovered_element = item _hovered_element.mouse_entered() return true + # Else, the tested item is currently on top of hover stack, then do nothing - else: - return false + return false ## Unsets the hovered node.[br] @@ -506,10 +514,10 @@ func on_item_non_interactive(item: ESCItem) -> void: if hover_stack.is_empty(): return - else: - var new_item = hover_stack.get_top_item() - escoria.action_manager.set_action_input_state(ESCActionManager.ACTION_INPUT_STATE.AWAITING_VERB_OR_ITEM) - new_item.mouse_entered() + + var new_item = hover_stack.get_top_item() + escoria.action_manager.set_action_input_state(ESCActionManager.ActionInputState.AWAITING_VERB_OR_ITEM) + new_item.mouse_entered() # An Escoria item was clicked with the LMB -- cgit v1.3