wip
This commit is contained in:
@@ -77,32 +77,34 @@ namespace Ragon.Client
|
||||
{
|
||||
var t = new TEvent();
|
||||
var eventCode = _client.Event.GetEventCode(t);
|
||||
var callbacks = _listeners[eventCode];
|
||||
|
||||
var action = (RagonPlayer player, IRagonEvent eventData) => callback.Invoke(player, (TEvent)eventData);
|
||||
|
||||
if (callbacks == null)
|
||||
if (!_listeners.TryGetValue(eventCode, out var callbacks))
|
||||
{
|
||||
callbacks = new List<Action<RagonPlayer, IRagonEvent>>();
|
||||
_listeners.Add(eventCode, callbacks);
|
||||
}
|
||||
|
||||
var localCallbacks = _localListeners[eventCode];
|
||||
if (localCallbacks == null)
|
||||
|
||||
if (!_localListeners.TryGetValue(eventCode, out var localCallbacks))
|
||||
{
|
||||
localCallbacks = new List<Action<RagonPlayer, IRagonEvent>>();
|
||||
_localListeners.Add(eventCode, callbacks);
|
||||
_localListeners.Add(eventCode, localCallbacks);
|
||||
}
|
||||
|
||||
|
||||
callbacks.Add(action);
|
||||
localCallbacks.Add(action);
|
||||
|
||||
_events.Add(eventCode, (player, serializer) =>
|
||||
if (!_events.ContainsKey(eventCode))
|
||||
{
|
||||
t.Deserialize(serializer);
|
||||
_events.Add(eventCode, (player, serializer) =>
|
||||
{
|
||||
t.Deserialize(serializer);
|
||||
|
||||
foreach (var callbackListener in callbacks)
|
||||
callbackListener.Invoke(player, t);
|
||||
});
|
||||
foreach (var callbackListener in callbacks)
|
||||
callbackListener.Invoke(player, t);
|
||||
});
|
||||
}
|
||||
|
||||
return action;
|
||||
}
|
||||
@@ -111,11 +113,12 @@ namespace Ragon.Client
|
||||
{
|
||||
var t = new TEvent();
|
||||
var eventCode = _client.Event.GetEventCode(t);
|
||||
var callbacks = _listeners[eventCode];
|
||||
var localCallbacks = _localListeners[eventCode];
|
||||
|
||||
callbacks?.Remove(callback);
|
||||
localCallbacks?.Remove(callback);
|
||||
if (_listeners.TryGetValue(eventCode, out var callbacks))
|
||||
callbacks.Remove(callback);
|
||||
|
||||
if (_localListeners.TryGetValue(eventCode, out var localCallbacks))
|
||||
localCallbacks.Remove(callback);
|
||||
}
|
||||
|
||||
public void LoadScene(string sceneName) => _scene.Load(sceneName);
|
||||
@@ -123,6 +126,7 @@ namespace Ragon.Client
|
||||
|
||||
public void ReplicateEvent<TEvent>(TEvent evnt, RagonTarget target, RagonReplicationMode mode) where TEvent : IRagonEvent, new() => _scene.ReplicateEvent(evnt, target, mode);
|
||||
public void ReplicateEvent<TEvent>(TEvent evnt, RagonPlayer target, RagonReplicationMode mode) where TEvent : IRagonEvent, new() => _scene.ReplicateEvent(evnt, target, mode);
|
||||
public void ReplicateData(byte[] data, bool reliable = false) => _scene.ReplicateData(data, reliable);
|
||||
|
||||
public void CreateEntity(RagonEntity entity) => CreateEntity(entity, null);
|
||||
public void CreateEntity(RagonEntity entity, RagonPayload payload) => _entityCache.Create(entity, payload);
|
||||
|
||||
Reference in New Issue
Block a user