diff options
Diffstat (limited to 'client/player/onscreen_controls')
| -rw-r--r-- | client/player/onscreen_controls/controls.gd | 44 | ||||
| -rw-r--r-- | client/player/onscreen_controls/controls.tscn | 13 | 
2 files changed, 42 insertions, 15 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 diff --git a/client/player/onscreen_controls/controls.tscn b/client/player/onscreen_controls/controls.tscn index 2966f0d4..25dfdad9 100644 --- a/client/player/onscreen_controls/controls.tscn +++ b/client/player/onscreen_controls/controls.tscn @@ -31,7 +31,12 @@ position = Vector2(150, 25)  scale = Vector2(0.5, 0.5)  texture_normal = ExtResource("2_i4ife") -[node name="Interact" type="TouchScreenButton" parent="Buttons"] +[node name="InteractL" type="TouchScreenButton" parent="Buttons"] +position = Vector2(25, 150) +scale = Vector2(0.5, 0.5) +texture_normal = ExtResource("3_37rne") + +[node name="InteractR" type="TouchScreenButton" parent="Buttons"]  position = Vector2(150, 150)  scale = Vector2(0.5, 0.5)  texture_normal = ExtResource("3_37rne") @@ -50,7 +55,9 @@ texture_normal = ExtResource("5_4bttq")  [connection signal="pressed" from="Buttons/Boost" to="." method="_on_boost_pressed"]  [connection signal="released" from="Buttons/Boost" to="." method="_on_boost_released"] -[connection signal="pressed" from="Buttons/Interact" to="." method="_on_interact_pressed"] -[connection signal="released" from="Buttons/Interact" to="." method="_on_interact_released"] +[connection signal="pressed" from="Buttons/InteractL" to="." method="_on_interact_l_pressed"] +[connection signal="released" from="Buttons/InteractL" to="." method="_on_interact_l_released"] +[connection signal="pressed" from="Buttons/InteractR" to="." method="_on_interact_r_pressed"] +[connection signal="released" from="Buttons/InteractR" to="." method="_on_interact_r_released"]  [connection signal="pressed" from="Buttons2/Pause" to="." method="_on_pause_pressed"]  [connection signal="released" from="Buttons2/Pause" to="." method="_on_pause_released"] | 
