wip
This commit is contained in:
@@ -22,16 +22,14 @@ namespace Ragon.Client
|
||||
{
|
||||
private readonly INetworkConnection _connection;
|
||||
private readonly NetworkStatistics _stats;
|
||||
private IRagonEntityListener _entityListener;
|
||||
private IRagonSceneCollector _sceneCollector;
|
||||
|
||||
private IHandler[] _handlers;
|
||||
private RagonBuffer _readBuffer;
|
||||
private RagonBuffer _writeBuffer;
|
||||
private RagonStream _readBuffer;
|
||||
private RagonStream _writeBuffer;
|
||||
private RagonRoom _room;
|
||||
private RagonSession _session;
|
||||
private RagonListenerList _listeners;
|
||||
private RagonPlayerCache _playerCache;
|
||||
private RagonEntityCache _entityCache;
|
||||
private RagonEventCache _eventCache;
|
||||
private RagonStatus _status;
|
||||
|
||||
@@ -44,11 +42,10 @@ namespace Ragon.Client
|
||||
public RagonStatus Status => _status;
|
||||
public RagonSession Session => _session;
|
||||
public RagonEventCache Event => _eventCache;
|
||||
public RagonEntityCache Entity => _entityCache;
|
||||
public NetworkStatistics Statistics => _stats;
|
||||
public RagonRoom Room => _room;
|
||||
|
||||
internal RagonBuffer Buffer => _writeBuffer;
|
||||
internal RagonStream Buffer => _writeBuffer;
|
||||
internal INetworkChannel Reliable => _connection.Reliable;
|
||||
internal INetworkChannel Unreliable => _connection.Unreliable;
|
||||
|
||||
@@ -72,58 +69,23 @@ namespace Ragon.Client
|
||||
}
|
||||
|
||||
|
||||
public void Configure(IRagonSceneCollector sceneCollector)
|
||||
{
|
||||
_sceneCollector = sceneCollector;
|
||||
}
|
||||
|
||||
public void Configure(IRagonEntityListener listener)
|
||||
{
|
||||
_entityListener = listener;
|
||||
}
|
||||
|
||||
public void Connect(string address, ushort port, string protocol)
|
||||
{
|
||||
if (_sceneCollector == null)
|
||||
{
|
||||
RagonLog.Error("Scene collector is not defined!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (_entityListener == null)
|
||||
{
|
||||
RagonLog.Error("Entity Listener is not defined!");
|
||||
return;
|
||||
}
|
||||
|
||||
_writeBuffer = new RagonBuffer();
|
||||
_readBuffer = new RagonBuffer();
|
||||
_writeBuffer = new RagonStream();
|
||||
_readBuffer = new RagonStream();
|
||||
_playerCache = new RagonPlayerCache();
|
||||
_session = new RagonSession(this, _writeBuffer);
|
||||
_entityCache = new RagonEntityCache(this, _playerCache, _sceneCollector);
|
||||
|
||||
_handlers = new IHandler[byte.MaxValue];
|
||||
_handlers[(byte)RagonOperation.AUTHORIZED_SUCCESS] = new AuthorizeSuccessHandler(this, _listeners);
|
||||
_handlers[(byte)RagonOperation.AUTHORIZED_FAILED] = new AuthorizeFailedHandler(_listeners);
|
||||
_handlers[(byte)RagonOperation.JOIN_SUCCESS] =
|
||||
new JoinSuccessHandler(this, _listeners, _playerCache, _entityCache);
|
||||
_handlers[(byte)RagonOperation.JOIN_SUCCESS] = new JoinSuccessHandler(this, _listeners, _playerCache);
|
||||
_handlers[(byte)RagonOperation.JOIN_FAILED] = new JoinFailedHandler(_listeners);
|
||||
_handlers[(byte)RagonOperation.LEAVE_ROOM] = new LeaveRoomHandler(this, _listeners, _entityCache);
|
||||
_handlers[(byte)RagonOperation.OWNERSHIP_ROOM_CHANGED] =
|
||||
new OwnershipRoomHandler(_listeners, _playerCache, _entityCache);
|
||||
_handlers[(byte)RagonOperation.OWNERSHIP_ENTITY_CHANGED] =
|
||||
new EntityOwnershipHandler(_listeners, _playerCache, _entityCache);
|
||||
_handlers[(byte)RagonOperation.LEAVE_ROOM] = new LeaveRoomHandler(this, _listeners);
|
||||
_handlers[(byte)RagonOperation.OWNERSHIP_ROOM_CHANGED] = new OwnershipRoomHandler(_listeners, _playerCache);
|
||||
_handlers[(byte)RagonOperation.PLAYER_JOINED] = new PlayerJoinHandler(_playerCache, _listeners);
|
||||
_handlers[(byte)RagonOperation.PLAYER_LEAVED] = new PlayerLeftHandler(_entityCache, _playerCache, _listeners);
|
||||
_handlers[(byte)RagonOperation.LOAD_SCENE] = new SceneLoadHandler(this, _listeners);
|
||||
_handlers[(byte)RagonOperation.CREATE_ENTITY] =
|
||||
new EntityCreateHandler(this, _playerCache, _entityCache, _entityListener);
|
||||
_handlers[(byte)RagonOperation.REMOVE_ENTITY] = new EntityRemoveHandler(_entityCache);
|
||||
_handlers[(byte)RagonOperation.REPLICATE_ENTITY_STATE] = new StateEntityHandler(_entityCache);
|
||||
_handlers[(byte)RagonOperation.REPLICATE_ENTITY_EVENT] = new EntityEventHandler(_playerCache, _entityCache);
|
||||
_handlers[(byte)RagonOperation.PLAYER_LEAVED] = new PlayerLeftHandler(_playerCache, _listeners);
|
||||
_handlers[(byte)RagonOperation.REPLICATE_ROOM_EVENT] = new RoomEventHandler(this, _playerCache);
|
||||
_handlers[(byte)RagonOperation.SNAPSHOT] =
|
||||
new SnapshotHandler(this, _listeners, _entityCache, _playerCache, _entityListener);
|
||||
_handlers[(byte)RagonOperation.TIMESTAMP_SYNCHRONIZATION] = new TimestampHandler(this);
|
||||
_handlers[(byte)RagonOperation.REPLICATE_RAW_DATA] = new RoomDataHandler(_playerCache, _listeners);
|
||||
_handlers[(byte)RagonOperation.ROOM_LIST_UPDATED] = new RoomListHandler(_session, _listeners);
|
||||
@@ -151,7 +113,7 @@ namespace Ragon.Client
|
||||
if (_replicationTime >= _replicationRate)
|
||||
{
|
||||
_replicationTime = 0;
|
||||
_entityCache.WriteState(_writeBuffer);
|
||||
// _entityCache.WriteState(_writeBuffer);
|
||||
|
||||
SendTimestamp();
|
||||
SendRoomUserData();
|
||||
@@ -185,8 +147,6 @@ namespace Ragon.Client
|
||||
public void AddListener(IRagonOwnershipChangedListener listener) => _listeners.Add(listener);
|
||||
public void AddListener(IRagonPlayerJoinListener listener) => _listeners.Add(listener);
|
||||
public void AddListener(IRagonPlayerLeftListener listener) => _listeners.Add(listener);
|
||||
public void AddListener(IRagonSceneListener listener) => _listeners.Add(listener);
|
||||
public void AddListener(IRagonSceneRequestListener listener) => _listeners.Add(listener);
|
||||
public void AddListener(IRagonDataListener listener) => _listeners.Add(listener);
|
||||
public void AddListener(IRagonRoomListListener listener) => _listeners.Add(listener);
|
||||
public void AddListener(IRagonPlayerUserDataListener listener) => _listeners.Add(listener);
|
||||
@@ -200,8 +160,6 @@ namespace Ragon.Client
|
||||
public void RemoveListener(IRagonOwnershipChangedListener listener) => _listeners.Remove(listener);
|
||||
public void RemoveListener(IRagonPlayerJoinListener listener) => _listeners.Remove(listener);
|
||||
public void RemoveListener(IRagonPlayerLeftListener listener) => _listeners.Remove(listener);
|
||||
public void RemoveListener(IRagonSceneListener listener) => _listeners.Remove(listener);
|
||||
public void RemoveListener(IRagonSceneRequestListener listener) => _listeners.Remove(listener);
|
||||
public void RemoveListener(IRagonDataListener listener) => _listeners.Remove(listener);
|
||||
public void RemoveListener(IRagonRoomListListener listener) => _listeners.Remove(listener);
|
||||
public void RemoveListener(IRagonRoomUserDataListener listener) => _listeners.Remove(listener);
|
||||
@@ -241,8 +199,8 @@ namespace Ragon.Client
|
||||
|
||||
_writeBuffer.Clear();
|
||||
_writeBuffer.WriteOperation(RagonOperation.TIMESTAMP_SYNCHRONIZATION);
|
||||
_writeBuffer.Write(value.Int0, 32);
|
||||
_writeBuffer.Write(value.Int1, 32);
|
||||
_writeBuffer.WriteInt((int)value.Int0);
|
||||
_writeBuffer.WriteInt((int)value.Int1);
|
||||
}
|
||||
|
||||
private void SendRoomUserData()
|
||||
|
||||
Reference in New Issue
Block a user