Added first quests
This commit is contained in:
@@ -6,7 +6,7 @@ public partial class TalkingCharacter : Node2D
|
||||
{
|
||||
[Export] private AnimatedSprite2D? _sprite;
|
||||
[Export] private string[] _timelinesToPlay;
|
||||
|
||||
[Export] private bool _retriggerSameTimeline = false;
|
||||
|
||||
private bool _isTalking = true;
|
||||
private int _timelineIndex = 0;
|
||||
@@ -32,7 +32,8 @@ public partial class TalkingCharacter : Node2D
|
||||
_sprite.Animation = "talk";
|
||||
_isTalking = true;
|
||||
EmitSignal(SignalName.Talking, _timelinesToPlay[_timelineIndex]);
|
||||
_timelineIndex++;
|
||||
if (!_retriggerSameTimeline)
|
||||
_timelineIndex++;
|
||||
}
|
||||
if (_sprite != null)
|
||||
_sprite.Play();
|
||||
|
||||
@@ -16,13 +16,19 @@ public partial class QuestManager : Node
|
||||
[Signal]
|
||||
public delegate void QuestsChangedEventHandler();
|
||||
|
||||
[Signal]
|
||||
public delegate void DialogicActiveQuestEventHandler(string value);
|
||||
|
||||
[Export(PropertyHint.ArrayType)]
|
||||
public QuestResource[] questsAccessibleFromDialogic;
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
Instance = this;
|
||||
}
|
||||
|
||||
private Godot.Collections.Dictionary<QuestResource, QuestStatus> _questStatus = new();
|
||||
|
||||
|
||||
private QuestResource? _followQuest;
|
||||
|
||||
|
||||
@@ -37,6 +43,7 @@ public partial class QuestManager : Node
|
||||
value.status = newStatus;
|
||||
|
||||
EmitSignalQuestsChanged();
|
||||
EmitSignalDialogicActiveQuest(_followQuest?.id ?? "none");
|
||||
|
||||
if (newStatus == QuestStatus.Status.Active)
|
||||
{
|
||||
@@ -57,7 +64,7 @@ public partial class QuestManager : Node
|
||||
{
|
||||
if (_questStatus.TryGetValue(questResource, out var status))
|
||||
return status;
|
||||
|
||||
|
||||
status = new QuestStatus();
|
||||
_questStatus.Add(questResource, status);
|
||||
return status;
|
||||
@@ -72,5 +79,14 @@ public partial class QuestManager : Node
|
||||
{
|
||||
_followQuest = questResource;
|
||||
EmitSignalQuestsChanged();
|
||||
EmitSignalDialogicActiveQuest(_followQuest?.id ?? "none");
|
||||
}
|
||||
|
||||
// functions to call from Dialogic
|
||||
public void DlSetQuestActiveAndFollow(string questId)
|
||||
{
|
||||
var resource = questsAccessibleFromDialogic.First(qr => qr.id == questId);
|
||||
ChangeQuestStatus(resource, QuestStatus.Status.Active);
|
||||
SetFollowQuest(resource);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,10 +6,10 @@ public partial class QuestStatus : GodotObject
|
||||
{
|
||||
public enum Status
|
||||
{
|
||||
Hidden,
|
||||
Active,
|
||||
Done,
|
||||
Canceled,
|
||||
Hidden = 0,
|
||||
Active = 1,
|
||||
Done = 2,
|
||||
Canceled = 3,
|
||||
}
|
||||
|
||||
public Status status = Status.Hidden;
|
||||
|
||||
Reference in New Issue
Block a user