refactorisation du QuestSystem

This commit is contained in:
mrtoine 2025-10-10 10:46:01 +02:00
parent 2370cb670d
commit 5fa20c954c
11 changed files with 128 additions and 39 deletions

View file

@ -1,6 +1,7 @@
using System.Collections.Generic;
using Core.Runtime;
using Quest.Runtime;
using Quests.Runtime;
using UnityEngine;
namespace Quests.Runtime._.Features.Quests
@ -15,16 +16,20 @@ namespace Quests.Runtime._.Features.Quests
void Start()
{
if (!FactExists<List<QuestClass>>("active_quests", out var _))
if (!FactExists<List<QuestClass>>(SaveKeys.Active, out var _))
{
SetFact<List<QuestClass>>("active_quests", new List<QuestClass>(), FactPersistence.Persistent);
SetFact<List<QuestClass>>(SaveKeys.Active, new List<QuestClass>(), FactPersistence.Persistent);
}
QuestManager.Instance.ActiveQuests = GetFact<List<QuestClass>>("active_quests");
if (!FactExists<List<QuestClass>>("active_quests", out var _))
QuestManager.Instance.ActiveQuests = GetFact<List<QuestClass>>(SaveKeys.Active);
if (!FactExists<List<QuestClass>>(SaveKeys.Completed, out var _))
{
SetFact<List<QuestClass>>("completed_quests", new List<QuestClass>(), FactPersistence.Persistent);
SetFact<List<QuestClass>>(SaveKeys.Completed, new List<QuestClass>(), FactPersistence.Persistent);
}
QuestManager.Instance.CompletedQuests = GetFact<List<QuestClass>>(SaveKeys.Completed);
if (!FactExists<Dictionary<System.Guid, List<QuestEventLog>>>(SaveKeys.EventLogs, out var _))
{
SetFact<Dictionary<System.Guid, List<QuestEventLog>>>(SaveKeys.EventLogs, new Dictionary<System.Guid, List<QuestEventLog>>(), FactPersistence.Persistent);
}
QuestManager.Instance.CompletedQuests = GetFact<List<QuestClass>>("completed_quests");
Invoke(nameof(NotifyLater), 0.1f);
}

View file

@ -72,6 +72,7 @@ namespace Quests.Runtime
public QuestManager()
{
_activeEvents = new List<QuestEvent>();
GameManager.OnTimeAdvanced += CheckMissionsProgress;
}
@ -119,7 +120,7 @@ namespace Quests.Runtime
{
QuestClass quest = GetQuestById(questId);
List<QuestEventLog> events = GetFact<Dictionary<Guid, List<QuestEventLog>>>("events_quests_history")[questId];
List<QuestEventLog> events = GetFact<Dictionary<Guid, List<QuestEventLog>>>(SaveKeys.EventLogs)[questId];
return new QuestSummary(quest, events);
}
@ -137,8 +138,8 @@ namespace Quests.Runtime
/// </summary>
public bool IsQuestCompleted(string questName)
{
return ActiveQuests != null
&& ActiveQuests.Any(q => q.Name == questName && q.State == QuestStateEnum.Completed);
return CompletedQuests != null
&& CompletedQuests.Any(q => q.Name == questName);
}
/// <summary>
@ -207,7 +208,7 @@ namespace Quests.Runtime
void UpdateQuestStatus(QuestClass quest)
{
_activeQuests.Add(quest);
List<QuestClass> saveQuests = GetFact<List<QuestClass>>("quests");
List<QuestClass> saveQuests = GetFact<List<QuestClass>>(SaveKeys.All);
foreach (var saveQuest in saveQuests)
{
if (saveQuest.Name == quest.Name)
@ -242,7 +243,7 @@ namespace Quests.Runtime
_activeQuests.RemoveAll(q => q.Name == quest.Name);
_completedQuests.Add(quest);
List<QuestClass> quests = GetFact<List<QuestClass>>("quests");
List<QuestClass> quests = GetFact<List<QuestClass>>(SaveKeys.All);
QuestClass questToUpdate = quests.FirstOrDefault(q => q.ID == quest.ID);
if (questToUpdate != null)
{
@ -319,7 +320,7 @@ namespace Quests.Runtime
var targets = questEvent.GetTargets(quest.AssignedAdventurersID);
ApplyEffect(questEvent.Effects, targets);
Dictionary<Guid, List<QuestEventLog>> events = GetFact<Dictionary<Guid, List<QuestEventLog>>>("events_quests_history");
Dictionary<Guid, List<QuestEventLog>> events = GetFact<Dictionary<Guid, List<QuestEventLog>>>(SaveKeys.EventLogs);
if(!events.ContainsKey(quest.ID))
{

View file

@ -3,6 +3,7 @@ namespace Quests.Runtime
public enum QuestStateEnum
{
Disponible,
Accepted,
Active,
Completed,
}

View file

@ -0,0 +1,10 @@
namespace Quests.Runtime
{
public static class SaveKeys
{
public const string Active = "active_quests";
public const string Completed = "completed_quests";
public const string All = "quests"; // legacy/misc list if still used elsewhere
public const string EventLogs = "events_quests_history";
}
}