diff --git a/Api/Utility/Factory.cs b/Api/Utility/Factory.cs index e80fca6..e7b1186 100644 --- a/Api/Utility/Factory.cs +++ b/Api/Utility/Factory.cs @@ -19,6 +19,15 @@ namespace Milimoe.FunGame.Core.Api.Utility return RoomFactory.GetInstance(DsRoom, DsUser, Index); } + /// + /// 获取大厅(-1号房) + /// + /// + internal static Room GetHall() + { + return GetRoom(null, null); + } + /// /// 获取Skill实例,默认返回PassiveSkill /// diff --git a/Entity/System/Room.cs b/Entity/System/Room.cs index b65bbb6..ada7709 100644 --- a/Entity/System/Room.cs +++ b/Entity/System/Room.cs @@ -16,15 +16,7 @@ namespace Milimoe.FunGame.Core.Entity public User? RoomMaster { get; set; } public RoomType RoomType { get; set; } public RoomState RoomState { get; set; } - public bool HasPass - { - get - { - if (RoomType == RoomType.MixHasPass || RoomType == RoomType.TeamHasPass) - return true; - else return false; - } - } + public bool HasPass => Password.Trim() != ""; public string Password { get; set; } = ""; public GameStatistics? Statistics { get; set; } = null; @@ -41,6 +33,16 @@ namespace Milimoe.FunGame.Core.Entity RoomState = (RoomState)Convert.ToInt32(DrRoom[RoomQuery.Column_RoomState]); Password = (string)DrRoom[RoomQuery.Column_Password]; } + else + { + Id = 0; + Roomid = "-1"; + CreateTime = DateTime.MinValue; + RoomMaster = null; + RoomType = RoomType.None; + RoomState = RoomState.Created; + Password = ""; + } } public bool Equals(Room other) diff --git a/Library/Common/Event/RoomEventArgs.cs b/Library/Common/Event/RoomEventArgs.cs index 485c6ee..c8b1445 100644 --- a/Library/Common/Event/RoomEventArgs.cs +++ b/Library/Common/Event/RoomEventArgs.cs @@ -1,12 +1,37 @@ -namespace Milimoe.FunGame.Core.Library.Common.Event +using Milimoe.FunGame.Core.Entity; +using Milimoe.FunGame.Core.Library.Constant; + +namespace Milimoe.FunGame.Core.Library.Common.Event { public class RoomEventArgs { public string RoomID { get; set; } = ""; + public long RoomMaster { get; set; } = 0; + public RoomType RoomType { get; set; } = RoomType.None; + public RoomState RoomState { get; set; } = RoomState.Created; + public bool HasPassword => Password.Trim() != ""; + public string Password { get; set; } = ""; - public RoomEventArgs(string RoomID = "") + public RoomEventArgs(string RoomType, string Password) { - this.RoomID = RoomID; + this.RoomType = RoomType switch + { + GameMode.GameMode_Mix => Constant.RoomType.Mix, + GameMode.GameMode_Team => Constant.RoomType.Team, + GameMode.GameMode_MixHasPass => Constant.RoomType.MixHasPass, + GameMode.GameMode_TeamHasPass => Constant.RoomType.TeamHasPass, + _ => Constant.RoomType.None + }; + this.Password = Password; + } + + public RoomEventArgs(Room Room) + { + RoomID = Room.Roomid; + RoomMaster = Room.RoomMaster != null ? Room.RoomMaster.Id : 0; + RoomType = Room.RoomType; + RoomState = Room.RoomState; + Password = Room.Password; } } } diff --git a/Library/Constant/General.cs b/Library/Constant/General.cs index 25a2931..fdd71eb 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 Room HallInstance { get; } = Api.Utility.Factory.GetHall(); public static Encoding DefaultEncoding { get; } = Encoding.Unicode; // Const diff --git a/Library/Constant/TypeEnum.cs b/Library/Constant/TypeEnum.cs index 715a90d..87bcfc9 100644 --- a/Library/Constant/TypeEnum.cs +++ b/Library/Constant/TypeEnum.cs @@ -25,6 +25,7 @@ public enum RoomType { + None, Mix, Team, MixHasPass, @@ -66,7 +67,8 @@ CheckReg, CreateRoom, UpdateRoom, - ChangeRoomSetting + ChangeRoomSetting, + MatchRoom } public enum DataRequestType diff --git a/Library/Server/RoomList.cs b/Library/Server/RoomList.cs index 8a479fe..514dd25 100644 --- a/Library/Server/RoomList.cs +++ b/Library/Server/RoomList.cs @@ -17,15 +17,13 @@ namespace Milimoe.FunGame.Core.Library.Server _Server = Server; } - public List GetRoomList() - { - return _List.Values.Cast().ToList(); - } + public Room? this[string RoomID] => GetRoom(RoomID); + + public Hashtable GetHashTable => _List; + + public List GetRoomList => _List.Values.Cast().ToList(); - public List GetRoomIDList() - { - return _List.Keys.Cast().ToList(); - } + public List GetRoomIDList => _List.Keys.Cast().ToList(); public void Clear() {