Fix Hook.Remove not being implemented properly
This commit is contained in:
@@ -11,6 +11,7 @@ public interface ILuaCsHook : ILuaPatcher, ILuaCsShim
|
|||||||
void Add(string eventName, string identifier, LuaCsFunc callback, object owner = null);
|
void Add(string eventName, string identifier, LuaCsFunc callback, object owner = null);
|
||||||
[Obsolete("ACsMod is deprecated. Use ILuaEventService.Add() instead.")]
|
[Obsolete("ACsMod is deprecated. Use ILuaEventService.Add() instead.")]
|
||||||
void Add(string eventName, LuaCsFunc callback, object owner = null);
|
void Add(string eventName, LuaCsFunc callback, object owner = null);
|
||||||
|
void Remove(string eventName, string identifier);
|
||||||
// Does anyone use this? TODO: Analyze old Lua mods for usage scenarios.
|
// Does anyone use this? TODO: Analyze old Lua mods for usage scenarios.
|
||||||
//bool Exists(string eventName, string identifier);
|
//bool Exists(string eventName, string identifier);
|
||||||
object Call(string eventName, params object[] args);
|
object Call(string eventName, params object[] args);
|
||||||
|
|||||||
@@ -200,6 +200,29 @@ public partial class EventService : IEventService
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void Remove(string eventName, string identifier)
|
public void Remove(string eventName, string identifier)
|
||||||
|
{
|
||||||
|
Guard.IsNotNullOrWhiteSpace(eventName, nameof(eventName));
|
||||||
|
Guard.IsNotNullOrWhiteSpace(identifier, nameof(identifier));
|
||||||
|
|
||||||
|
using var lck = _operationsLock.AcquireReaderLock().ConfigureAwait(false).GetAwaiter().GetResult();
|
||||||
|
IService.CheckDisposed(this);
|
||||||
|
|
||||||
|
if (_luaAliasEventFactory.TryGetValue(eventName, out var eventFunc))
|
||||||
|
{
|
||||||
|
if (_subscribers.TryGetValue(eventFunc.Event, out var eventSubs))
|
||||||
|
{
|
||||||
|
eventSubs.TryRemove(identifier, out _);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_luaLegacyEventsSubscribers.TryGetValue(eventName, out var eventSubs))
|
||||||
|
{
|
||||||
|
eventSubs.TryRemove(identifier, out _);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void Unsubscribe(string eventName, string identifier)
|
||||||
{
|
{
|
||||||
Guard.IsNotNullOrWhiteSpace(eventName, nameof(eventName));
|
Guard.IsNotNullOrWhiteSpace(eventName, nameof(eventName));
|
||||||
Guard.IsNotNullOrWhiteSpace(identifier, nameof(identifier));
|
Guard.IsNotNullOrWhiteSpace(identifier, nameof(identifier));
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public interface ILuaSafeEventService : ILuaService, ILuaCsHook
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="eventName"></param>
|
/// <param name="eventName"></param>
|
||||||
/// <param name="identifier"></param>
|
/// <param name="identifier"></param>
|
||||||
void Remove(string eventName, string identifier);
|
void Unsubscribe(string eventName, string identifier);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Send an event to all subscribers to an interface.
|
/// Send an event to all subscribers to an interface.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user