From 3c2e26d67e72d78ad4469994fafac0f1bc094e3e Mon Sep 17 00:00:00 2001 From: Mili Date: Fri, 17 Mar 2023 00:17:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Room=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FunGame.Core/Api/Factory/RoomFactory.cs | 22 ++++--------------- FunGame.Core/Api/Factory/SkillFactory.cs | 16 +++++--------- FunGame.Core/Api/Factory/UserFactory.cs | 5 ----- FunGame.Core/Api/Utility/Factory.cs | 15 ++++++++----- FunGame.Core/Entity/Skill/ActiveSkill.cs | 12 ++++------ FunGame.Core/Entity/Skill/PassiveSkill.cs | 12 ++++------ FunGame.Core/Entity/System/Room.cs | 16 ++++++-------- .../Library/SQLScript/Common/Common.cs | 11 +++++++--- .../Library/SQLScript/Entity/RoomQuery.cs | 17 ++++++++++++++ .../Entity/{User.cs => UserQuery.cs} | 0 10 files changed, 60 insertions(+), 66 deletions(-) create mode 100644 FunGame.Core/Library/SQLScript/Entity/RoomQuery.cs rename FunGame.Core/Library/SQLScript/Entity/{User.cs => UserQuery.cs} (100%) diff --git a/FunGame.Core/Api/Factory/RoomFactory.cs b/FunGame.Core/Api/Factory/RoomFactory.cs index 1702332..c035e65 100644 --- a/FunGame.Core/Api/Factory/RoomFactory.cs +++ b/FunGame.Core/Api/Factory/RoomFactory.cs @@ -1,27 +1,13 @@ -using Milimoe.FunGame.Core.Library.Constant; +using System.Data; +using Milimoe.FunGame.Core.Entity; namespace Milimoe.FunGame.Core.Api.Factory { internal class RoomFactory { - internal static Milimoe.FunGame.Core.Entity.Room GetInstanceByRandomID(RoomType type, Milimoe.FunGame.Core.Entity.User? user) + internal static Room GetInstance(DataSet? DataSet) { - Milimoe.FunGame.Core.Entity.Room room = new(user) - { - RoomType = type, - RoomState = RoomState.Created - }; - return room; - } - - internal static Milimoe.FunGame.Core.Entity.Room GetInstanceByRoomID(RoomType type, string roomid, Milimoe.FunGame.Core.Entity.User? user) - { - Milimoe.FunGame.Core.Entity.Room room = new(roomid, user) - { - RoomType = type, - RoomState = RoomState.Created - }; - return room; + return new Room(DataSet); } } } diff --git a/FunGame.Core/Api/Factory/SkillFactory.cs b/FunGame.Core/Api/Factory/SkillFactory.cs index a51fa9d..674a571 100644 --- a/FunGame.Core/Api/Factory/SkillFactory.cs +++ b/FunGame.Core/Api/Factory/SkillFactory.cs @@ -1,22 +1,18 @@ using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Library.Constant; +using System.Data; namespace Milimoe.FunGame.Core.Api.Factory { internal class SkillFactory { - internal static Skill? GetInstance(SkillType type, string Name) + internal static Skill GetInstance(DataSet? DataSet, SkillType type = SkillType.Passive) { - Skill? skill = null; - switch (type) + Skill skill = type switch { - case SkillType.Active: - skill = new Milimoe.FunGame.Core.Entity.ActiveSkill(Name); - break; - case SkillType.Passive: - skill = new Milimoe.FunGame.Core.Entity.PassiveSkill(Name); - break; - } + SkillType.Active => new ActiveSkill(DataSet), + _ => new PassiveSkill(DataSet) + }; return skill; } } diff --git a/FunGame.Core/Api/Factory/UserFactory.cs b/FunGame.Core/Api/Factory/UserFactory.cs index 9a489de..cc7e0f7 100644 --- a/FunGame.Core/Api/Factory/UserFactory.cs +++ b/FunGame.Core/Api/Factory/UserFactory.cs @@ -5,11 +5,6 @@ namespace Milimoe.FunGame.Core.Api.Factory { internal class UserFactory { - internal static User GetInstance() - { - return new User(); - } - internal static User GetInstance(DataSet? DataSet) { return new User(DataSet); diff --git a/FunGame.Core/Api/Utility/Factory.cs b/FunGame.Core/Api/Utility/Factory.cs index 58076ea..ef3f5f4 100644 --- a/FunGame.Core/Api/Utility/Factory.cs +++ b/FunGame.Core/Api/Utility/Factory.cs @@ -1,13 +1,14 @@ using System.Data; +using Milimoe.FunGame.Core.Api.Factory; using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Library.Constant; namespace Milimoe.FunGame.Core.Api.Utility { public class Factory - { + { /// - /// 获取一个可能为NULL的实例 + /// 获取一个不为NULL的实例 /// Item默认返回PassiveItem /// Skill默认返回PassiveSkill /// 若无法找到T,返回唯一的空对象 @@ -20,11 +21,15 @@ namespace Milimoe.FunGame.Core.Api.Utility object instance = General.EntityInstance; if (typeof(T) == typeof(User)) { - instance = Api.Factory.UserFactory.GetInstance(DataSet); + instance = UserFactory.GetInstance(DataSet); } - else if (typeof(T) == typeof(Skill)) + else if (typeof(T) == typeof(Skill) || typeof(T) == typeof(PassiveSkill)) { - + instance = SkillFactory.GetInstance(DataSet); + } + else if (typeof(T) == typeof(ActiveSkill)) + { + instance = SkillFactory.GetInstance(DataSet, SkillType.Active); } return (T)instance; } diff --git a/FunGame.Core/Entity/Skill/ActiveSkill.cs b/FunGame.Core/Entity/Skill/ActiveSkill.cs index f3b3859..d4006d3 100644 --- a/FunGame.Core/Entity/Skill/ActiveSkill.cs +++ b/FunGame.Core/Entity/Skill/ActiveSkill.cs @@ -1,4 +1,6 @@ -namespace Milimoe.FunGame.Core.Entity +using System.Data; + +namespace Milimoe.FunGame.Core.Entity { public class ActiveSkill : Skill { @@ -15,15 +17,9 @@ public decimal Reference9 { get; set; } = 0; public decimal Reference10 { get; set; } = 0; - internal ActiveSkill() + internal ActiveSkill(DataSet? DataSet) { Active = true; } - - internal ActiveSkill(string Name) - { - Active = true; - this.Name = Name; - } } } diff --git a/FunGame.Core/Entity/Skill/PassiveSkill.cs b/FunGame.Core/Entity/Skill/PassiveSkill.cs index 72dc600..66b64e4 100644 --- a/FunGame.Core/Entity/Skill/PassiveSkill.cs +++ b/FunGame.Core/Entity/Skill/PassiveSkill.cs @@ -1,4 +1,6 @@ -namespace Milimoe.FunGame.Core.Entity +using System.Data; + +namespace Milimoe.FunGame.Core.Entity { public class PassiveSkill : Skill { @@ -13,15 +15,9 @@ public decimal Reference9 { get; set; } = 0; public decimal Reference10 { get; set; } = 0; - internal PassiveSkill() + internal PassiveSkill(DataSet? DataSet) { Active = false; } - - internal PassiveSkill(string Name) - { - Active = false; - this.Name = Name; - } } } diff --git a/FunGame.Core/Entity/System/Room.cs b/FunGame.Core/Entity/System/Room.cs index ec6c850..70bf8fb 100644 --- a/FunGame.Core/Entity/System/Room.cs +++ b/FunGame.Core/Entity/System/Room.cs @@ -1,13 +1,14 @@ using Milimoe.FunGame.Core.Interface.Entity; using Milimoe.FunGame.Core.Library.Constant; using System.Collections; +using System.Data; namespace Milimoe.FunGame.Core.Entity { public class Room : BaseEntity { public string Roomid { get; set; } = ""; - public DateTime Time { get; set; } = DateTime.Now; + public DateTime CreateTime { get; set; } = DateTime.Now; public Hashtable PlayerList { get; set; } = new Hashtable(); public User? RoomMaster { get; set; } public RoomType RoomType { get; set; } @@ -24,15 +25,12 @@ namespace Milimoe.FunGame.Core.Entity public string Password { get; set; } = ""; public GameStatistics? Statistics { get; set; } = null; - internal Room(User? master = null) + internal Room(DataSet? DataSet) { - if (master != null) RoomMaster = master; - } - - internal Room(string roomid, User? master = null) - { - Roomid = roomid; - if (master != null) RoomMaster = master; + if (DataSet != null && DataSet.Tables.Count > 0 && DataSet.Tables[0].Rows.Count > 0) + { + + } } public bool Equals(Room other) diff --git a/FunGame.Core/Library/SQLScript/Common/Common.cs b/FunGame.Core/Library/SQLScript/Common/Common.cs index 08a1942..690ca49 100644 --- a/FunGame.Core/Library/SQLScript/Common/Common.cs +++ b/FunGame.Core/Library/SQLScript/Common/Common.cs @@ -9,14 +9,19 @@ public const string Command_Update = "Update"; public const string Command_Delete = "Delete"; public const string Command_Insert = "Insert"; - public const string Command_Set = "Set"; - public const string Command_Where = "Where"; public const string Command_From = "From"; - public const string Command_All = "*"; + public const string Command_Set = "Set"; public const string Command_Into = "Into"; + public const string Command_Where = "Where"; + public const string Command_All = "*"; public const string Command_Values = "Values"; public const string Command_And = "And"; public const string Command_Or = "Or"; + public const string Command_As = "As"; + public const string Command_LeftJoin = "Left Join"; + public const string Command_InnerJoin = "Inner Join"; + public const string Command_RightJoin = "Right Join"; + public const string Command_On = "On"; } } diff --git a/FunGame.Core/Library/SQLScript/Entity/RoomQuery.cs b/FunGame.Core/Library/SQLScript/Entity/RoomQuery.cs new file mode 100644 index 0000000..7d384a3 --- /dev/null +++ b/FunGame.Core/Library/SQLScript/Entity/RoomQuery.cs @@ -0,0 +1,17 @@ +namespace Milimoe.FunGame.Core.Library.SQLScript.Entity +{ + public class RoomQuery + { + public const string TableName = "Rooms"; + public const string Column_RoomID = "Roomid"; + public const string Column_CreateTime = "CreateTime"; + public const string Column_RoomMaster = "RoomMaster"; + public const string Column_RoomMasterName = "RoomMasterName"; + public const string Column_RoomType = "RoomType"; + public const string Column_RoomState = "RoomState"; + public const string Column_HasPass = "HasPass"; + public const string Column_Password = "Password"; + public const string Select_Rooms = $"{Constant.Command_Select} {TableName}.{Constant.Command_All}, {UserQuery.TableName}.{UserQuery.Column_Username} {Constant.Command_As} {Column_RoomMasterName} " + + $"{Constant.Command_From} {TableName} {Constant.Command_LeftJoin} {UserQuery.TableName} {Constant.Command_On} {UserQuery.TableName}.{UserQuery.Column_UID} = {TableName}.{Column_RoomMaster}"; + } +} diff --git a/FunGame.Core/Library/SQLScript/Entity/User.cs b/FunGame.Core/Library/SQLScript/Entity/UserQuery.cs similarity index 100% rename from FunGame.Core/Library/SQLScript/Entity/User.cs rename to FunGame.Core/Library/SQLScript/Entity/UserQuery.cs