using System.Globalization; using System.Numerics; using Dalamud.Game.Command; using Dalamud.Game.Text.SeStringHandling; using Dalamud.Plugin; using Dalamud.Plugin.Services; namespace Questionable.IpcTest; public sealed class IpcTestPlugin : IDalamudPlugin { //private readonly WindowSystem _windowSystem = new("Questionable/" + nameof(IpcTestPlugin)); private readonly IDalamudPluginInterface _pluginInterface; private readonly ICommandManager _commandManager; private readonly IChatGui _chatGui; public IpcTestPlugin( IDalamudPluginInterface pluginInterface, ICommandManager commandManager, IChatGui chatGui) { _pluginInterface = pluginInterface; _commandManager = commandManager; _chatGui = chatGui; commandManager.AddHandler("/qipc", new CommandInfo(ProcessCommand)); } private void ProcessCommand(string command, string arguments) { if (arguments == "stepdata") { var stepData = _pluginInterface.GetIpcSubscriber("Questionable.GetCurrentStepData").InvokeFunc(); _chatGui.Print(new SeStringBuilder() .AddUiForeground("[IPC]", 576) .AddText(": Type: ") .AddUiForeground(stepData?.InteractionType ?? "?", 61) .AddText(" - Pos: ") .AddUiForeground(stepData?.Position?.ToString("G", CultureInfo.InvariantCulture) ?? "?", 61) .AddText(" - Territory: ") .AddUiForeground(stepData?.TerritoryId.ToString() ?? "?", 61) .Build()); } else _chatGui.PrintError("Unknown subcommand"); } public void Dispose() { _commandManager.RemoveHandler("/qipc"); } private sealed class IpcStepData { public required string InteractionType { get; set; } public required Vector3? Position { get; set; } public required ushort TerritoryId { get; set; } } }