using Questionable.Data;
using Questionable.Functions;
using Questionable.Model;
+using Questionable.Model.Questing;
using Questionable.Windows.QuestComponents;
namespace Questionable.Windows.JournalComponents;
private readonly UiUtils _uiUtils;
private readonly QuestTooltipComponent _questTooltipComponent;
private readonly IDalamudPluginInterface _pluginInterface;
+ private readonly QuestController _questController;
private readonly ICommandManager _commandManager;
private List<FilteredSection> _filteredSections = [];
public QuestJournalComponent(JournalData journalData, QuestRegistry questRegistry, QuestFunctions questFunctions,
UiUtils uiUtils, QuestTooltipComponent questTooltipComponent, IDalamudPluginInterface pluginInterface,
- ICommandManager commandManager)
+ QuestController questController, ICommandManager commandManager)
{
_journalData = journalData;
_questRegistry = questRegistry;
_uiUtils = uiUtils;
_questTooltipComponent = questTooltipComponent;
_pluginInterface = pluginInterface;
+ _questController = questController;
_commandManager = commandManager;
}
ImGui.TableNextRow();
ImGui.TableNextColumn();
- ImGui.TreeNodeEx(questInfo.Name,
+ ImGui.TreeNodeEx($"{questInfo.Name} ({questInfo.QuestId})",
ImGuiTreeNodeFlags.Leaf | ImGuiTreeNodeFlags.NoTreePushOnOpen | ImGuiTreeNodeFlags.SpanFullWidth);
- if (questInfo is QuestInfo && ImGui.IsItemClicked() &&
- _commandManager.Commands.TryGetValue("/questinfo", out var commandInfo))
- {
- _commandManager.DispatchCommand("/questinfo", questInfo.QuestId.ToString() ?? string.Empty, commandInfo);
- }
-
if (ImGui.IsItemHovered())
_questTooltipComponent.Draw(questInfo);
+ if (ImGui.BeginPopupContextItem($"##QuestPopup{questInfo.QuestId}", ImGuiPopupFlags.MouseButtonRight))
+ {
+ if (ImGui.MenuItem("Start as next quest", _questFunctions.IsReadyToAcceptQuest(questInfo.QuestId)))
+ {
+ _questController.SetNextQuest(quest);
+ _questController.Start("SeasonalEventSelection");
+ }
+
+ bool openInQuestMap = _commandManager.Commands.TryGetValue("/questinfo", out var commandInfo);
+ if (ImGui.MenuItem("View in Quest Map", questInfo.QuestId is QuestId && openInQuestMap))
+ {
+ _commandManager.DispatchCommand("/questinfo", questInfo.QuestId.ToString() ?? string.Empty, commandInfo!);
+ }
+
+ ImGui.EndPopup();
+ }
+
ImGui.TableNextColumn();
float spacing;
// ReSharper disable once UnusedVariable