You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.5 KiB
51 lines
1.5 KiB
#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");
|
|
private Label TitleLabel => GetNode<Label>("TitleButton/HBoxContainer/TitleText");
|
|
private TextureRect CircleTexture => GetNode<TextureRect>("TitleButton/Circled");
|
|
private QuestResource? _questResource;
|
|
|
|
public void UpdateButton(QuestResource questResource)
|
|
{
|
|
_questResource = questResource;
|
|
var questStatus = QuestManager.Instance!.GetQuestStatus(_questResource);
|
|
var name = questResource.title;
|
|
|
|
name += questStatus.status switch
|
|
{
|
|
QuestStatus.Status.Done => " \u2713", // Check
|
|
QuestStatus.Status.Canceled => " \u2715", // X
|
|
_ => ""
|
|
};
|
|
|
|
UpdateCircled(questResource == QuestManager.Instance.GetFollowQuest());
|
|
ShowName(name);
|
|
}
|
|
|
|
private void UpdateCircled(bool value)
|
|
{
|
|
CircleTexture.Visible = value;
|
|
}
|
|
|
|
private void ShowName(string questResourceTitle)
|
|
{
|
|
TitleLabel.Text = questResourceTitle;
|
|
}
|
|
|
|
public void ClickedTitleButton()
|
|
{
|
|
var questLog = this.FindParentByType<QuestLog>();
|
|
if (_questResource == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(_questResource), "QuestResource is null");
|
|
}
|
|
questLog.currentDetailQuest = _questResource;
|
|
}
|
|
}
|