From e013baced65cad308fcd74e6e99da7532e23c34a Mon Sep 17 00:00:00 2001 From: milimoe <110188673+milimoe@users.noreply.github.com> Date: Sun, 22 Oct 2023 02:38:35 +0800 Subject: [PATCH] RoomList remake --- Model/RoomList.cs | 75 +++++++++++++++-------------------------------- 1 file changed, 23 insertions(+), 52 deletions(-) diff --git a/Model/RoomList.cs b/Model/RoomList.cs index 42e02bc..922cf8f 100644 --- a/Model/RoomList.cs +++ b/Model/RoomList.cs @@ -1,4 +1,4 @@ -using System.Collections; +using System.Collections; using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Library.Constant; @@ -6,19 +6,14 @@ namespace Milimoe.FunGame.Core.Model { public class RoomList : IEnumerable { - private readonly Hashtable _List = new(); - private readonly Hashtable _PlayerList = new(); + private readonly Dictionary _List = new(); + private readonly Dictionary> _PlayerList = new(); public int Count => _List.Count; - public List ListRoom => _List.Values.Cast().ToList(); + public List ListRoom => _List.Values.ToList(); - public List ListRoomID => _List.Keys.Cast().ToList(); - - public RoomList() - { - - } + public List ListRoomID => _List.Keys.ToList(); public Room this[string RoomID] => GetRoom(RoomID); @@ -48,70 +43,46 @@ namespace Milimoe.FunGame.Core.Model _PlayerList.Remove(RoomID); } - public void RemoveRoom(Room Room) - { - RemoveRoom(Room.Roomid); - } + public void RemoveRoom(Room Room) => RemoveRoom(Room.Roomid); - public void IntoRoom(string RoomID, User Player) + public void IntoRoom(string RoomID, User User) { - if (RoomID == "-1" || Player.Id == 0) return; - GetPlayerList(RoomID).Add(Player); - } - - public void QuitRoom(string RoomID, User Player) - { - if (RoomID == "-1" || Player.Id == 0) return; - GetPlayerList(RoomID).Remove(Player); - } - - public Room GetRoom(string RoomID) - { - Room? room = null; - if (_List.ContainsKey(RoomID)) + if (RoomID != "-1" && User.Id != 0) { - room = (Room?)_List[RoomID]; + GetPlayerList(RoomID).Add(User); } - room ??= General.HallInstance; - return room; } - public bool IsExist(string RoomID) + public void QuitRoom(string RoomID, User User) { - return _List.ContainsKey(RoomID); + if (RoomID != "-1" && User.Id != 0) + { + GetPlayerList(RoomID).Remove(User); + } } + public Room GetRoom(string RoomID) => _List.ContainsKey(RoomID) ? _List[RoomID] : General.HallInstance; + + public bool IsExist(string RoomID) => _List.ContainsKey(RoomID); + public User GetRoomMaster(string RoomID) { - foreach (Room room in ListRoom) + foreach (Room room in ListRoom.Where(r => r.Roomid == RoomID && r.RoomMaster != null)) { - if (room.Roomid == RoomID && room.RoomMaster != null) - { - return room.RoomMaster; - } + return room.RoomMaster; } return General.UnknownUserInstance; } public void SetRoomMaster(string RoomID, User User) { - Room? room = this[RoomID]; - if (room != null) + if (RoomID != "-1" && User.Id != 0) { - room.RoomMaster = User; + this[RoomID].RoomMaster = User; } } - public List GetPlayerList(string RoomID) - { - List? list = new(); - if (_PlayerList.ContainsKey(RoomID) && _PlayerList[RoomID] != null) - { - list = (List?)_PlayerList[RoomID]; - } - list ??= new(); - return list; - } + public List GetPlayerList(string RoomID) => _PlayerList.ContainsKey(RoomID) ? _PlayerList[RoomID] : new(); public int GetPlayerCount(string RoomID) => GetPlayerList(RoomID).Count;