summaryrefslogtreecommitdiff
path: root/ui/cursor.gd
diff options
context:
space:
mode:
Diffstat (limited to 'ui/cursor.gd')
-rw-r--r--ui/cursor.gd33
1 files changed, 33 insertions, 0 deletions
diff --git a/ui/cursor.gd b/ui/cursor.gd
new file mode 100644
index 0000000..947356e
--- /dev/null
+++ b/ui/cursor.gd
@@ -0,0 +1,33 @@
+extends Node2D
+
+
+var current_action_idx := 0
+var last_action_idx := 0
+
+
+func _ready() -> void:
+ Input.mouse_mode = Input.MOUSE_MODE_HIDDEN
+ $Actions.play("000")
+
+
+func _process(_delta: float) -> void:
+ global_position = get_global_mouse_position()
+
+ if Input.get_current_cursor_shape() == Input.CURSOR_ARROW:
+ current_action_idx = 0
+ elif Input.get_current_cursor_shape() == Input.CURSOR_POINTING_HAND:
+ current_action_idx = 2
+ else:
+ # use default OS cursor
+ current_action_idx = -1
+
+ if current_action_idx != last_action_idx:
+ if current_action_idx == -1:
+ Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
+ $Actions.visible = false
+ else:
+ Input.mouse_mode = Input.MOUSE_MODE_HIDDEN
+ $Actions.visible = true
+ $Actions.play(str(current_action_idx).pad_zeros(3))
+
+ last_action_idx = current_action_idx