muffin v7.5.12

This commit is contained in:
alydev 2026-08-19 13:19:57 +10:00
parent 3102923ce2
commit 911ed68baa
65 changed files with 2356 additions and 1539 deletions

View file

@ -125,6 +125,10 @@ internal sealed class AttunementJournalComponent
private readonly QuestData _questData;
private readonly QuestRegistry _questRegistry;
private readonly QuestJournalUtils _questJournalUtils;
private readonly IDataManager _dataManager;
private readonly IDalamudPluginInterface _pluginInterface;
@ -219,11 +223,7 @@ internal sealed class AttunementJournalComponent
private static readonly int CountPadWidth = 9999.ToString(CultureInfo.CurrentCulture).Length;
public Action<string>? SelectTabAction { get; set; }
public QuestChainComponent? QuestChainComponent { get; set; }
public AttunementJournalComponent(AetheryteData aetheryteData, AetherCurrentData aetherCurrentData, AetheryteFunctions aetheryteFunctions, GameFunctions gameFunctions, TerritoryData territoryData, NavRouter navRouter, PlayerNavStateBuilder playerNavStateBuilder, RouteInstructionBuilder instructionBuilder, SmartNavTaskMapper taskMapper, MovementController movementController, AttunementController attunementController, QuestController questController, FateController fateController, SeasonalDutyController seasonalDutyController, CustomDeliveryController customDeliveryController, UiUtils uiUtils, QuestTooltipComponent questTooltipComponent, QuestData questData, IClientState clientState, IObjectTable objectTable, IDataManager dataManager, IDalamudPluginInterface pluginInterface, ILogger<AttunementJournalComponent> logger)
public AttunementJournalComponent(AetheryteData aetheryteData, AetherCurrentData aetherCurrentData, AetheryteFunctions aetheryteFunctions, GameFunctions gameFunctions, TerritoryData territoryData, NavRouter navRouter, PlayerNavStateBuilder playerNavStateBuilder, RouteInstructionBuilder instructionBuilder, SmartNavTaskMapper taskMapper, MovementController movementController, AttunementController attunementController, QuestController questController, FateController fateController, SeasonalDutyController seasonalDutyController, CustomDeliveryController customDeliveryController, UiUtils uiUtils, QuestTooltipComponent questTooltipComponent, QuestData questData, QuestRegistry questRegistry, QuestJournalUtils questJournalUtils, IClientState clientState, IObjectTable objectTable, IDataManager dataManager, IDalamudPluginInterface pluginInterface, ILogger<AttunementJournalComponent> logger)
{
_aetheryteData = aetheryteData;
_aetherCurrentData = aetherCurrentData;
@ -243,6 +243,8 @@ internal sealed class AttunementJournalComponent
_uiUtils = uiUtils;
_questTooltipComponent = questTooltipComponent;
_questData = questData;
_questRegistry = questRegistry;
_questJournalUtils = questJournalUtils;
_clientState = clientState;
_objectTable = objectTable;
_dataManager = dataManager;
@ -727,27 +729,14 @@ internal sealed class AttunementJournalComponent
label.AppendLiteral("##");
label.AppendFormatted(row.Key);
ImGui.Selectable(label);
if (current.QuestId != 0 && ImGui.IsItemHovered() && _questData.TryGetQuestInfo(QuestId.FromRowId(current.QuestId), out IQuestInfo questInfo))
if (current.QuestId != 0 && _questData.TryGetQuestInfo(QuestId.FromRowId(current.QuestId), out IQuestInfo questInfo))
{
_questTooltipComponent.Draw(questInfo);
}
string text = $"##CurrentQuest_{current.AetherCurrentId}";
if (ImGui.IsItemClicked(ImGuiMouseButton.Right))
{
ImGui.OpenPopup(text);
}
ImRaii.PopupDisposable popupDisposable = ImRaii.Popup(text);
try
{
if (popupDisposable.Success && ImGui.MenuItem("View Quest") && current.QuestId != 0)
if (ImGui.IsItemHovered())
{
QuestChainComponent?.SelectQuest(QuestId.FromRowId(current.QuestId));
SelectTabAction?.Invoke("Quest Chain");
_questTooltipComponent.Draw(questInfo);
}
}
finally
{
popupDisposable.Dispose();
_questRegistry.TryGetQuest(questInfo.QuestId, out Questionable.Model.Quest quest);
_questJournalUtils.ShowContextMenu(questInfo, quest, "AttunementJournalComponent");
}
}
else
@ -759,13 +748,13 @@ internal sealed class AttunementJournalComponent
if (!valueOrDefault)
{
AetherCurrentPosition overworldPosition = _aetherCurrentData.GetOverworldPosition(current.AetherCurrentId);
string text2 = $"##AttuneCurrent_{current.AetherCurrentId}";
string text = $"##AttuneCurrent_{current.AetherCurrentId}";
if (ImGui.IsItemClicked(ImGuiMouseButton.Right))
{
ImGui.OpenPopup(text2);
ImGui.OpenPopup(text);
}
using ImRaii.PopupDisposable popupDisposable2 = ImRaii.Popup(text2);
if ((bool)popupDisposable2)
using ImRaii.PopupDisposable popupDisposable = ImRaii.Popup(text);
if ((bool)popupDisposable)
{
bool flag = overworldPosition != null && !IsAnyControllerRunning();
using (ImRaii.Disabled(!flag))

View file

@ -43,6 +43,8 @@ internal sealed class QuestJournalUtils
private long _nextAvailableCountRefreshMs;
public Action? OpenJournal { get; set; }
public QuestJournalUtils(QuestController questController, FateController fateController, SeasonalDutyController seasonalDutyController, CustomDeliveryController customDeliveryController, AttunementController attunementController, QuestFunctions questFunctions, QuestData questData, QuestRegistry questRegistry, QuestChainComponent questChainComponent, IChatGui chatGui, ILogger<QuestJournalUtils> logger)
{
_questController = questController;
@ -89,12 +91,7 @@ internal sealed class QuestJournalUtils
{
if (ImGui.MenuItem("Start as next quest"))
{
_fateController.Stop("Quest journal start");
_seasonalDutyController.Stop("Quest journal start");
_customDeliveryController.Stop("Quest journal start");
_attunementController.Stop("Quest journal start");
_questController.SetNextQuest(quest);
_questController.Start(label);
StartQuestAsNext(quest, label);
}
}
if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled))
@ -138,12 +135,24 @@ internal sealed class QuestJournalUtils
}
if (label != "QuestChainComponent" && ImGui.MenuItem("View in Quest Chain"))
{
OpenJournal?.Invoke();
_questChainComponent.SelectQuest(questInfo.QuestId);
_questChainComponent.SelectTabAction?.Invoke("Quest Chain");
}
return true;
}
public void StartQuestAsNext(Quest quest, string label)
{
string label2 = label + " start";
_fateController.Stop(label2);
_seasonalDutyController.Stop(label2);
_customDeliveryController.Stop(label2);
_attunementController.Stop(label2);
_questController.SetNextQuest(quest);
_questController.Start(label);
}
public unsafe List<ElementId> GetIncompletePrerequisiteQuests(IQuestInfo questInfo)
{
List<ElementId> list = new List<ElementId>();