Files
Babushka/scripts/CSharp/Common/Quest/QuestListItemUi.cs
T

51 lines
1.5 KiB
C#
Raw Normal View History

2025-07-07 04:40:40 +02:00
#nullable enable
using System;
using Babushka.scripts.CSharp.Common.Util;
using Godot;
namespace Babushka.scripts.CSharp.Common.Quest;
public partial class QuestListItemUi : Control
{
private Button TitleButton => GetNode<Button>("TitleButton");
2025-07-07 04:41:14 +02:00
private Label TitleLabel => GetNode<Label>("TitleButton/HBoxContainer/TitleText");
private TextureRect CircleTexture => GetNode<TextureRect>("TitleButton/Circled");
2025-07-07 04:40:40 +02:00
private QuestResource? _questResource;
public void UpdateButton(QuestResource questResource)
{
_questResource = questResource;
2025-07-07 04:41:03 +02:00
var questStatus = QuestManager.Instance!.GetQuestStatus(_questResource);
var name = questResource.title;
name += questStatus.status switch
{
QuestStatus.Status.Done => " \u2713", // Check
QuestStatus.Status.Canceled => " \u2715", // X
_ => ""
};
2025-07-07 04:41:14 +02:00
UpdateCircled(questResource == QuestManager.Instance.GetFollowQuest());
2025-07-07 04:41:03 +02:00
ShowName(name);
2025-07-07 04:40:40 +02:00
}
2025-08-13 03:23:45 +02:00
2025-07-07 04:41:14 +02:00
private void UpdateCircled(bool value)
{
CircleTexture.Visible = value;
}
2025-07-07 04:40:40 +02:00
private void ShowName(string questResourceTitle)
{
2025-07-07 04:41:14 +02:00
TitleLabel.Text = questResourceTitle;
2025-07-07 04:40:40 +02:00
}
public void ClickedTitleButton()
{
var questLog = this.FindParentByType<QuestLog>();
if (_questResource == null)
{
throw new ArgumentNullException(nameof(_questResource), "QuestResource is null");
}
questLog.currentDetailQuest = _questResource;
}
}