Files
EGJ25/scenes/interactibles/interactible.gd

54 lines
1.5 KiB
GDScript3
Raw Normal View History

2025-06-28 10:23:35 +02:00
extends Area2D
class_name Interactible
# @export_file("*.tscn") var scene_to_trigger: String
@export var message: String
2025-06-28 12:46:58 +02:00
@export var interact_text: String
@export var event: String
2025-06-28 10:23:35 +02:00
signal event_triggered(event_id: String)
2025-06-28 21:37:41 +02:00
signal event_confirmed(event_id: String)
2025-06-28 10:23:35 +02:00
@onready var rich_text_label: RichTextLabel = $RichTextLabel
@onready var confirm_panel: Panel = %ConfirmPanel
@onready var message_box: Label = %MessageBox
2025-06-28 12:46:58 +02:00
@onready var interact_box: RichTextLabel = $RichTextLabel
2025-06-28 10:23:35 +02:00
2025-06-28 17:54:57 +02:00
@export var is_item = false
@onready var confirm_button: Button = %ConfirmButton
@onready var cancel_button: Button = %CancelButton
@onready var ok_button: Button = %OkButton
2025-06-28 10:23:35 +02:00
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
rich_text_label.visible = false
confirm_panel.visible = false
message_box.text = message.to_upper()
2025-06-28 12:46:58 +02:00
if not interact_text.is_empty():
interact_box.text = interact_text.to_upper()
2025-06-28 17:54:57 +02:00
if is_item:
confirm_button.visible = false
cancel_button.visible = false
ok_button.visible = true
2025-06-28 10:23:35 +02:00
func _on_body_entered(body: Node2D) -> void:
rich_text_label.visible = true
func _on_body_exited(body: Node2D) -> void:
rich_text_label.visible = false
confirm_panel.visible = false
func show_confirm():
confirm_panel.visible = true
2025-06-28 21:37:41 +02:00
event_triggered.emit(event)
func _on_confirm_button_pressed() -> void:
confirm_panel.visible = false
2025-06-28 21:37:41 +02:00
event_confirmed.emit(event)
func _on_cancel_button_pressed() -> void:
confirm_panel.visible = false