using Microsoft.Extensions.Logging;
using Questionable.Model.V1;
using Quest = Questionable.Model.Quest;
+using ValueType = FFXIVClientStructs.FFXIV.Component.GUI.ValueType;
namespace Questionable.Controller;
List<string?> answers = new();
for (ushort i = 7; i < addonSelectString->AtkUnitBase.AtkValuesCount; ++i)
- answers.Add(addonSelectString->AtkUnitBase.AtkValues[i].ReadAtkString());
+ {
+ if (addonSelectString->AtkUnitBase.AtkValues[i].Type == ValueType.String)
+ answers.Add(addonSelectString->AtkUnitBase.AtkValues[i].ReadAtkString());
+ }
int? answer = HandleListChoice(actualPrompt, answers, checkAllSteps);
if (answer != null)
using System;
+using System.Diagnostics;
using System.Globalization;
using System.Numerics;
using Dalamud.Game.ClientState.Objects;
return currentQuest == null || !currentQuest.Quest.Data.TerritoryBlacklist.Contains(_clientState.TerritoryType);
}
- public override unsafe void Draw()
+ public override void Draw()
{
- if (!_clientState.IsLoggedIn || _clientState.LocalPlayer == null)
- {
- ImGui.Text("Not logged in.");
- return;
- }
+ DrawQuest();
+ ImGui.Separator();
+
+ DrawCreationUtils();
+ ImGui.Separator();
+
+ DrawQuickAccessButtons();
+ }
+ private unsafe void DrawQuest()
+ {
var currentQuest = _questController.CurrentQuest;
if (currentQuest != null)
{
}
else
ImGui.Text("No active quest");
+ }
- ImGui.Separator();
+ private unsafe void DrawCreationUtils()
+ {
+ Debug.Assert(_clientState.LocalPlayer != null, "_clientState.LocalPlayer != null");
ImGui.Text(
$"Current TerritoryId: {_clientState.TerritoryType}, Flying: {(_gameFunctions.IsFlyingUnlockedInCurrentZone() ? "Yes" : "No")}");
if (ImGui.Button("Interact"))
{
ulong result = TargetSystem.Instance()->InteractWithObject(
- (FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject*)_targetManager.Target.Address, false);
+ (GameObject*)_targetManager.Target.Address, false);
_logger.LogInformation("XXXXX Interaction Result: {Result}", result);
}
""");
}
}
+ }
- ImGui.Separator();
-
+ private unsafe void DrawQuickAccessButtons()
+ {
var map = AgentMap.Instance();
ImGui.BeginDisabled(map == null || map->IsFlagMarkerSet == 0 ||
map->FlagMapMarker.TerritoryId != _clientState.TerritoryType);