qstcompanion v1.0.6

This commit is contained in:
alydev 2025-12-07 10:54:53 +10:00
parent 5e1e1decc5
commit ada27cf05b
30 changed files with 3403 additions and 426 deletions

View file

@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using Dalamud.Plugin.Services;
using Newtonsoft.Json.Linq;
@ -28,6 +27,8 @@ public class SubmarineManager : IDisposable
private bool submarinesPaused;
private bool externalPause;
private bool submarinesWaitingForSeq0;
private bool submarineReloginInProgress;
@ -36,7 +37,17 @@ public class SubmarineManager : IDisposable
private string? originalCharacterForSubmarines;
public bool IsSubmarinePaused => submarinesPaused;
public bool IsSubmarinePaused
{
get
{
if (!submarinesPaused)
{
return externalPause;
}
return true;
}
}
public bool IsWaitingForSequence0 => submarinesWaitingForSeq0;
@ -44,6 +55,12 @@ public class SubmarineManager : IDisposable
public bool IsSubmarineJustCompleted => submarineJustCompleted;
public void SetExternalPause(bool paused)
{
externalPause = paused;
log.Information($"[SubmarineManager] External pause set to: {paused}");
}
public SubmarineManager(IPluginLog log, AutoRetainerIPC autoRetainerIPC, Configuration config, ICommandManager? commandManager = null, IFramework? framework = null)
{
this.log = log;
@ -88,7 +105,7 @@ public class SubmarineManager : IDisposable
public bool CheckSubmarines()
{
if (!config.EnableSubmarineCheck)
if (!config.EnableSubmarineCheck || externalPause)
{
return false;
}
@ -154,7 +171,7 @@ public class SubmarineManager : IDisposable
public int CheckSubmarinesSoon()
{
if (!config.EnableSubmarineCheck)
if (!config.EnableSubmarineCheck || externalPause)
{
return 0;
}
@ -230,25 +247,39 @@ public class SubmarineManager : IDisposable
{
JObject json = JObject.Parse(jsonContent);
HashSet<string> enabledSubs = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
if (json.SelectTokens("$..EnabledSubs").FirstOrDefault() is JArray enabledSubsArray)
IEnumerable<JToken> enumerable = json.SelectTokens("$..EnabledSubs");
int arrayCount = 0;
foreach (JToken item in enumerable)
{
foreach (JToken item in enabledSubsArray)
if (!(item is JArray enabledSubsArray))
{
string subName = item.Value<string>();
continue;
}
arrayCount++;
foreach (JToken item2 in enabledSubsArray)
{
string subName = item2.Value<string>();
if (!string.IsNullOrEmpty(subName))
{
enabledSubs.Add(subName);
}
}
}
if (arrayCount > 0)
{
if (enabledSubs.Count > 0)
{
log.Information($"[SubmarineManager] Found {enabledSubs.Count} enabled submarines: {string.Join(", ", enabledSubs)}");
log.Information($"[SubmarineManager] Found {enabledSubs.Count} unique submarine name(s) across {arrayCount} character(s): {string.Join(", ", enabledSubs)}");
}
else
{
log.Information("[SubmarineManager] EnabledSubs array found but empty - NO submarines will be checked");
log.Information($"[SubmarineManager] Found {arrayCount} EnabledSubs array(s) but all empty - NO submarines will be checked");
}
FindReturnTimes(json, returnTimes, enabledSubs);
if (returnTimes.Count > 0)
{
log.Information($"[SubmarineManager] Total submarines to monitor: {returnTimes.Count} (including same-named subs from different characters)");
}
}
else
{
@ -281,10 +312,6 @@ public class SubmarineManager : IDisposable
{
long returnTime = returnTimeToken.Value<long>();
returnTimes.Add(returnTime);
if (enabledSubs != null)
{
log.Debug($"[SubmarineManager] Including submarine '{submarineName}' (ReturnTime: {returnTime})");
}
}
}
{