extends Node2D var current_action_idx := 0 var last_action_idx := 0 var actions: Actions func _ready() -> void: if not FileAccess.file_exists("res://client_data/data/sprite/cursors/actions.tscn"): return actions = load("res://client_data/data/sprite/cursors/actions.tscn").instantiate() add_child(actions) Input.mouse_mode = Input.MOUSE_MODE_HIDDEN actions.play("000") func _process(_delta: float) -> void: if not actions: return 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