61 lines
1.7 KiB
GDScript
61 lines
1.7 KiB
GDScript
extends Node3D
|
|
|
|
@onready var outline_shader = preload("res://Shaders/outline.gdshader")
|
|
@onready var food_item = preload("res://Scenes/Prefabs/food_item.tscn")
|
|
@export var debugLabel1: Label
|
|
|
|
signal interact(person,interact_object)
|
|
|
|
signal object_selected_signal
|
|
signal object_unselected_signal
|
|
signal object_over_mouse_selected_signal(object)
|
|
signal object_over_mouse_unselected_signal(object)
|
|
|
|
signal show_context_menu
|
|
signal hide_context_menu
|
|
var is_context_menu_active: bool = false
|
|
|
|
var object_selected
|
|
var object_over_mouse
|
|
|
|
|
|
func _ready() -> void:
|
|
interact.connect(_on_interact)
|
|
|
|
object_selected_signal.connect(_on_object_selected)
|
|
object_unselected_signal.connect(_on_object_unselected)
|
|
|
|
object_over_mouse_selected_signal.connect(_on_mouse_object_selected)
|
|
object_over_mouse_unselected_signal.connect(_on_mouse_object_unselected)
|
|
|
|
|
|
func _input(event: InputEvent) -> void:
|
|
if event.is_action_released("mouse_click") and !is_context_menu_active:
|
|
if object_over_mouse != null:
|
|
object_selected_signal.emit(object_over_mouse)
|
|
else:
|
|
object_unselected_signal.emit()
|
|
if event.is_action_released("right_mouse_click"):
|
|
show_context_menu.emit()
|
|
|
|
func _on_interact(person, object):
|
|
object.start_action(person, object)
|
|
|
|
|
|
func _on_object_selected(object):
|
|
if object_selected != null and object != object_selected:
|
|
object_unselected_signal.emit()
|
|
object_selected = object
|
|
object_selected.is_selected = true
|
|
print(object_selected)
|
|
func _on_object_unselected():
|
|
if object_selected != null:
|
|
object_selected.is_selected = false
|
|
object_selected.disable_outline()
|
|
object_selected = null
|
|
|
|
func _on_mouse_object_selected(object):
|
|
object_over_mouse = object
|
|
func _on_mouse_object_unselected(object):
|
|
object_over_mouse = null
|