feat: room properties ready, player properties wip
This commit is contained in:
@@ -74,7 +74,8 @@ public class RagonServer : IRagonServer, INetworkListener
|
||||
var contextObserver = new RagonContextObserver(_contextsByPlayerId);
|
||||
|
||||
_scheduler.Run(new RagonActionTimer(SendRoomList, 1.0f));
|
||||
_scheduler.Run(new RagonActionTimer(SendUserData, 0.2f));
|
||||
_scheduler.Run(new RagonActionTimer(SendPlayerProperties, 1.0f));
|
||||
_scheduler.Run(new RagonActionTimer(SendRoomProperties, 1.0f));
|
||||
|
||||
_serverPlugin.OnAttached(this);
|
||||
|
||||
@@ -94,9 +95,9 @@ public class RagonServer : IRagonServer, INetworkListener
|
||||
_handlers[(byte)RagonOperation.TRANSFER_ENTITY_OWNERSHIP] = new EntityOwnershipOperation(_reader, _writer);
|
||||
_handlers[(byte)RagonOperation.TIMESTAMP_SYNCHRONIZATION] = new TimestampSyncOperation(_reader, _writer);
|
||||
_handlers[(byte)RagonOperation.REPLICATE_ROOM_EVENT] = new RoomEventOperation(_reader, _writer);
|
||||
_handlers[(byte)RagonOperation.REPLICATE_RAW_DATA] = new RoomRawDataOperation(_reader, _writer);
|
||||
_handlers[(byte)RagonOperation.ROOM_DATA_UPDATED] = new RoomDataOperation(_reader, _writer);
|
||||
_handlers[(byte)RagonOperation.PLAYER_DATA_UPDATED] = new PlayerDataOperation(_reader, _writer);
|
||||
_handlers[(byte)RagonOperation.REPLICATE_RAW_DATA] = new RoomDataOperation(_reader, _writer);
|
||||
_handlers[(byte)RagonOperation.ROOM_PROPERTIES_UPDATED] = new RoomPropertiesOperation(_reader, _writer);
|
||||
_handlers[(byte)RagonOperation.PLAYER_PROPERTIES_UPDATED] = new PlayerPropertiesOperation(_reader, _writer);
|
||||
|
||||
_logger.Trace($"Server Tick Rate: {_configuration.ServerTickRate}");
|
||||
}
|
||||
@@ -247,19 +248,39 @@ public class RagonServer : IRagonServer, INetworkListener
|
||||
}
|
||||
}
|
||||
|
||||
public void SendUserData()
|
||||
public void SendPlayerProperties()
|
||||
{
|
||||
foreach (var (_, value) in _contextsByPlayerId)
|
||||
{
|
||||
if (value.UserData.IsDirty)
|
||||
{
|
||||
_writer.Clear();
|
||||
_writer.WriteOperation(RagonOperation.PLAYER_DATA_UPDATED);
|
||||
_writer.WriteOperation(RagonOperation.PLAYER_PROPERTIES_UPDATED);
|
||||
_writer.WriteUShort(value.Connection.Id);
|
||||
_writer.WriteBytes(value.UserData.Data);
|
||||
|
||||
var sendData = _writer.ToArray();
|
||||
_server.Broadcast(sendData, NetworkChannel.RELIABLE);
|
||||
|
||||
value.UserData.IsDirty = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SendRoomProperties()
|
||||
{
|
||||
foreach (var room in _lobby.Rooms)
|
||||
{
|
||||
if (room.UserData.IsDirty)
|
||||
{
|
||||
_writer.Clear();
|
||||
_writer.WriteOperation(RagonOperation.ROOM_PROPERTIES_UPDATED);
|
||||
_writer.WriteBytes(room.UserData.Data);
|
||||
|
||||
var sendData = _writer.ToArray();
|
||||
_server.Broadcast(sendData, NetworkChannel.RELIABLE);
|
||||
|
||||
room.UserData.IsDirty = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user