using System;
using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Dalamud.Game.Text;
using Dalamud.Interface.Colors;
using ImGuiNET;
using LLib.ImGui;
using Lumina.Excel.Sheets;
+using Questionable.Controller;
using Questionable.External;
using GrandCompany = FFXIVClientStructs.FFXIV.Client.UI.Agent.GrandCompany;
internal sealed class ConfigWindow : LWindow, IPersistableWindowConfig
{
+ private static readonly List<(uint Id, string Name)> DefaultMounts = [(0, "Mount Roulette")];
+
private readonly IDalamudPluginInterface _pluginInterface;
private readonly NotificationMasterIpc _notificationMasterIpc;
private readonly Configuration _configuration;
+ private readonly CombatController _combatController;
private readonly uint[] _mountIds;
private readonly string[] _mountNames;
private readonly string[] _combatModuleNames = ["None", "Boss Mod (VBM)", "Rotation Solver Reborn"];
+
private readonly string[] _grandCompanyNames =
["None (manually pick quest)", "Maelstrom", "Twin Adder", "Immortal Flames"];
- [SuppressMessage("Performance", "CA1861", Justification = "One time initialization")]
- public ConfigWindow(IDalamudPluginInterface pluginInterface, NotificationMasterIpc notificationMasterIpc, Configuration configuration, IDataManager dataManager)
+ public ConfigWindow(IDalamudPluginInterface pluginInterface,
+ NotificationMasterIpc notificationMasterIpc,
+ Configuration configuration,
+ IDataManager dataManager,
+ CombatController combatController)
: base("Config - Questionable###QuestionableConfig", ImGuiWindowFlags.AlwaysAutoResize)
{
_pluginInterface = pluginInterface;
_notificationMasterIpc = notificationMasterIpc;
_configuration = configuration;
+ _combatController = combatController;
var mounts = dataManager.GetExcelSheet<Mount>()
.Where(x => x is { RowId: > 0, Icon: > 0 })
.Where(x => !string.IsNullOrEmpty(x.Name))
.OrderBy(x => x.Name)
.ToList();
- _mountIds = new uint[] { 0 }.Concat(mounts.Select(x => x.MountId)).ToArray();
- _mountNames = new[] { "Mount Roulette" }.Concat(mounts.Select(x => x.Name)).ToArray();
+ _mountIds = DefaultMounts.Select(x => x.Id).Concat(mounts.Select(x => x.MountId)).ToArray();
+ _mountNames = DefaultMounts.Select(x => x.Name).Concat(mounts.Select(x => x.Name)).ToArray();
}
public WindowConfig WindowConfig => _configuration.ConfigWindowConfig;
if (!tab)
return;
- int selectedCombatModule = (int)_configuration.General.CombatModule;
- if (ImGui.Combo("Preferred Combat Module", ref selectedCombatModule, _combatModuleNames, _combatModuleNames.Length))
+ using (ImRaii.Disabled(_combatController.IsRunning))
{
- _configuration.General.CombatModule = (Configuration.ECombatModule)selectedCombatModule;
- Save();
+ int selectedCombatModule = (int)_configuration.General.CombatModule;
+ if (ImGui.Combo("Preferred Combat Module", ref selectedCombatModule, _combatModuleNames,
+ _combatModuleNames.Length))
+ {
+ _configuration.General.CombatModule = (Configuration.ECombatModule)selectedCombatModule;
+ Save();
+ }
}
int selectedMount = Array.FindIndex(_mountIds, x => x == _configuration.General.MountId);