aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2024-06-29 21:53:11 +0200
committertpart <tpart120@proton.me>2024-06-29 21:53:15 +0200
commitb53f3d198e5899a597e5a321a277cf0ef74fec7b (patch)
tree907768d65f4a24948718dfe986c34fd2f71a3e7e
parentc0f9942cd4562b169a4dddfdc083e505dc465830 (diff)
downloadhurrycurry-b53f3d198e5899a597e5a321a277cf0ef74fec7b.tar
hurrycurry-b53f3d198e5899a597e5a321a277cf0ef74fec7b.tar.bz2
hurrycurry-b53f3d198e5899a597e5a321a277cf0ef74fec7b.tar.zst
Add hover sound effect
-rw-r--r--client/global.gd4
-rw-r--r--client/menu/menu_manager.gd15
2 files changed, 19 insertions, 0 deletions
diff --git a/client/global.gd b/client/global.gd
index b9f35b6b..7c547d64 100644
--- a/client/global.gd
+++ b/client/global.gd
@@ -108,6 +108,8 @@ var settings: Dictionary
var server_url = ""
var error_message = ""
+var focus_auto_changed := false
+
var fade_next := false # Set true when transitioning from another scene (fade in requried)
func _init():
@@ -143,6 +145,8 @@ func on_vulkan() -> bool:
return ProjectSettings.get_setting("rendering/rendering_device/driver") == "vulkan"
func focus_first_button(node: Node) -> bool:
+ focus_auto_changed = true
+
if node is Button:
node.grab_focus()
print("Node %s (%s) was selected for focus" % [node.name, node])
diff --git a/client/menu/menu_manager.gd b/client/menu/menu_manager.gd
index c15f181f..58f35885 100644
--- a/client/menu/menu_manager.gd
+++ b/client/menu/menu_manager.gd
@@ -15,6 +15,7 @@ var menu_stack = ["main"]
func _ready():
+ get_viewport().gui_focus_changed.connect(play_hover_maybe)
Global.focus_first_button(menus[menu_stack.back()])
for m in menus.values():
@@ -56,8 +57,22 @@ func show_menu(menu_name: String):
func connect_button_sounds(node: Node):
if node is Button:
node.pressed.connect(play_click)
+ if node is Button or node is LineEdit or node is Slider:
+ node.mouse_entered.connect(play_hover)
for c in node.get_children():
connect_button_sounds(c)
func play_click():
click_sound.play()
+
+func play_hover():
+ hover_sound.play()
+
+func play_hover_maybe(element):
+ if Global.focus_auto_changed:
+ Global.focus_auto_changed = false
+ return
+ if element is Button:
+ if element.is_hovered():
+ return
+ play_hover()