Always show validation issues (for quests you can edit)
authorLiza Carvelli <liza@carvel.li>
Tue, 16 Jul 2024 08:52:54 +0000 (10:52 +0200)
committerLiza Carvelli <liza@carvel.li>
Tue, 16 Jul 2024 08:52:54 +0000 (10:52 +0200)
Questionable/Controller/QuestRegistry.cs
Questionable/Model/Quest.cs
Questionable/Validation/QuestValidator.cs
Questionable/Windows/QuestWindow.cs

index e0e036302aa5d2512af6e7dd7691ecb79dae53ec..b179b858865d1e7cfd7c3d3f8ecd8fbda0d86d2c 100644 (file)
@@ -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<QuestRegistry> _logger;
 
     private readonly Dictionary<ushort, Quest> _quests = new();
 
-    public QuestRegistry(IDalamudPluginInterface pluginInterface, QuestData questData, IChatGui chatGui,
+    public QuestRegistry(IDalamudPluginInterface pluginInterface, QuestData questData,
         QuestValidator questValidator, ILogger<QuestRegistry> 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<QuestRoot>(stream)!,
             Info = _questData.GetQuestInfo(questId.Value),
+            ReadOnly = false,
         };
         _quests[questId.Value] = quest;
     }
index e70911ae087be6d4cce73100fb07531685c261ce..9bdf6cb52381ac7e7d3088f73a180b8af7d6374f 100644 (file)
@@ -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);
index 83bb9d425ffe20188f34fb400883db773609d5f9..931d8786dfb2a36d8a55e1f1664a7e30db6afaad 100644 (file)
@@ -27,7 +27,7 @@ internal sealed class QuestValidator
 
     public void ClearIssues() => _validationIssues.Clear();
 
-    public void Validate(IReadOnlyCollection<Quest> quests)
+    public void Validate(IEnumerable<Quest> quests)
     {
         Task.Run(() =>
         {
index 2709ab0bb6774f8216a08a2f210fe28b043d884d..92d876813ca718f5c327d956505fef9f13534d83 100644 (file)
@@ -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()