This commit is contained in:
cblech
2025-06-16 20:45:09 +02:00
parent d754d0509f
commit fad86e0331
8 changed files with 184 additions and 9 deletions
@@ -0,0 +1,22 @@
using Godot;
using System;
using Babushka.scripts.CSharp.Common.Quest;
public partial class PopUpPostIt : Control
{
private Label Text => GetNode<Label>("Text");
private AnimationPlayer Animation => GetNode<AnimationPlayer>("AnimationPlayer");
QuestManager QM => QuestManager.Instance!;
public override void _EnterTree()
{
QM.QuestBecomesActive += NewQuestPostIt;
}
private void NewQuestPostIt(QuestResource questResource)
{
Text.Text = questResource.title;
Animation.Play("NewPostit");
}
}
@@ -0,0 +1 @@
uid://byar6yqrlph6k
+9 -1
View File
@@ -8,7 +8,10 @@ namespace Babushka.scripts.CSharp.Common.Quest;
using QuestPair = KeyValuePair<QuestResource, QuestStatus>;
public partial class QuestManager : Node
{
public static QuestManager Instance { get; private set; }
public static QuestManager? Instance { get; private set; }
[Signal]
public delegate void QuestBecomesActiveEventHandler(QuestResource questResource);
public override void _EnterTree()
{
@@ -27,6 +30,11 @@ public partial class QuestManager : Node
}
value.status = newStatus;
if (newStatus == QuestStatus.Status.Active)
{
EmitSignalQuestBecomesActive(questResource);
}
}
public IEnumerable<QuestPair> GetVisibleQuests()
+7 -1
View File
@@ -5,13 +5,19 @@ using Babushka.scripts.CSharp.Common.Quest;
public partial class QuestTrigger : Node
{
[Export]
public QuestResource questResource;
public QuestResource? questResource;
[Export]
public QuestStatus.Status toStatus;
public void Trigger()
{
if(questResource== null)
throw new Exception("QuestResource is not set on QuestTrigger node.");
if(QuestManager.Instance == null)
throw new Exception("QuestManager instance is not available. Make sure it is initialized before calling Trigger.");
QuestManager.Instance.ChangeQuestStatus(questResource, toStatus);
}
}