WIP
This commit is contained in:
@@ -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
|
||||
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user