From 57417a33ac92ff431301ae8ab7faa190468a7152 Mon Sep 17 00:00:00 2001 From: Alen Law Date: Sun, 19 Mar 2023 01:33:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=9E=84=E9=80=A0=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FunGame.Core/Api/Factory/RoomFactory.cs | 4 ++-- FunGame.Core/Api/Transmittal/SQLHelper.cs | 1 + FunGame.Core/Api/Utility/Factory.cs | 13 +++++++------ FunGame.Core/Entity/System/Room.cs | 15 ++++++++++++--- .../Library/SQLScript/Entity/RoomQuery.cs | 1 + 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/FunGame.Core/Api/Factory/RoomFactory.cs b/FunGame.Core/Api/Factory/RoomFactory.cs index c035e65..d79a80b 100644 --- a/FunGame.Core/Api/Factory/RoomFactory.cs +++ b/FunGame.Core/Api/Factory/RoomFactory.cs @@ -5,9 +5,9 @@ namespace Milimoe.FunGame.Core.Api.Factory { internal class RoomFactory { - internal static Room GetInstance(DataSet? DataSet) + internal static Room GetInstance(DataSet? DsRoom, DataSet? DsUser) { - return new Room(DataSet); + return new Room(DsRoom, DsUser); } } } diff --git a/FunGame.Core/Api/Transmittal/SQLHelper.cs b/FunGame.Core/Api/Transmittal/SQLHelper.cs index c18370b..23f0bf4 100644 --- a/FunGame.Core/Api/Transmittal/SQLHelper.cs +++ b/FunGame.Core/Api/Transmittal/SQLHelper.cs @@ -14,6 +14,7 @@ namespace Milimoe.FunGame.Core.Api.Transmittal public abstract string Script { get; set; } public abstract CommandType CommandType { get; set; } public abstract SQLResult Result { get; } + public abstract bool Success { get; } public abstract SQLServerInfo ServerInfo { get; } public abstract int UpdateRows { get; } public abstract DataSet DataSet { get; } diff --git a/FunGame.Core/Api/Utility/Factory.cs b/FunGame.Core/Api/Utility/Factory.cs index 46de84b..4607631 100644 --- a/FunGame.Core/Api/Utility/Factory.cs +++ b/FunGame.Core/Api/Utility/Factory.cs @@ -14,26 +14,27 @@ namespace Milimoe.FunGame.Core.Api.Utility /// 若无法找到T,返回唯一的空对象 /// /// Entity类 - /// 使用DataSet构造对象(真香) + /// 使用DataSet构造对象(真香) /// - public static T GetInstance(DataSet? DataSet) + public static T GetInstance(params DataSet?[] DataSets) { + if (DataSets is null || DataSets.Length == 0) throw new GetInstanceException(); object instance = General.EntityInstance; if (typeof(T) == typeof(User)) { - instance = UserFactory.GetInstance(DataSet); + instance = UserFactory.GetInstance(DataSets[0]); } else if (typeof(T) == typeof(Skill) || typeof(T) == typeof(PassiveSkill)) { - instance = SkillFactory.GetInstance(DataSet); + instance = SkillFactory.GetInstance(DataSets[0]); } else if (typeof(T) == typeof(ActiveSkill)) { - instance = SkillFactory.GetInstance(DataSet, SkillType.Active); + instance = SkillFactory.GetInstance(DataSets[0], SkillType.Active); } else if (typeof(T) == typeof(Room)) { - instance = RoomFactory.GetInstance(DataSet); + instance = RoomFactory.GetInstance(DataSets[0], DataSets[1]); } return (T)instance; } diff --git a/FunGame.Core/Entity/System/Room.cs b/FunGame.Core/Entity/System/Room.cs index 744d2e0..c0bb4b7 100644 --- a/FunGame.Core/Entity/System/Room.cs +++ b/FunGame.Core/Entity/System/Room.cs @@ -2,11 +2,13 @@ using System.Collections; using Milimoe.FunGame.Core.Interface.Entity; using Milimoe.FunGame.Core.Library.Constant; +using Milimoe.FunGame.Core.Library.SQLScript.Entity; namespace Milimoe.FunGame.Core.Entity { public class Room : BaseEntity { + public override long Id { get => base.Id ; set => base.Id = value; } public string Roomid { get; set; } = ""; public DateTime CreateTime { get; set; } = DateTime.Now; public Hashtable PlayerList { get; set; } = new Hashtable(); @@ -25,11 +27,18 @@ namespace Milimoe.FunGame.Core.Entity public string Password { get; set; } = ""; public GameStatistics? Statistics { get; set; } = null; - internal Room(DataSet? DataSet) + internal Room(DataSet? DsRoom, DataSet? DsUser) { - if (DataSet != null && DataSet.Tables.Count > 0 && DataSet.Tables[0].Rows.Count > 0) + if (DsRoom != null && DsRoom.Tables.Count > 0 && DsRoom.Tables[0].Rows.Count > 0) { - + DataRow row = DsRoom.Tables[0].Rows[0]; + Id = (long)row[RoomQuery.Column_ID]; + Roomid = (string)row[RoomQuery.Column_RoomID]; + CreateTime = (DateTime)row[RoomQuery.Column_CreateTime]; + RoomMaster = Api.Utility.Factory.GetInstance(DsUser); + RoomType = (RoomType)Convert.ToInt32(row[RoomQuery.Column_RoomType]); + RoomState = (RoomState)Convert.ToInt32(row[RoomQuery.Column_RoomState]); + Password = (string)row[RoomQuery.Column_Password]; } } diff --git a/FunGame.Core/Library/SQLScript/Entity/RoomQuery.cs b/FunGame.Core/Library/SQLScript/Entity/RoomQuery.cs index 7d384a3..15b81e4 100644 --- a/FunGame.Core/Library/SQLScript/Entity/RoomQuery.cs +++ b/FunGame.Core/Library/SQLScript/Entity/RoomQuery.cs @@ -3,6 +3,7 @@ public class RoomQuery { public const string TableName = "Rooms"; + public const string Column_ID = "Id"; public const string Column_RoomID = "Roomid"; public const string Column_CreateTime = "CreateTime"; public const string Column_RoomMaster = "RoomMaster";