summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2024-07-25 19:09:03 +0200
committertpart <tpart120@proton.me>2024-07-25 19:09:33 +0200
commit65a42d843973d608fb0d3ca1d56bef63794e3c38 (patch)
treedba43b93060abaebeb4c8aa9d0db9398ce1e3170
parente63b104666ba955b58c43c6d67e92e963b261341 (diff)
downloadhurrycurry-65a42d843973d608fb0d3ca1d56bef63794e3c38.tar
hurrycurry-65a42d843973d608fb0d3ca1d56bef63794e3c38.tar.bz2
hurrycurry-65a42d843973d608fb0d3ca1d56bef63794e3c38.tar.zst
Automatically activate touch buttons when touch input is detected
-rw-r--r--client/global.gd24
-rw-r--r--client/player/onscreen_controls/controls.gd8
2 files changed, 27 insertions, 5 deletions
diff --git a/client/global.gd b/client/global.gd
index b25317e3..124bebf4 100644
--- a/client/global.gd
+++ b/client/global.gd
@@ -20,6 +20,7 @@ extends Node
signal settings_changed()
signal using_joypad_change(using: bool)
+signal using_touch_change(using: bool)
var default_profile := {
"username": "Giovanni",
@@ -38,6 +39,7 @@ var default_profile := {
}
var languages := language_array()
var using_joypad := false
+var using_touch := false
var default_settings := {
"language": DropdownSetting.new(tr("Language"), 0, languages),
@@ -45,7 +47,7 @@ var default_settings := {
"music_volume": RangeSetting.new(tr("Music Volume"), 0, -30, 0),
"sfx_volume": RangeSetting.new(tr("SFX Volume"), 0, -30, 0),
"fullscreen": DropdownSetting.new(tr("Fullscreen"), 0, [tr("Keep"), tr("Always"), tr("Never")]),
- "touch_controls": ToggleSetting.new(tr("Enable touch screen controls"), DisplayServer.is_touchscreen_available()),
+ "touch_controls": DropdownSetting.new(tr("Enable touch screen controls"), 0, [tr("Automatic"), tr("Enabled"), tr("Disabled")]),
"interpolate_camera_rotation": ToggleSetting.new(tr("Interpolate the camera rotation"), true),
"invert_camera": ToggleSetting.new(tr("Invert camera movement"), false),
"usernames": ToggleSetting.new(tr("Show username tags"), true),
@@ -111,6 +113,17 @@ func _input(event):
if not using_joypad:
using_joypad = true
using_joypad_change.emit(using_joypad)
+
+ # Update using_touch variable
+ if get_setting("touch_controls") == 0: # Only if set to automatic
+ if event is InputEventScreenTouch or event is InputEventScreenDrag:
+ if not using_touch:
+ using_touch = true
+ using_touch_change.emit(using_touch)
+ if event is InputEventMouseButton or event is InputEventKey or event is InputEventJoypadButton or event is InputEventJoypadMotion:
+ if using_touch:
+ using_touch = false
+ using_touch_change.emit(using_touch)
func apply_settings():
update_fullscreen()
@@ -154,6 +167,15 @@ func apply_settings():
Sound.set_volume(0, get_setting("master_volume"))
Sound.set_volume(1, get_setting("music_volume"))
Sound.set_volume(2, get_setting("sfx_volume"))
+
+ # Touch controls
+ match get_setting("touch_controls"):
+ # 0: Automatically adjusted
+ 1: # Enabled
+ using_touch = true
+ 2: # Disabled
+ using_touch = false
+ using_touch_change.emit()
emit_signal("settings_changed")
diff --git a/client/player/onscreen_controls/controls.gd b/client/player/onscreen_controls/controls.gd
index e05bf854..094b69b7 100644
--- a/client/player/onscreen_controls/controls.gd
+++ b/client/player/onscreen_controls/controls.gd
@@ -21,11 +21,11 @@ extends CanvasLayer
@onready var modulate_color = $MovementStick.pressed_color
func _ready():
- apply_settings()
- Global.settings_changed.connect(apply_settings)
+ apply_touch()
+ Global.using_touch_change.connect(apply_touch)
-func apply_settings():
- visible = Global.get_setting("touch_controls")
+func apply_touch():
+ visible = Global.using_touch
func _on_boost_pressed():
Input.action_press("boost")