muffin v7.38.2

This commit is contained in:
alydev 2025-11-19 12:01:37 +10:00
parent 0336b9c9e9
commit bbc394c386
10 changed files with 737 additions and 437 deletions

View file

@ -72,6 +72,18 @@ internal sealed class QuestionableIpc : IDisposable
private const string IpcExportQuestPriority = "Questionable.ExportQuestPriority";
private const string IpcGetDefaultDutyMode = "Questionable.GetDefaultDutyMode";
private const string IpcSetDefaultDutyMode = "Questionable.SetDefaultDutyMode";
private const string IpcGetDutyModeOverride = "Questionable.GetDutyModeOverride";
private const string IpcSetDutyModeOverride = "Questionable.SetDutyModeOverride";
private const string IpcClearDutyModeOverride = "Questionable.ClearDutyModeOverride";
private const string IpcClearAllDutyModeOverrides = "Questionable.ClearAllDutyModeOverrides";
private readonly QuestController _questController;
private readonly QuestRegistry _questRegistry;
@ -80,6 +92,10 @@ internal sealed class QuestionableIpc : IDisposable
private readonly ManualPriorityComponent _manualPriorityComponent;
private readonly Configuration _configuration;
private readonly IDalamudPluginInterface _pluginInterface;
private readonly ICallGateProvider<bool> _isRunning;
private readonly ICallGateProvider<string?> _getCurrentQuestId;
@ -114,13 +130,27 @@ internal sealed class QuestionableIpc : IDisposable
private readonly ICallGateProvider<string> _exportQuestPriority;
public QuestionableIpc(QuestController questController, EventInfoComponent eventInfoComponent, QuestRegistry questRegistry, QuestFunctions questFunctions, ManualPriorityComponent manualPriorityComponent, IDalamudPluginInterface pluginInterface)
private readonly ICallGateProvider<int> _getDefaultDutyMode;
private readonly ICallGateProvider<int, bool> _setDefaultDutyMode;
private readonly ICallGateProvider<uint, int> _getDutyModeOverride;
private readonly ICallGateProvider<uint, int, bool> _setDutyModeOverride;
private readonly ICallGateProvider<uint, bool> _clearDutyModeOverride;
private readonly ICallGateProvider<bool> _clearAllDutyModeOverrides;
public QuestionableIpc(QuestController questController, EventInfoComponent eventInfoComponent, QuestRegistry questRegistry, QuestFunctions questFunctions, ManualPriorityComponent manualPriorityComponent, Configuration configuration, IDalamudPluginInterface pluginInterface)
{
QuestionableIpc questionableIpc = this;
_questController = questController;
_questRegistry = questRegistry;
_questFunctions = questFunctions;
_manualPriorityComponent = manualPriorityComponent;
_configuration = configuration;
_pluginInterface = pluginInterface;
_isRunning = pluginInterface.GetIpcProvider<bool>("Questionable.IsRunning");
_isRunning.RegisterFunc(() => questController.AutomationType != QuestController.EAutomationType.Manual || questController.IsRunning);
_getCurrentQuestId = pluginInterface.GetIpcProvider<string>("Questionable.GetCurrentQuestId");
@ -156,6 +186,18 @@ internal sealed class QuestionableIpc : IDisposable
_insertQuestPriority.RegisterFunc(InsertQuestPriority);
_exportQuestPriority = pluginInterface.GetIpcProvider<string>("Questionable.ExportQuestPriority");
_exportQuestPriority.RegisterFunc(_manualPriorityComponent.EncodeQuestPriority);
_getDefaultDutyMode = pluginInterface.GetIpcProvider<int>("Questionable.GetDefaultDutyMode");
_getDefaultDutyMode.RegisterFunc(GetDefaultDutyMode);
_setDefaultDutyMode = pluginInterface.GetIpcProvider<int, bool>("Questionable.SetDefaultDutyMode");
_setDefaultDutyMode.RegisterFunc(SetDefaultDutyMode);
_getDutyModeOverride = pluginInterface.GetIpcProvider<uint, int>("Questionable.GetDutyModeOverride");
_getDutyModeOverride.RegisterFunc(GetDutyModeOverride);
_setDutyModeOverride = pluginInterface.GetIpcProvider<uint, int, bool>("Questionable.SetDutyModeOverride");
_setDutyModeOverride.RegisterFunc(SetDutyModeOverride);
_clearDutyModeOverride = pluginInterface.GetIpcProvider<uint, bool>("Questionable.ClearDutyModeOverride");
_clearDutyModeOverride.RegisterFunc(ClearDutyModeOverride);
_clearAllDutyModeOverrides = pluginInterface.GetIpcProvider<bool>("Questionable.ClearAllDutyModeOverrides");
_clearAllDutyModeOverrides.RegisterFunc(ClearAllDutyModeOverrides);
}
private bool StartQuest(string questId, bool single)
@ -296,8 +338,67 @@ internal sealed class QuestionableIpc : IDisposable
return true;
}
private int GetDefaultDutyMode()
{
return (int)_configuration.Duties.DefaultDutyMode;
}
private bool SetDefaultDutyMode(int dutyMode)
{
if (!Enum.IsDefined(typeof(EDutyMode), dutyMode))
{
return false;
}
_configuration.Duties.DefaultDutyMode = (EDutyMode)dutyMode;
_pluginInterface.SavePluginConfig(_configuration);
return true;
}
private int GetDutyModeOverride(uint contentFinderConditionId)
{
if (_configuration.Duties.DutyModeOverrides.TryGetValue(contentFinderConditionId, out var value))
{
return (int)value;
}
return -1;
}
private bool SetDutyModeOverride(uint contentFinderConditionId, int dutyMode)
{
if (!Enum.IsDefined(typeof(EDutyMode), dutyMode))
{
return false;
}
_configuration.Duties.DutyModeOverrides[contentFinderConditionId] = (EDutyMode)dutyMode;
_pluginInterface.SavePluginConfig(_configuration);
return true;
}
private bool ClearDutyModeOverride(uint contentFinderConditionId)
{
bool num = _configuration.Duties.DutyModeOverrides.Remove(contentFinderConditionId);
if (num)
{
_pluginInterface.SavePluginConfig(_configuration);
}
return num;
}
private bool ClearAllDutyModeOverrides()
{
_configuration.Duties.DutyModeOverrides.Clear();
_pluginInterface.SavePluginConfig(_configuration);
return true;
}
public void Dispose()
{
_clearAllDutyModeOverrides.UnregisterFunc();
_clearDutyModeOverride.UnregisterFunc();
_setDutyModeOverride.UnregisterFunc();
_getDutyModeOverride.UnregisterFunc();
_setDefaultDutyMode.UnregisterFunc();
_getDefaultDutyMode.UnregisterFunc();
_exportQuestPriority.UnregisterFunc();
_insertQuestPriority.UnregisterFunc();
_clearQuestPriority.UnregisterFunc();