diff --git a/Questionable/Controller/QuestRegistry.cs b/Questionable/Controller/QuestRegistry.cs index e0e036302..b179b8588 100644 --- a/Questionable/Controller/QuestRegistry.cs +++ b/Questionable/Controller/QuestRegistry.cs @@ -3,15 +3,11 @@ using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; -using System.Linq; using System.IO; -using System.Numerics; +using System.Linq; using System.Text.Json; -using System.Threading.Tasks; using Dalamud.Plugin; -using Dalamud.Plugin.Services; using Microsoft.Extensions.Logging; -using Questionable.Controller.Utils; using Questionable.Data; using Questionable.Model; using Questionable.Model.V1; @@ -23,18 +19,16 @@ internal sealed class QuestRegistry { private readonly IDalamudPluginInterface _pluginInterface; private readonly QuestData _questData; - private readonly IChatGui _chatGui; private readonly QuestValidator _questValidator; private readonly ILogger _logger; private readonly Dictionary _quests = new(); - public QuestRegistry(IDalamudPluginInterface pluginInterface, QuestData questData, IChatGui chatGui, + public QuestRegistry(IDalamudPluginInterface pluginInterface, QuestData questData, QuestValidator questValidator, ILogger logger) { _pluginInterface = pluginInterface; _questData = questData; - _chatGui = chatGui; _questValidator = questValidator; _logger = logger; } @@ -76,6 +70,7 @@ internal sealed class QuestRegistry QuestId = questId, Root = questRoot, Info = _questData.GetQuestInfo(questId), + ReadOnly = true, }; _quests[questId] = quest; } @@ -111,14 +106,12 @@ internal sealed class QuestRegistry } } - [Conditional("DEBUG")] private void ValidateQuests() { _questValidator.ClearIssues(); - _questValidator.Validate(_quests.Values); + _questValidator.Validate(_quests.Values.Where(x => !x.ReadOnly)); } - private void LoadQuestFromStream(string fileName, Stream stream) { _logger.LogTrace("Loading quest from '{FileName}'", fileName); @@ -131,6 +124,7 @@ internal sealed class QuestRegistry QuestId = questId.Value, Root = JsonSerializer.Deserialize(stream)!, Info = _questData.GetQuestInfo(questId.Value), + ReadOnly = false, }; _quests[questId.Value] = quest; } diff --git a/Questionable/Model/Quest.cs b/Questionable/Model/Quest.cs index e70911ae0..9bdf6cb52 100644 --- a/Questionable/Model/Quest.cs +++ b/Questionable/Model/Quest.cs @@ -8,6 +8,7 @@ internal sealed class Quest public required ushort QuestId { get; init; } public required QuestRoot Root { get; init; } public required QuestInfo Info { get; init; } + public required bool ReadOnly { get; init; } public QuestSequence? FindSequence(byte currentSequence) => Root.QuestSequence.SingleOrDefault(seq => seq.Sequence == currentSequence); diff --git a/Questionable/Validation/QuestValidator.cs b/Questionable/Validation/QuestValidator.cs index 83bb9d425..931d8786d 100644 --- a/Questionable/Validation/QuestValidator.cs +++ b/Questionable/Validation/QuestValidator.cs @@ -27,7 +27,7 @@ internal sealed class QuestValidator public void ClearIssues() => _validationIssues.Clear(); - public void Validate(IReadOnlyCollection quests) + public void Validate(IEnumerable quests) { Task.Run(() => { diff --git a/Questionable/Windows/QuestWindow.cs b/Questionable/Windows/QuestWindow.cs index 2709ab0bb..92d876813 100644 --- a/Questionable/Windows/QuestWindow.cs +++ b/Questionable/Windows/QuestWindow.cs @@ -577,7 +577,6 @@ internal sealed class QuestWindow : LWindow, IPersistableWindowConfig TimeSpan.FromMilliseconds(200)); } -#if DEBUG if (_questRegistry.ValidationIssueCount > 0) { ImGui.SameLine(); @@ -587,7 +586,6 @@ internal sealed class QuestWindow : LWindow, IPersistableWindowConfig $"{_questRegistry.ValidationIssueCount}")) _questValidationWindow.IsOpen = true; } -#endif } private void DrawRemainingTasks()