refactor(api)make Register/Unregister static, hide Instance
This commit is contained in:
@@ -23,7 +23,7 @@ namespace CommandHook;
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
public class CommandHookModSystem : ModSystem
|
public class CommandHookModSystem : ModSystem
|
||||||
{
|
{
|
||||||
public static CommandHookModSystem? Instance;
|
internal static CommandHookModSystem? Instance;
|
||||||
|
|
||||||
private readonly List<ICommandHookListener> listeners = new();
|
private readonly List<ICommandHookListener> listeners = new();
|
||||||
|
|
||||||
@@ -54,6 +54,7 @@ public class CommandHookModSystem : ModSystem
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Registers a listener for the commands it returns from <see cref="ICommandHookListener.Commands"/>.
|
/// Registers a listener for the commands it returns from <see cref="ICommandHookListener.Commands"/>.
|
||||||
|
/// No-ops silently if CommandHook hasn't finished server-side startup yet.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Calling this again for a <see cref="ICommandHookListener.ModId"/> that is already
|
/// Calling this again for a <see cref="ICommandHookListener.ModId"/> that is already
|
||||||
@@ -63,8 +64,11 @@ public class CommandHookModSystem : ModSystem
|
|||||||
/// list, this just calls <see cref="Unregister"/> instead.
|
/// list, this just calls <see cref="Unregister"/> instead.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
/// <param name="listener">The listener to register or update.</param>
|
/// <param name="listener">The listener to register or update.</param>
|
||||||
public void Register(ICommandHookListener listener)
|
public static void Register(ICommandHookListener listener)
|
||||||
{
|
{
|
||||||
|
if (Instance == null)
|
||||||
|
return;
|
||||||
|
|
||||||
var commands = listener.Commands;
|
var commands = listener.Commands;
|
||||||
|
|
||||||
if (commands == null || commands.Count == 0)
|
if (commands == null || commands.Count == 0)
|
||||||
@@ -73,6 +77,7 @@ public class CommandHookModSystem : ModSystem
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var listeners = Instance.listeners;
|
||||||
int index = listeners.FindIndex(l => l.ModId == listener.ModId);
|
int index = listeners.FindIndex(l => l.ModId == listener.ModId);
|
||||||
|
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
@@ -88,7 +93,7 @@ public class CommandHookModSystem : ModSystem
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (changed)
|
if (changed)
|
||||||
Rebuild();
|
Instance.Rebuild();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -96,15 +101,19 @@ public class CommandHookModSystem : ModSystem
|
|||||||
/// that was never registered, this is a no-op in that case.
|
/// that was never registered, this is a no-op in that case.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="listener">The listener to remove, matched by <see cref="ICommandHookListener.ModId"/>.</param>
|
/// <param name="listener">The listener to remove, matched by <see cref="ICommandHookListener.ModId"/>.</param>
|
||||||
public void Unregister(ICommandHookListener listener)
|
public static void Unregister(ICommandHookListener listener)
|
||||||
{
|
{
|
||||||
|
if (Instance == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var listeners = Instance.listeners;
|
||||||
int index = listeners.FindIndex(l => l.ModId == listener.ModId);
|
int index = listeners.FindIndex(l => l.ModId == listener.ModId);
|
||||||
|
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
listeners.RemoveAt(index);
|
listeners.RemoveAt(index);
|
||||||
Rebuild();
|
Instance.Rebuild();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rebuilds the dispatch table from listeners. Runs unconditionally and
|
// Rebuilds the dispatch table from listeners. Runs unconditionally and
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"authors": [
|
"authors": [
|
||||||
"anth64"
|
"anth64"
|
||||||
],
|
],
|
||||||
"version": "2.0.0",
|
"version": "2.1.0",
|
||||||
"side": "Server",
|
"side": "Server",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"game": "1.22.3"
|
"game": "1.22.3"
|
||||||
|
|||||||
Reference in New Issue
Block a user