-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathPlugin.cs
More file actions
113 lines (85 loc) · 3.54 KB
/
Plugin.cs
File metadata and controls
113 lines (85 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using Dalamud.Game.Command;
using Dalamud.Game.Text;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Plugin;
using Dalamud.Bindings.ImGui;
using MiniMappingway.Api;
using MiniMappingway.Manager;
using MiniMappingway.Service;
namespace MiniMappingway;
public sealed class Plugin : IDalamudPlugin
{
internal static string Name => "Mini-Mappingway";
private const string CommandName = "/mmway";
private const string CommandNameDebug = "/mmwaydebug";
public delegate void OnMessageDelegate(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled);
public Plugin(
IDalamudPluginInterface pluginInterface)
{
pluginInterface.Create<ServiceManager>();
ServiceManager.Configuration = pluginInterface.GetPluginConfig() as Configuration ?? new Configuration();
ServiceManager.Configuration.Initialize();
#region Initialise Managers
ServiceManager.NaviMapManager = new NaviMapManager();
ServiceManager.PluginUi = new PluginUi();
ServiceManager.WindowManager = new WindowManager();
ServiceManager.ApiController = new ApiController();
#endregion
#region Initialise Services
ServiceManager.FinderService = new FinderService();
#endregion
ServiceManager.WindowManager.AddWindowsToWindowSystem();
#region Setup Commands and Actions
ServiceManager.CommandManager.AddHandler(CommandName, new CommandInfo(OnCommand)
{
HelpMessage = "Opens Mini-Mappingway settings"
});
ServiceManager.CommandManager.AddHandler(CommandNameDebug, new CommandInfo(OnCommand));
ServiceManager.DalamudPluginInterface.UiBuilder.Draw += ServiceManager.WindowSystem.Draw;
ServiceManager.DalamudPluginInterface.UiBuilder.OpenConfigUi += DrawConfigUi;
ServiceManager.ClientState.TerritoryChanged += TerritoryChanged;
#endregion
}
public void Dispose()
{
ServiceManager.CommandManager.RemoveHandler(CommandName);
ServiceManager.CommandManager.RemoveHandler(CommandNameDebug);
ServiceManager.DalamudPluginInterface.UiBuilder.Draw -= ServiceManager.WindowSystem.Draw;
ServiceManager.DalamudPluginInterface.UiBuilder.OpenConfigUi -= DrawConfigUi;
ServiceManager.ClientState.TerritoryChanged -= TerritoryChanged;
ServiceManager.Dispose();
}
private void TerritoryChanged(ushort _)
{
ServiceManager.NaviMapManager.UpdateMap();
foreach (var dict in ServiceManager.NaviMapManager.PersonDict)
{
ServiceManager.NaviMapManager.ClearPersonBag(dict.Key);
}
}
private void OnCommand(string? command, string args)
{
ServiceManager.Log.Verbose("Command received");
if (command is "/mmway")
{
ServiceManager.WindowManager.SettingsWindow.Toggle();
}
if (command is CommandNameDebug)
{
ServiceManager.NaviMapManager.DebugMode = !ServiceManager.NaviMapManager.DebugMode;
if (ServiceManager.NaviMapManager.DebugMode)
{
ServiceManager.WindowManager.NaviMapWindow.Flags &= ~ImGuiWindowFlags.NoBackground;
}
else
{
ServiceManager.WindowManager.NaviMapWindow.Flags |= ImGuiWindowFlags.NoBackground;
}
}
// in response to the slash command, just display our main ui
}
private void DrawConfigUi()
{
ServiceManager.WindowManager.SettingsWindow.Toggle();
}
}