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()
{