2024-04-13 16:17:31 +03:00
|
|
|
using Ragon.Protocol;
|
|
|
|
|
using Ragon.Server.Room;
|
|
|
|
|
|
|
|
|
|
namespace Ragon.Server.Lobby;
|
|
|
|
|
|
|
|
|
|
public class RagonLobbyDispatcher
|
|
|
|
|
{
|
|
|
|
|
private IRagonLobby _lobby;
|
|
|
|
|
|
|
|
|
|
public RagonLobbyDispatcher(IRagonLobby lobby)
|
|
|
|
|
{
|
|
|
|
|
_lobby = lobby;
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-04 15:08:53 +03:00
|
|
|
public void Write(RagonBuffer writer, int projectId = 0)
|
2024-04-13 16:17:31 +03:00
|
|
|
{
|
|
|
|
|
writer.Clear();
|
2024-04-13 18:25:39 +03:00
|
|
|
writer.WriteOperation(RagonOperation.ROOM_LIST_UPDATED);
|
2024-04-13 16:17:31 +03:00
|
|
|
var rooms = _lobby.Rooms;
|
|
|
|
|
|
2025-10-04 15:08:53 +03:00
|
|
|
if (projectId > 0)
|
|
|
|
|
{
|
|
|
|
|
rooms = rooms.Where(r => r.ProjectId == projectId).ToList();
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-13 16:17:31 +03:00
|
|
|
writer.WriteUShort((ushort)rooms.Count);
|
|
|
|
|
for (int i = 0; i < rooms.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
var room = rooms[i];
|
|
|
|
|
|
|
|
|
|
writer.WriteString(room.Id);
|
|
|
|
|
writer.WriteString(room.Scene);
|
|
|
|
|
writer.WriteUShort((ushort)room.PlayerMax);
|
|
|
|
|
writer.WriteUShort((ushort)room.PlayerMin);
|
|
|
|
|
writer.WriteUShort((ushort)room.PlayerCount);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|