quest status name refactoring

feature/implement_quests
jonathan 5 months ago
parent 8676bbb2f6
commit 03dbc08293

@ -9,7 +9,7 @@ var quest_resource: String
func _execute() -> void: func _execute() -> void:
var resource = ResourceLoader.load(quest_resource) var resource = ResourceLoader.load(quest_resource)
QuestManager.ChangeQuestStatus(resource,QuestEventUtils.QuestStatus.AVAILABLE) QuestManager.ChangeQuestStatus(resource,QuestEventUtils.QuestStatus.AVAILABLE)
QuestManager.SetFollowQuest(resource) QuestManager.SetActiveQuest(resource)
finish() # called to continue with the next event finish() # called to continue with the next event

@ -9,7 +9,7 @@ var quest_resource: String
func _execute() -> void: func _execute() -> void:
var resource = ResourceLoader.load(quest_resource) var resource = ResourceLoader.load(quest_resource)
QuestManager.ChangeQuestStatus(resource,QuestEventUtils.QuestStatus.DONE) QuestManager.ChangeQuestStatus(resource,QuestEventUtils.QuestStatus.DONE)
QuestManager.SetFollowQuest(null) QuestManager.SetActiveQuest(null)
finish() # called to continue with the next event finish() # called to continue with the next event

@ -23,9 +23,9 @@ func _execute() -> void:
var result: bool var result: bool
if compare_status == QuestEventUtils.QuestStatusOrActive.ACTIVE: if compare_status == QuestEventUtils.QuestStatusOrActive.ACTIVE:
result = QuestManager.GetFollowQuest() == resource result = QuestManager.GetActiveQuest() == resource
elif compare_status == QuestEventUtils.QuestStatusOrActive.NOT_ACTIVE: elif compare_status == QuestEventUtils.QuestStatusOrActive.NOT_ACTIVE:
result = QuestManager.GetFollowQuest() != resource result = QuestManager.GetActiveQuest() != resource
else: else:
result = QuestManager.GetQuestStatus(resource).status == compare_status result = QuestManager.GetQuestStatus(resource).status == compare_status

@ -2381,17 +2381,17 @@ script = ExtResource("40_w3jkj")
script = ExtResource("66_2065p") script = ExtResource("66_2065p")
questResource = ExtResource("67_tm0yg") questResource = ExtResource("67_tm0yg")
toStatus = 1 toStatus = 1
makeCurrent = true makeActive = true
[node name="ToolsCollectedTrigger" type="Node" parent="SpeicialQuestTrigger"] [node name="ToolsCollectedTrigger" type="Node" parent="SpeicialQuestTrigger"]
script = ExtResource("68_hux6i") script = ExtResource("68_hux6i")
_itemsToContain = Array[Resource]([SubResource("Resource_y820s"), SubResource("Resource_50loj")]) _itemsToContain = Array[Resource]([SubResource("Resource_y820s"), SubResource("Resource_50loj")])
_onActiveQuest = ExtResource("68_lbnqo") _onAvailableQuest = ExtResource("68_lbnqo")
_toNextQuest = ExtResource("69_l4wxt") _toNextQuest = ExtResource("69_l4wxt")
[node name="FieldWorkTrigger" type="Node" parent="SpeicialQuestTrigger"] [node name="FieldWorkTrigger" type="Node" parent="SpeicialQuestTrigger"]
script = ExtResource("74_fv1t2") script = ExtResource("74_fv1t2")
_onActiveQuest = ExtResource("75_l7ekk") _onAvailableQuest = ExtResource("75_l7ekk")
_toNextQuest = ExtResource("76_xcwle") _toNextQuest = ExtResource("76_xcwle")
[node name="StartDialog" type="Node" parent="SpeicialQuestTrigger/FieldWorkTrigger"] [node name="StartDialog" type="Node" parent="SpeicialQuestTrigger/FieldWorkTrigger"]

@ -2186,7 +2186,7 @@ script = ExtResource("56_bjj0f")
script = ExtResource("55_ub0r7") script = ExtResource("55_ub0r7")
questResource = ExtResource("56_q833x") questResource = ExtResource("56_q833x")
toStatus = 1 toStatus = 1
makeCurrent = true makeActive = true
[connection signal="body_entered" from="Fight1/FightStarter/TriggerArea" to="Fight1/FightStarter" method="Start"] [connection signal="body_entered" from="Fight1/FightStarter/TriggerArea" to="Fight1/FightStarter" method="Start"]
[connection signal="FightEnded" from="Fight1/FightBaseScene" to="YSorted/Vesna" method="show"] [connection signal="FightEnded" from="Fight1/FightBaseScene" to="YSorted/Vesna" method="show"]

@ -563,7 +563,7 @@ script = ExtResource("17_k0k8c")
script = ExtResource("21_blyw3") script = ExtResource("21_blyw3")
questResource = ExtResource("22_yd2gv") questResource = ExtResource("22_yd2gv")
toStatus = 1 toStatus = 1
makeCurrent = true makeActive = true
[node name="Camera2D" type="Camera2D" parent="." node_paths=PackedStringArray("_followNode")] [node name="Camera2D" type="Camera2D" parent="." node_paths=PackedStringArray("_followNode")]
position = Vector2(-1534, -26) position = Vector2(-1534, -26)

@ -18,7 +18,7 @@ text = "Start Quest 1"
script = ExtResource("1_wnfrg") script = ExtResource("1_wnfrg")
questResource = ExtResource("2_nud5h") questResource = ExtResource("2_nud5h")
toStatus = 1 toStatus = 1
makeCurrent = true makeActive = true
[node name="Button2" type="Button" parent="."] [node name="Button2" type="Button" parent="."]
offset_left = 460.0 offset_left = 460.0
@ -43,7 +43,7 @@ text = "Start Quest 2"
script = ExtResource("1_wnfrg") script = ExtResource("1_wnfrg")
questResource = ExtResource("3_tb5fn") questResource = ExtResource("3_tb5fn")
toStatus = 1 toStatus = 1
makeCurrent = true makeActive = true
[node name="Button4" type="Button" parent="."] [node name="Button4" type="Button" parent="."]
offset_left = 460.0 offset_left = 460.0

@ -41,7 +41,7 @@ text = "Active"
script = ExtResource("3_sx4ix") script = ExtResource("3_sx4ix")
questResource = ExtResource("4_qyyck") questResource = ExtResource("4_qyyck")
toStatus = 1 toStatus = 1
makeCurrent = true makeActive = true
[node name="Done" type="Button" parent="CanvasLayer2/VBoxContainer/HBoxContainer"] [node name="Done" type="Button" parent="CanvasLayer2/VBoxContainer/HBoxContainer"]
layout_mode = 2 layout_mode = 2

@ -1,22 +0,0 @@
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");
}
}

@ -24,7 +24,7 @@ public partial class QuestListItemUi : Control
_ => "" _ => ""
}; };
UpdateCircled(questResource == QuestManager.Instance.GetFollowQuest()); UpdateCircled(questResource == QuestManager.Instance.GetActiveQuest());
ShowName(name); ShowName(name);
} }

@ -17,10 +17,10 @@ public partial class QuestLog : Control
public QuestResource? currentDetailQuest public QuestResource? currentDetailQuest
{ {
get => QuestManager.Instance!.GetFollowQuest(); get => QuestManager.Instance!.GetActiveQuest();
set set
{ {
QuestManager.Instance!.SetFollowQuest(value); // TODO: fix setup QuestManager.Instance!.SetActiveQuest(value); // TODO: fix setup
EmitSignalDetailQuestChanged(this); EmitSignalDetailQuestChanged(this);
} }
} }

@ -11,7 +11,7 @@ public partial class QuestManager : Node
public static QuestManager? Instance { get; private set; } public static QuestManager? Instance { get; private set; }
[Signal] [Signal]
public delegate void QuestBecomesActiveEventHandler(QuestResource questResource); public delegate void QuestBecomesAvailableEventHandler(QuestResource questResource);
[Signal] [Signal]
public delegate void QuestsChangedEventHandler(); public delegate void QuestsChangedEventHandler();
@ -26,7 +26,7 @@ public partial class QuestManager : Node
private Godot.Collections.Dictionary<QuestResource, QuestStatus> _questStatus = new(); private Godot.Collections.Dictionary<QuestResource, QuestStatus> _questStatus = new();
private QuestResource? _followQuest; private QuestResource? _activeQuest;
public void ChangeQuestStatus(QuestResource questResource, QuestStatus.Status newStatus) public void ChangeQuestStatus(QuestResource questResource, QuestStatus.Status newStatus)
@ -40,11 +40,11 @@ public partial class QuestManager : Node
value.status = newStatus; value.status = newStatus;
EmitSignalQuestsChanged(); EmitSignalQuestsChanged();
EmitSignalDialogicActiveQuest(_followQuest?.id ?? "none"); EmitSignalDialogicActiveQuest(_activeQuest?.id ?? "none");
if (newStatus == QuestStatus.Status.Active) if (newStatus == QuestStatus.Status.Available)
{ {
EmitSignalQuestBecomesActive(questResource); EmitSignalQuestBecomesAvailable(questResource);
} }
} }
@ -53,9 +53,9 @@ public partial class QuestManager : Node
return _questStatus.Where(qs => qs.Value.status != QuestStatus.Status.Hidden); return _questStatus.Where(qs => qs.Value.status != QuestStatus.Status.Hidden);
} }
public IEnumerable<QuestPair> GetActiveQuests() public IEnumerable<QuestPair> GetAvailableQuests()
{ {
return _questStatus.Where(qs => qs.Value.status == QuestStatus.Status.Active); return _questStatus.Where(qs => qs.Value.status == QuestStatus.Status.Available);
} }
public QuestStatus GetQuestStatus(QuestResource questResource) public QuestStatus GetQuestStatus(QuestResource questResource)
{ {
@ -67,15 +67,15 @@ public partial class QuestManager : Node
return status; return status;
} }
public QuestResource? GetFollowQuest() public QuestResource? GetActiveQuest()
{ {
return _followQuest; return _activeQuest;
} }
public void SetFollowQuest(QuestResource? questResource) public void SetActiveQuest(QuestResource? questResource)
{ {
_followQuest = questResource; _activeQuest = questResource;
EmitSignalQuestsChanged(); EmitSignalQuestsChanged();
EmitSignalDialogicActiveQuest(_followQuest?.id ?? "none"); EmitSignalDialogicActiveQuest(_activeQuest?.id ?? "none");
} }
} }

@ -30,7 +30,7 @@ public partial class QuestMessagePopup : Control
private void NewActiveQuest() private void NewActiveQuest()
{ {
var shownQuest = QuestManager.Instance!.GetFollowQuest(); var shownQuest = QuestManager.Instance!.GetActiveQuest();
if (_currentlyShown == shownQuest) if (_currentlyShown == shownQuest)
return; return;

@ -6,7 +6,7 @@ public partial class QuestResource : Resource
{ {
[Export] [Export]
public string id = ""; public string id = "";
[Export] [Export(PropertyHint.MultilineText)]
public string title = ""; public string title = "";
[Export(PropertyHint.MultilineText)] [Export(PropertyHint.MultilineText)]
public string description = ""; public string description = "";

@ -7,7 +7,7 @@ public partial class QuestStatus : GodotObject
public enum Status public enum Status
{ {
Hidden = 0, Hidden = 0,
Active = 1, Available = 1,
Done = 2, Done = 2,
Canceled = 3, Canceled = 3,
} }

@ -8,15 +8,15 @@ using Godot.Collections;
public partial class QuestTestingScript : Node public partial class QuestTestingScript : Node
{ {
[Export(PropertyHint.ArrayType)] [Export(PropertyHint.ArrayType)]
private Array<QuestResource>? _questsToActivate; private Array<QuestResource>? _questsToMakeAvailable;
public override void _EnterTree() public override void _EnterTree()
{ {
Debug.Assert(_questsToActivate != null); Debug.Assert(_questsToMakeAvailable != null);
foreach (var questResource in _questsToActivate) foreach (var questResource in _questsToMakeAvailable)
{ {
QuestManager.Instance!.ChangeQuestStatus(questResource, QuestStatus.Status.Active); QuestManager.Instance!.ChangeQuestStatus(questResource, QuestStatus.Status.Available);
} }
} }
} }

@ -4,14 +4,11 @@ using Babushka.scripts.CSharp.Common.Quest;
public partial class QuestTrigger : Node public partial class QuestTrigger : Node
{ {
[Export] [Export] public QuestResource? questResource;
public QuestResource? questResource;
[Export] [Export] public QuestStatus.Status toStatus;
public QuestStatus.Status toStatus;
[Export] [Export] private bool makeActive = false;
private bool makeCurrent = false;
public void Trigger() public void Trigger()
{ {
@ -21,13 +18,14 @@ public partial class QuestTrigger : Node
throw new Exception("QuestResource is not set on QuestTrigger node."); throw new Exception("QuestResource is not set on QuestTrigger node.");
if (QuestManager.Instance == null) if (QuestManager.Instance == null)
throw new Exception("QuestManager instance is not available. Make sure it is initialized before calling Trigger."); throw new Exception(
"QuestManager instance is not available. Make sure it is initialized before calling Trigger.");
QuestManager.Instance.ChangeQuestStatus(questResource, toStatus); QuestManager.Instance.ChangeQuestStatus(questResource, toStatus);
if (makeCurrent) if (makeActive)
{ {
QuestManager.Instance.SetFollowQuest(questResource); QuestManager.Instance.SetActiveQuest(questResource);
} }
} }
} }

@ -11,28 +11,28 @@ using Babushka.scripts.CSharp.Common.Quest;
/// </summary> /// </summary>
public abstract partial class QuestFulfillmentBase : Node public abstract partial class QuestFulfillmentBase : Node
{ {
[Export] private QuestResource _onActiveQuest; [Export] private QuestResource _onAvailableQuest = null!;
[Export] private QuestResource _toNextQuest; [Export] private QuestResource _toNextQuest = null!;
[Export] private bool _whenFulfilledSetActiveQuestToDone = true; [Export] private bool _whenFulfilledSetAvailableQuestToDone = true;
[Export] private bool _whenFulfilledSetNextQuestToAvailable = true;
[Export] private bool _whenFulfilledSetNextQuestToActive = true; [Export] private bool _whenFulfilledSetNextQuestToActive = true;
[Export] private bool _whenFulfilledSetNextQuestToFollow = true;
[Signal] private delegate void OnFulfilledEventHandler(); [Signal] private delegate void OnFulfilledEventHandler();
protected void Fulfill() protected void Fulfill()
{ {
if (_whenFulfilledSetActiveQuestToDone) if (_whenFulfilledSetAvailableQuestToDone)
{ {
QuestManager.Instance!.ChangeQuestStatus(_onActiveQuest, QuestStatus.Status.Done); QuestManager.Instance!.ChangeQuestStatus(_onAvailableQuest, QuestStatus.Status.Done);
} }
if (_whenFulfilledSetNextQuestToActive) if (_whenFulfilledSetNextQuestToAvailable)
{ {
QuestManager.Instance!.ChangeQuestStatus(_toNextQuest, QuestStatus.Status.Active); QuestManager.Instance!.ChangeQuestStatus(_toNextQuest, QuestStatus.Status.Available);
} }
if (_whenFulfilledSetNextQuestToFollow) if (_whenFulfilledSetNextQuestToActive)
{ {
QuestManager.Instance!.SetFollowQuest(_toNextQuest); QuestManager.Instance!.SetActiveQuest(_toNextQuest);
} }
EmitSignalOnFulfilled(); EmitSignalOnFulfilled();
@ -40,6 +40,6 @@ public abstract partial class QuestFulfillmentBase : Node
protected bool IsQuestActive() protected bool IsQuestActive()
{ {
return QuestManager.Instance!.GetActiveQuests().Any(q => q.Key == _onActiveQuest); return QuestManager.Instance!.GetAvailableQuests().Any(q => q.Key == _onAvailableQuest);
} }
} }

Loading…
Cancel
Save