2022-12-31 01:19:40 -07:00
|
|
|
extends Area
|
|
|
|
|
|
|
|
export var on_interact_func = ""
|
|
|
|
export var on_enter_func = ""
|
|
|
|
export var on_leave_func = ""
|
2023-01-01 02:23:56 -07:00
|
|
|
export var call_string = ""
|
2023-01-01 14:02:34 -07:00
|
|
|
export var call_array: Array = []
|
2022-12-31 01:19:40 -07:00
|
|
|
|
|
|
|
var cursor_is_touching = false
|
|
|
|
|
|
|
|
func _ready():
|
|
|
|
var _err = GlobalCursorState.connect("cursor_interact", self, "check_interact")
|
|
|
|
|
2023-01-01 02:23:56 -07:00
|
|
|
func call_with_value(func_name: String):
|
|
|
|
if call_string:
|
|
|
|
GlobalCursorState.call(func_name, call_string)
|
2023-01-01 14:02:34 -07:00
|
|
|
elif call_array.size():
|
|
|
|
GlobalCursorState.call(func_name, call_array)
|
2023-01-01 02:23:56 -07:00
|
|
|
else:
|
|
|
|
GlobalCursorState.call(func_name)
|
2023-01-01 14:02:34 -07:00
|
|
|
|
|
|
|
signal interact
|
|
|
|
signal enter
|
|
|
|
signal leave
|
|
|
|
|
2022-12-31 01:19:40 -07:00
|
|
|
func check_interact():
|
2023-01-01 14:02:34 -07:00
|
|
|
if not cursor_is_touching:
|
|
|
|
return
|
|
|
|
emit_signal("interact")
|
|
|
|
if on_interact_func:
|
2023-01-01 02:23:56 -07:00
|
|
|
call_with_value(on_interact_func)
|
2022-12-31 01:19:40 -07:00
|
|
|
|
|
|
|
func _on_CursorInteractArea_body_entered(body):
|
|
|
|
if not GlobalCursorState.is_cursor_collision(body):
|
|
|
|
return
|
2023-01-01 14:02:34 -07:00
|
|
|
emit_signal("enter")
|
2022-12-31 01:19:40 -07:00
|
|
|
cursor_is_touching = true
|
|
|
|
if on_enter_func:
|
2023-01-01 02:23:56 -07:00
|
|
|
call_with_value(on_enter_func)
|
2022-12-31 01:19:40 -07:00
|
|
|
|
|
|
|
func _on_CursorInteractArea_body_exited(body):
|
|
|
|
if not GlobalCursorState.is_cursor_collision(body):
|
|
|
|
return
|
2023-01-01 14:02:34 -07:00
|
|
|
emit_signal("leave")
|
2022-12-31 01:19:40 -07:00
|
|
|
cursor_is_touching = false
|
|
|
|
if on_leave_func:
|
2023-01-01 02:23:56 -07:00
|
|
|
call_with_value(on_leave_func)
|