aboutsummaryrefslogtreecommitdiff
path: root/client/player/onscreen_controls/controls.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/player/onscreen_controls/controls.gd')
-rw-r--r--client/player/onscreen_controls/controls.gd44
1 files changed, 32 insertions, 12 deletions
diff --git a/client/player/onscreen_controls/controls.gd b/client/player/onscreen_controls/controls.gd
index 06efb82e..df60d1fd 100644
--- a/client/player/onscreen_controls/controls.gd
+++ b/client/player/onscreen_controls/controls.gd
@@ -16,19 +16,25 @@
extends CanvasLayer
@onready var boost = $Buttons/Boost
-@onready var interact = $Buttons/Interact
+@onready var interact_right = $Buttons/InteractR
+@onready var interact_left = $Buttons/InteractL
@onready var pause = $Buttons2/Pause
@onready var modulate_color = $MovementStick.pressed_color
var touch_enabled := false
func _ready():
- apply_touch(Global.using_touch)
- Global.using_touch_change.connect(apply_touch)
+ Settings.hook_changed_init("ui.touch_controls", false, apply_touch)
+ Global.using_touch_change.connect(func f(_x): apply_touch(Global.get_setting("ui.touch_controls"))) # throw away useless argument
+ Global.hand_count_change.connect(apply_hand_count)
+ apply_hand_count(Global.hand_count)
-func apply_touch(touch):
- visible = touch
- touch_enabled = touch
+func apply_touch(touch_controls: String):
+ touch_enabled = Global.using_touch or touch_controls == "enabled" and touch_controls != "disabled"
+ visible = touch_enabled
+
+func apply_hand_count(count: int):
+ interact_left.visible = count >= 2
func in_lobby_updated(in_lobby: bool):
$Buttons.visible = not in_lobby
@@ -41,13 +47,19 @@ func _on_boost_released():
Input.action_release("boost")
boost.modulate = Color.WHITE
-func _on_interact_pressed():
- Input.action_press("interact_left")
- interact.modulate = modulate_color
+func _on_interact_r_pressed():
+ if Global.hand_count == 1:
+ Input.action_press("interact_left")
+ else:
+ Input.action_press("interact_right")
+ interact_right.modulate = modulate_color
-func _on_interact_released():
- Input.action_release("interact_left")
- interact.modulate = Color.WHITE
+func _on_interact_r_released():
+ if Global.hand_count == 1:
+ Input.action_release("interact_left")
+ else:
+ Input.action_release("interact_right")
+ interact_right.modulate = Color.WHITE
func _on_pause_pressed():
Input.action_press("ui_menu")
@@ -56,3 +68,11 @@ func _on_pause_pressed():
func _on_pause_released():
Input.action_release("ui_menu")
pause.modulate = Color.WHITE
+
+func _on_interact_l_pressed() -> void:
+ Input.action_press("interact_left")
+ interact_left.modulate = modulate_color
+
+func _on_interact_l_released() -> void:
+ Input.action_release("interact_left")
+ interact_left.modulate = Color.WHITE