More cleanup

This commit is contained in:
Infi
2024-05-02 15:02:42 +02:00
parent 477290ce7e
commit 5b30e54f65
7 changed files with 108 additions and 150 deletions
+32 -20
View File
@@ -2,38 +2,43 @@ using Dalamud.Game.Command;
namespace ChatTwo;
internal sealed class Commands : IDisposable {
internal sealed class Commands : IDisposable
{
private Plugin Plugin { get; }
private Dictionary<string, CommandWrapper> Registered { get; } = new();
internal Commands(Plugin plugin) {
internal Commands(Plugin plugin)
{
Plugin = plugin;
}
public void Dispose() {
foreach (var name in Registered.Keys) {
public void Dispose()
{
foreach (var name in Registered.Keys)
Plugin.CommandManager.RemoveHandler(name);
}
}
internal void Initialise() {
foreach (var wrapper in Registered.Values) {
Plugin.CommandManager.AddHandler(wrapper.Name, new CommandInfo(Invoke) {
internal void Initialise()
{
foreach (var wrapper in Registered.Values)
{
Plugin.CommandManager.AddHandler(wrapper.Name, new CommandInfo(Invoke)
{
HelpMessage = wrapper.Description ?? string.Empty,
ShowInHelp = wrapper.ShowInHelp,
});
}
}
internal CommandWrapper Register(string name, string? description = null, bool? showInHelp = null) {
if (Registered.TryGetValue(name, out var wrapper)) {
if (description != null) {
internal CommandWrapper Register(string name, string? description = null, bool? showInHelp = null)
{
if (Registered.TryGetValue(name, out var wrapper))
{
if (description != null)
wrapper.Description = description;
}
if (showInHelp != null) {
if (showInHelp != null)
wrapper.ShowInHelp = showInHelp.Value;
}
return wrapper;
}
@@ -43,33 +48,40 @@ internal sealed class Commands : IDisposable {
}
private void Invoke(string command, string arguments) {
if (!Registered.TryGetValue(command, out var wrapper)) {
if (!Registered.TryGetValue(command, out var wrapper))
{
Plugin.Log.Warning($"Missing registration for command {command}");
return;
}
try {
try
{
wrapper.Invoke(command, arguments);
} catch (Exception ex) {
}
catch (Exception ex)
{
Plugin.Log.Error(ex, $"Error while executing command {command}");
}
}
}
internal sealed class CommandWrapper {
internal sealed class CommandWrapper
{
internal string Name { get; }
internal string? Description { get; set; }
internal bool ShowInHelp { get; set; }
internal event Action<string, string>? Execute;
internal CommandWrapper(string name, string? description, bool showInHelp) {
internal CommandWrapper(string name, string? description, bool showInHelp)
{
Name = name;
Description = description;
ShowInHelp = showInHelp;
}
internal void Invoke(string command, string arguments) {
internal void Invoke(string command, string arguments)
{
Execute?.Invoke(command, arguments);
}
}