gd: added input addon
This commit is contained in:
57
guide_examples/remapping/remapping.gd
Normal file
57
guide_examples/remapping/remapping.gd
Normal file
@ -0,0 +1,57 @@
|
||||
## This is the main game controller. It enables a control scheme at the start and is
|
||||
## responsible for controlling the remapping dialog.
|
||||
extends Node
|
||||
|
||||
const Utils = preload("utils.gd")
|
||||
|
||||
@export_group("Context & Modifiers")
|
||||
@export var keyboard:GUIDEMappingContext
|
||||
@export var controller:GUIDEMappingContext
|
||||
@export var controller_axis_invert_modifier:GUIDEModifierNegate
|
||||
|
||||
@export_group("Actions")
|
||||
@export var switch_to_keyboard:GUIDEAction
|
||||
@export var switch_to_controller:GUIDEAction
|
||||
@export var open_menu:GUIDEAction
|
||||
|
||||
|
||||
@onready var _remapping_dialog:Control = %RemappingDialog
|
||||
|
||||
func _ready():
|
||||
# React when the open menu action is triggered.
|
||||
open_menu.triggered.connect(_open_menu)
|
||||
|
||||
# and switching to controller / keyboard ...
|
||||
switch_to_controller.triggered.connect(_switch.bind(controller))
|
||||
switch_to_keyboard.triggered.connect(_switch.bind(keyboard))
|
||||
|
||||
# Also listen to when the remapping dialog closes and re-apply the changed
|
||||
# mapping config
|
||||
_remapping_dialog.closed.connect(_load_remapping_config)
|
||||
|
||||
# Start with the keyboard scheme
|
||||
GUIDE.enable_mapping_context(keyboard)
|
||||
|
||||
# finally enable all controls with the last saved remapping configuration
|
||||
_load_remapping_config(Utils.load_remapping_config())
|
||||
|
||||
|
||||
func _open_menu() -> void:
|
||||
# and show the remapping dialog
|
||||
_remapping_dialog.open()
|
||||
|
||||
|
||||
func _load_remapping_config(config:GUIDERemappingConfig):
|
||||
GUIDE.set_remapping_config(config)
|
||||
|
||||
# also apply changes to our modifiers
|
||||
controller_axis_invert_modifier.x = config.custom_data.get(Utils.CUSTOM_DATA_INVERT_HORIZONTAL, false)
|
||||
controller_axis_invert_modifier.y = config.custom_data.get(Utils.CUSTOM_DATA_INVERT_VERTICAL, false)
|
||||
|
||||
|
||||
func _switch(context:GUIDEMappingContext):
|
||||
# ignore while remapping is active, remapping will take care of it
|
||||
if _remapping_dialog.visible:
|
||||
return
|
||||
|
||||
GUIDE.enable_mapping_context(context, true)
|
Reference in New Issue
Block a user