optimize roomlist

This commit is contained in:
milimoe 2023-11-19 15:02:08 +08:00 committed by GitHub
parent 3e5de6afca
commit 5a5daa181c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -10,13 +10,23 @@ namespace Milimoe.FunGame.Core.Model
private readonly Dictionary<string, List<User>> _PlayerList = new(); private readonly Dictionary<string, List<User>> _PlayerList = new();
private readonly Dictionary<string, List<User>> _ReadyPlayerList = new(); private readonly Dictionary<string, List<User>> _ReadyPlayerList = new();
public Room this[string RoomID] => GetRoom(RoomID);
public int Count => _List.Count; public int Count => _List.Count;
public int GetPlayerCount(string RoomID) => GetPlayerList(RoomID).Count;
public int GetReadyPlayerCount(string RoomID) => GetReadyPlayerList(RoomID).Count;
public List<Room> ListRoom => _List.Values.ToList(); public List<Room> ListRoom => _List.Values.ToList();
public List<string> ListRoomID => _List.Keys.ToList(); public List<string> ListRoomID => _List.Keys.ToList();
public Room this[string RoomID] => GetRoom(RoomID); public List<User> GetPlayerList(string RoomID) => _PlayerList.ContainsKey(RoomID) ? _PlayerList[RoomID] : new();
public List<User> GetReadyPlayerList(string RoomID) => _ReadyPlayerList.ContainsKey(RoomID) ? _ReadyPlayerList[RoomID] : new();
public List<User> GetNotReadyPlayerList(string RoomID) => _PlayerList.ContainsKey(RoomID) ? _PlayerList[RoomID].Except(GetReadyPlayerList(RoomID)).ToList() : new();
public void Clear() public void Clear()
{ {
@ -57,28 +67,6 @@ namespace Milimoe.FunGame.Core.Model
} }
} }
public List<User> GetReadyPlayerList(string RoomID) => _ReadyPlayerList.ContainsKey(RoomID) ? _ReadyPlayerList[RoomID] : new();
public int GetReadyPlayerCount(string RoomID) => GetReadyPlayerList(RoomID).Count;
public List<User> GetNotReadyPlayerList(string RoomID) => _PlayerList.ContainsKey(RoomID) ? _PlayerList[RoomID].Except(GetReadyPlayerList(RoomID)).ToList() : new();
public void SetReady(string RoomID, User User)
{
if (RoomID != "-1" && _ReadyPlayerList.ContainsKey(RoomID) && User.Id != 0)
{
_ReadyPlayerList[RoomID].Add(User);
}
}
public void CancelReady(string RoomID, User User)
{
if (RoomID != "-1" && _ReadyPlayerList.ContainsKey(RoomID) && User.Id != 0)
{
_ReadyPlayerList[RoomID].Remove(User);
}
}
public void QuitRoom(string RoomID, User User) public void QuitRoom(string RoomID, User User)
{ {
if (RoomID != "-1" && User.Id != 0) if (RoomID != "-1" && User.Id != 0)
@ -87,6 +75,22 @@ namespace Milimoe.FunGame.Core.Model
} }
} }
public void SetReady(string RoomID, User User)
{
if (RoomID != "-1" && User.Id != 0)
{
GetReadyPlayerList(RoomID).Add(User);
}
}
public void CancelReady(string RoomID, User User)
{
if (RoomID != "-1" && User.Id != 0)
{
GetReadyPlayerList(RoomID).Remove(User);
}
}
public Room GetRoom(string RoomID) => _List.ContainsKey(RoomID) ? _List[RoomID] : General.HallInstance; public Room GetRoom(string RoomID) => _List.ContainsKey(RoomID) ? _List[RoomID] : General.HallInstance;
public bool IsExist(string RoomID) => _List.ContainsKey(RoomID); public bool IsExist(string RoomID) => _List.ContainsKey(RoomID);
@ -108,10 +112,6 @@ namespace Milimoe.FunGame.Core.Model
} }
} }
public List<User> GetPlayerList(string RoomID) => _PlayerList.ContainsKey(RoomID) ? _PlayerList[RoomID] : new();
public int GetPlayerCount(string RoomID) => GetPlayerList(RoomID).Count;
public IEnumerator GetEnumerator() public IEnumerator GetEnumerator()
{ {
foreach (Room room in ListRoom) foreach (Room room in ListRoom)