2024-04-13 16:17:31 +03:00
|
|
|
using Ragon.Protocol;
|
|
|
|
|
|
|
|
|
|
namespace Ragon.Client;
|
|
|
|
|
|
|
|
|
|
internal class RoomListHandler: IHandler
|
|
|
|
|
{
|
|
|
|
|
private RagonListenerList _listenerList;
|
|
|
|
|
private RagonSession _session;
|
|
|
|
|
|
|
|
|
|
public RoomListHandler(RagonSession session, RagonListenerList list)
|
|
|
|
|
{
|
|
|
|
|
_session = session;
|
|
|
|
|
_listenerList = list;
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-28 20:11:56 +03:00
|
|
|
public void Handle(RagonStream reader)
|
2024-04-13 16:17:31 +03:00
|
|
|
{
|
|
|
|
|
var roomCount = reader.ReadUShort();
|
|
|
|
|
var roomList = new RagonRoomInformation[roomCount];
|
|
|
|
|
for (int i = 0; i < roomCount; i++)
|
|
|
|
|
{
|
|
|
|
|
var id = reader.ReadString();
|
|
|
|
|
var scene = reader.ReadString();
|
|
|
|
|
var maxPlayers = reader.ReadUShort();
|
|
|
|
|
var minPlayers = reader.ReadUShort();
|
2024-04-13 18:25:39 +03:00
|
|
|
var players = reader.ReadUShort();
|
|
|
|
|
|
2024-04-13 16:17:31 +03:00
|
|
|
var roomInfo = new RagonRoomInformation()
|
|
|
|
|
{
|
|
|
|
|
Id = id,
|
|
|
|
|
Scene = scene,
|
|
|
|
|
PlayerCount = players,
|
|
|
|
|
PlayerMax = maxPlayers,
|
|
|
|
|
PlayerMin = minPlayers,
|
|
|
|
|
Properties = new Dictionary<string, byte[]>()
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
roomList[i] = roomInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_listenerList.OnRoomList(roomList);
|
|
|
|
|
}
|
|
|
|
|
}
|