60 lines
1.9 KiB
C#
60 lines
1.9 KiB
C#
using System;
|
|
using System.Numerics;
|
|
using Dalamud.Bindings.ImGui;
|
|
using Dalamud.Interface.Windowing;
|
|
|
|
namespace SamplePlugin.Windows;
|
|
|
|
public class ConfigWindow : Window, IDisposable
|
|
{
|
|
private readonly Configuration configuration;
|
|
|
|
// We give this window a constant ID using ###.
|
|
// This allows for labels to be dynamic, like "{FPS Counter}fps###XYZ counter window",
|
|
// and the window ID will always be "###XYZ counter window" for ImGui
|
|
public ConfigWindow(Plugin plugin) : base("A Wonderful Configuration Window###With a constant ID")
|
|
{
|
|
Flags = ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoScrollbar |
|
|
ImGuiWindowFlags.NoScrollWithMouse;
|
|
|
|
Size = new Vector2(232, 90);
|
|
SizeCondition = ImGuiCond.Always;
|
|
|
|
configuration = plugin.Configuration;
|
|
}
|
|
|
|
public void Dispose() { }
|
|
|
|
public override void PreDraw()
|
|
{
|
|
// Flags must be added or removed before Draw() is being called, or they won't apply
|
|
if (configuration.IsConfigWindowMovable)
|
|
{
|
|
Flags &= ~ImGuiWindowFlags.NoMove;
|
|
}
|
|
else
|
|
{
|
|
Flags |= ImGuiWindowFlags.NoMove;
|
|
}
|
|
}
|
|
|
|
public override void Draw()
|
|
{
|
|
// Can't ref a property, so use a local copy
|
|
var configValue = configuration.SomePropertyToBeSavedAndWithADefault;
|
|
if (ImGui.Checkbox("Random Config Bool", ref configValue))
|
|
{
|
|
configuration.SomePropertyToBeSavedAndWithADefault = configValue;
|
|
// Can save immediately on change if you don't want to provide a "Save and Close" button
|
|
configuration.Save();
|
|
}
|
|
|
|
var movable = configuration.IsConfigWindowMovable;
|
|
if (ImGui.Checkbox("Movable Config Window", ref movable))
|
|
{
|
|
configuration.IsConfigWindowMovable = movable;
|
|
configuration.Save();
|
|
}
|
|
}
|
|
}
|