Files
Ragon/Ragon.Core/Lobby/LobbyInMemory.cs
T

56 lines
1.0 KiB
C#
Raw Normal View History

2022-12-16 00:05:46 +04:00
using System.Collections.Generic;
using NLog;
using Ragon.Core.Game;
namespace Ragon.Core.Lobby;
public class LobbyInMemory: ILobby
{
private readonly List<Room> _rooms = new();
private readonly Logger _logger = LogManager.GetCurrentClassLogger();
public bool FindRoomById(string roomId, out Room room)
{
foreach (var existRoom in _rooms)
{
var info = existRoom.Info;
if (existRoom.Id == roomId && info.Min < info.Max)
{
room = existRoom;
return true;
}
}
room = null;
return false;
}
public bool FindRoomByMap(string map, out Room room)
{
foreach (var existRoom in _rooms)
{
var info = existRoom.Info;
if (info.Map == map && existRoom.Players.Count < info.Max)
{
room = existRoom;
return true;
}
}
room = null;
return false;
}
public void Persist(Room room)
{
_rooms.Add(room);
foreach (var r in _rooms)
_logger.Trace($"{r.Id} {r.Info}");
}
public void Remove(Room room)
{
_rooms.Remove(room);
}
}