using Dalamud.Game.Command; using Dalamud.IoC; using Dalamud.Plugin; using Dalamud.Interface.Windowing; using Dalamud.Plugin.Services; using Malmstone.Windows; namespace Malmstone; public sealed class Plugin : IDalamudPlugin { [PluginService] internal static IDalamudPluginInterface PluginInterface { get; private set; } = null!; [PluginService] internal static ITextureProvider TextureProvider { get; private set; } = null!; [PluginService] internal static ICommandManager CommandManager { get; private set; } = null!; private const string CommandName = "/pmalm"; public Configuration Configuration { get; init; } public readonly WindowSystem WindowSystem = new("Malmstone"); private ConfigWindow ConfigWindow { get; init; } private MainWindow MainWindow { get; init; } public Plugin() { Configuration = PluginInterface.GetPluginConfig() as Configuration ?? new Configuration(); ConfigWindow = new ConfigWindow(this); MainWindow = new MainWindow(this); WindowSystem.AddWindow(ConfigWindow); WindowSystem.AddWindow(MainWindow); CommandManager.AddHandler(CommandName, new CommandInfo(OnCommand) { HelpMessage = "Open the Malmstone calculator main window" }); PluginInterface.UiBuilder.Draw += DrawUI; PluginInterface.UiBuilder.OpenConfigUi += ToggleConfigUI; PluginInterface.UiBuilder.OpenMainUi += ToggleMainUI; } public void Dispose() { WindowSystem.RemoveAllWindows(); ConfigWindow.Dispose(); MainWindow.Dispose(); CommandManager.RemoveHandler(CommandName); } private void OnCommand(string command, string args) { ToggleMainUI(); } private void DrawUI() => WindowSystem.Draw(); public void ToggleConfigUI() => ConfigWindow.Toggle(); public void ToggleMainUI() => MainWindow.Toggle(); }