diff --git a/Api/Utility/Factory.cs b/Api/Utility/Factory.cs index e7b1186..f260253 100644 --- a/Api/Utility/Factory.cs +++ b/Api/Utility/Factory.cs @@ -136,11 +136,13 @@ namespace Milimoe.FunGame.Core.Api.Utility { DataSet? DsRoom = DataSets[0]; DataSet? DsUser = DataSets[1]; + object entity = General.HallInstance; + list.Add((T)entity); if (DsRoom != null && DsRoom.Tables[0].Rows.Count > 0) { for (int i = 0; i < DsRoom.Tables[0].Rows.Count; i++) { - object entity = GetRoom(DsRoom, DsUser, i); + entity = GetRoom(DsRoom, DsUser, i); list.Add((T)entity); } } diff --git a/Entity/BaseEntity.cs b/Entity/BaseEntity.cs index 975efa4..62bbcab 100644 --- a/Entity/BaseEntity.cs +++ b/Entity/BaseEntity.cs @@ -10,11 +10,5 @@ namespace Milimoe.FunGame.Core.Entity public virtual string Name { get; set; } = ""; public abstract bool Equals(IBaseEntity? other); - public abstract IEnumerator GetEnumerator(); - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } } } diff --git a/Entity/Item/Item.cs b/Entity/Item/Item.cs index 59030fb..8be28a7 100644 --- a/Entity/Item/Item.cs +++ b/Entity/Item/Item.cs @@ -10,10 +10,5 @@ namespace Milimoe.FunGame.Core.Entity public bool Active { get; set; } public bool Enable { get; set; } public Character? Character { get; set; } = null; - - public override IEnumerator GetEnumerator() - { - return GetEnumerator(); - } } } diff --git a/Entity/System/Room.cs b/Entity/System/Room.cs index ada7709..b7a6c4c 100644 --- a/Entity/System/Room.cs +++ b/Entity/System/Room.cs @@ -50,11 +50,6 @@ namespace Milimoe.FunGame.Core.Entity return other.Id == Id; } - public override IEnumerator GetEnumerator() - { - return GetEnumerator(); - } - public override bool Equals(IBaseEntity? other) { return Equals(other); diff --git a/Entity/User/User.cs b/Entity/User/User.cs index 9c55430..0497a54 100644 --- a/Entity/User/User.cs +++ b/Entity/User/User.cs @@ -56,10 +56,5 @@ namespace Milimoe.FunGame.Core.Entity if (((User)other).Id == Id) return true; return false; } - - public override IEnumerator GetEnumerator() - { - return GetEnumerator(); - } } } diff --git a/Interface/Entity/Base/IBaseEntity.cs b/Interface/Entity/Base/IBaseEntity.cs index 1850ba1..c6f8c3f 100644 --- a/Interface/Entity/Base/IBaseEntity.cs +++ b/Interface/Entity/Base/IBaseEntity.cs @@ -1,6 +1,6 @@ namespace Milimoe.FunGame.Core.Interface.Entity { - public interface IBaseEntity : IEquatable, IEnumerable + public interface IBaseEntity : IEquatable { public long Id { get; } public Guid Guid { get; } diff --git a/Library/Common/Architecture/RoomList.cs b/Library/Common/Architecture/RoomList.cs index 72c597b..64bca48 100644 --- a/Library/Common/Architecture/RoomList.cs +++ b/Library/Common/Architecture/RoomList.cs @@ -1,30 +1,26 @@ using System.Collections; using Milimoe.FunGame.Core.Entity; -using Milimoe.FunGame.Core.Library.Common.Network; +using Milimoe.FunGame.Core.Library.Constant; namespace Milimoe.FunGame.Core.Library.Common.Architecture { - public class RoomList + public class RoomList : IEnumerable { - public ServerSocket Server => _Server; - public int Count => _List.Count; - - private readonly ServerSocket _Server; private readonly Hashtable _List = new(); - public RoomList(ServerSocket Server) + public int Count => _List.Count; + + public List ListRoom => _List.Values.Cast().ToList(); + + public List ListRoomID => _List.Keys.Cast().ToList(); + + public RoomList() { - _Server = Server; + } - + public Room? this[string RoomID] => GetRoom(RoomID); - public Hashtable GetHashTable => _List; - - public List GetRoomList => _List.Values.Cast().ToList(); - - public List GetRoomIDList => _List.Keys.Cast().ToList(); - public void Clear() { _List.Clear(); @@ -57,5 +53,30 @@ namespace Milimoe.FunGame.Core.Library.Common.Architecture } return room; } + + public bool IsExist(string RoomID) + { + return _List.ContainsKey(RoomID); + } + + public User GetRoomMaster(string RoomID) + { + foreach (Room room in ListRoom) + { + if (room.Roomid == RoomID && room.RoomMaster != null) + { + return room.RoomMaster; + } + } + return General.UnknownUserInstance; + } + + public IEnumerator GetEnumerator() + { + foreach(Room room in ListRoom) + { + yield return room; + } + } } } diff --git a/Library/Constant/General.cs b/Library/Constant/General.cs index fdd71eb..01e721e 100644 --- a/Library/Constant/General.cs +++ b/Library/Constant/General.cs @@ -7,6 +7,7 @@ namespace Milimoe.FunGame.Core.Library.Constant { // Static Variable public static Empty EntityInstance { get; } = new(); + public static User UnknownUserInstance { get; } = new(); public static Room HallInstance { get; } = Api.Utility.Factory.GetHall(); public static Encoding DefaultEncoding { get; } = Encoding.Unicode;