diff options
author | tpart <tpart120@proton.me> | 2024-07-25 19:09:03 +0200 |
---|---|---|
committer | tpart <tpart120@proton.me> | 2024-07-25 19:09:33 +0200 |
commit | 65a42d843973d608fb0d3ca1d56bef63794e3c38 (patch) | |
tree | dba43b93060abaebeb4c8aa9d0db9398ce1e3170 | |
parent | e63b104666ba955b58c43c6d67e92e963b261341 (diff) | |
download | hurrycurry-65a42d843973d608fb0d3ca1d56bef63794e3c38.tar hurrycurry-65a42d843973d608fb0d3ca1d56bef63794e3c38.tar.bz2 hurrycurry-65a42d843973d608fb0d3ca1d56bef63794e3c38.tar.zst |
Automatically activate touch buttons when touch input is detected
-rw-r--r-- | client/global.gd | 24 | ||||
-rw-r--r-- | client/player/onscreen_controls/controls.gd | 8 |
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") |