Tales-of-PKMN/game/quest_journal/quest_entry.gd

31 lines
1 KiB
GDScript

extends Button
class_name QuestEntry
signal quest_selected(quest_id: StringName)
@onready var title_label: Label = $HBoxContainer/VBoxContainer/TitleLabel
@onready var progress_label: Label = $HBoxContainer/VBoxContainer/ProgressLabel
@onready var status_icon: Label = $HBoxContainer/StatusIcon
const QuestData = preload("uid://bldyeahkrms8n")
var _quest_id: StringName = &""
func setup(quest: QuestData, is_completed: bool) -> void:
_quest_id = quest.quest_id
title_label.text = quest.title
if is_completed:
progress_label.text = "Terminée"
status_icon.text = "✓"
status_icon.add_theme_color_override("font_color", Color(0.4, 0.9, 0.4))
else:
var total := quest.get_required_objectives().size()
var done := 0
for obj in quest.get_required_objectives():
if obj.is_complete(): done += 1
progress_label.text = "%d/%d objectifs" % [done, total]
status_icon.text = "▶" if done < total else "✓"
status_icon.add_theme_color_override("font_color", Color(0.9, 0.8, 0.4))
pressed.connect(func(): quest_selected.emit(_quest_id))