diff --git a/Ragon.Core/Lobby/Abstract/ILobby.cs b/Ragon.Core/Lobby/Abstract/ILobby.cs index 112b499..7425560 100644 --- a/Ragon.Core/Lobby/Abstract/ILobby.cs +++ b/Ragon.Core/Lobby/Abstract/ILobby.cs @@ -1,11 +1,12 @@ -using Ragon.Core.Game; - -namespace Ragon.Core.Lobby; - -public interface ILobby -{ - public bool FindRoomById(string roomId, out Room room); - public bool FindRoomByMap(string map, out Room room); - public void Persist(Room room); - public void Remove(Room room); +using System.Diagnostics.CodeAnalysis; +using Ragon.Core.Game; + +namespace Ragon.Core.Lobby; + +public interface ILobby +{ + public bool FindRoomById(string roomId, [MaybeNullWhen(false)] out Room room); + public bool FindRoomByMap(string map, [MaybeNullWhen(false)] out Room room); + public void Persist(Room room); + public void Remove(Room room); } \ No newline at end of file diff --git a/Ragon.Core/Lobby/LobbyInMemory.cs b/Ragon.Core/Lobby/LobbyInMemory.cs index 676eabe..61c596f 100644 --- a/Ragon.Core/Lobby/LobbyInMemory.cs +++ b/Ragon.Core/Lobby/LobbyInMemory.cs @@ -1,56 +1,57 @@ -using System.Collections.Generic; -using NLog; -using Ragon.Core.Game; - -namespace Ragon.Core.Lobby; - -public class LobbyInMemory: ILobby -{ - private readonly List _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); - } +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using NLog; +using Ragon.Core.Game; + +namespace Ragon.Core.Lobby; + +public class LobbyInMemory : ILobby +{ + private readonly List _rooms = new(); + private readonly Logger _logger = LogManager.GetCurrentClassLogger(); + + public bool FindRoomById(string roomId, [MaybeNullWhen(false)] 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 = default; + return false; + } + + public bool FindRoomByMap(string map, [MaybeNullWhen(false)] 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 = default; + 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); + } } \ No newline at end of file