31 lines
1 KiB
GDScript
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))
|