summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/game.gd4
-rw-r--r--client/global.gd3
-rw-r--r--client/player/onscreen_controls/controls.gd44
-rw-r--r--client/player/onscreen_controls/controls.tscn13
-rw-r--r--client/player/player.gd2
-rw-r--r--client/settings.gd6
6 files changed, 48 insertions, 24 deletions
diff --git a/client/game.gd b/client/game.gd
index a5c3242c..d4e3d852 100644
--- a/client/game.gd
+++ b/client/game.gd
@@ -53,7 +53,6 @@ var tile_collide: Array = []
var tile_interact: Array = []
var maps: Array = []
var bot_algos: Array
-var hand_count = 0
var text_message_history: Array[TextMessage] = []
var join_state: JoinState = JoinState.SPECTATING
@@ -96,7 +95,8 @@ func handle_packet(p):
tile_interact = p["data"]["tile_interact"]
maps = p["data"]["maps"]
bot_algos = p["data"]["bot_algos"]
- hand_count = p["data"]["hand_count"]
+ Global.hand_count = p["data"]["hand_count"]
+ Global.hand_count_change.emit(Global.hand_count)
tile_index_by_name.clear()
for id in tile_names.size():
diff --git a/client/global.gd b/client/global.gd
index f9682cbf..389bfd54 100644
--- a/client/global.gd
+++ b/client/global.gd
@@ -21,6 +21,8 @@ extends Node
signal using_joypad_change(using: bool)
signal using_touch_change(using: bool)
+@warning_ignore("UNUSED_SIGNAL")
+signal hand_count_change(count: bool)
const VERSION := "2.3.1"
@@ -56,6 +58,7 @@ var settings: Dictionary
var settings_tree: GameSetting
var game_paused := false
+var hand_count := 0
var server_url = ""
var error_message = ""
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"]
diff --git a/client/player/player.gd b/client/player/player.gd
index 5650c52e..cf8d3b78 100644
--- a/client/player/player.gd
+++ b/client/player/player.gd
@@ -68,7 +68,7 @@ func _init(_id: int, name_: String, pos: Vector2, character_style_: Dictionary,
position_ = pos
position_anim = pos
- if game.hand_count == 1:
+ if Global.hand_count == 1:
var center = Node3D.new()
center.name = "HandBaseCenter"
center.position = DEFAULT_HAND_BASE_POSITION_CENTER
diff --git a/client/settings.gd b/client/settings.gd
index 57568670..35bdf02d 100644
--- a/client/settings.gd
+++ b/client/settings.gd
@@ -144,12 +144,6 @@ static func h_volume_master(value: float): Sound.set_volume(0, value)
static func h_volume_music(value: float): Sound.set_volume(1, value)
static func h_volume_sfx(value: float): Sound.set_volume(2, value)
-static func h_touch(mode: String):
- match mode:
- "enabled": Global.using_touch = true
- "disabled": Global.using_touch = false
- Global.using_touch_change.emit()
-
static func h_language(language: String):
if language == "system": language = OS.get_locale_language()
TranslationServer.set_locale(language)