diff --git a/FunGame.Core/Api/Factory/UserFactory.cs b/FunGame.Core/Api/Factory/UserFactory.cs index ce3aa03..9a489de 100644 --- a/FunGame.Core/Api/Factory/UserFactory.cs +++ b/FunGame.Core/Api/Factory/UserFactory.cs @@ -10,9 +10,9 @@ namespace Milimoe.FunGame.Core.Api.Factory return new User(); } - internal static User GetInstance(DataSet? ds) + internal static User GetInstance(DataSet? DataSet) { - return new User(ds); + return new User(DataSet); } } } diff --git a/FunGame.Core/Api/Utility/General.cs b/FunGame.Core/Api/Utility/General.cs index f71120e..4f54573 100644 --- a/FunGame.Core/Api/Utility/General.cs +++ b/FunGame.Core/Api/Utility/General.cs @@ -115,34 +115,6 @@ namespace Milimoe.FunGame.Core.Api.Utility } return -1; } - - /// - /// 将JsonElement转换为泛型 - /// - /// 泛型 - /// 为JsonElement的对象 - /// - public static T? ConvertJsonObject(object obj) - { - return ((JsonElement)obj).ToObject(); - } - } - - /// - /// Json工具类 - /// - internal static class JsonUtility - { - /// - /// 将JsonElement转换为泛型 - /// - /// 泛型 - /// JsonElement - /// - internal static T? ToObject(this JsonElement element) - { - return JsonSerializer.Deserialize(element.GetRawText()); - } } #endregion diff --git a/FunGame.Core/Entity/BaseEntity.cs b/FunGame.Core/Entity/BaseEntity.cs index 0429982..975efa4 100644 --- a/FunGame.Core/Entity/BaseEntity.cs +++ b/FunGame.Core/Entity/BaseEntity.cs @@ -1,13 +1,13 @@ -using Milimoe.FunGame.Core.Interface.Entity; -using System.Collections; +using System.Collections; +using Milimoe.FunGame.Core.Interface.Entity; namespace Milimoe.FunGame.Core.Entity { public abstract class BaseEntity : IBaseEntity { - public long Id { get; set; } = 0; - public Guid Guid { get; set; } = Guid.Empty; - public string Name { get; set; } = ""; + public virtual long Id { get; set; } = 0; + public virtual Guid Guid { get; set; } = Guid.Empty; + public virtual string Name { get; set; } = ""; public abstract bool Equals(IBaseEntity? other); public abstract IEnumerator GetEnumerator(); diff --git a/FunGame.Core/Entity/User/User.cs b/FunGame.Core/Entity/User/User.cs index df892d9..5adf260 100644 --- a/FunGame.Core/Entity/User/User.cs +++ b/FunGame.Core/Entity/User/User.cs @@ -6,7 +6,7 @@ namespace Milimoe.FunGame.Core.Entity { public class User : BaseEntity { - public new long Id { get; set; } + public override long Id { get; set; } public string Username { get; set; } = ""; public string Password { get; set; } = ""; public DateTime RegTime { get; set; } @@ -28,11 +28,11 @@ namespace Milimoe.FunGame.Core.Entity } - internal User(DataSet? ds) + internal User(DataSet? DataSet) { - if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) + if (DataSet != null && DataSet.Tables.Count > 0 && DataSet.Tables[0].Rows.Count > 0) { - DataRow row = ds.Tables[0].Rows[0]; + DataRow row = DataSet.Tables[0].Rows[0]; Id = (long)row[UserQuery.Column_UID]; Username = (string)row[UserQuery.Column_Username]; Password = (string)row[UserQuery.Column_Password]; @@ -40,12 +40,12 @@ namespace Milimoe.FunGame.Core.Entity LastTime = (DateTime)row[UserQuery.Column_LastTime]; Email = (string)row[UserQuery.Column_Email]; NickName = (string)row[UserQuery.Column_Nickname]; - IsAdmin = (int)row[UserQuery.Column_IsAdmin] == 1; - IsOperator = (int)row[UserQuery.Column_IsOperator] == 1; - IsEnable = (int)row[UserQuery.Column_IsEnable] == 1; - Credits = (decimal)row[UserQuery.Column_Credits]; - Materials = (decimal)row[UserQuery.Column_Materials]; - GameTime = (decimal)row[UserQuery.Column_GameTime]; + IsAdmin = Convert.ToInt32(row[UserQuery.Column_IsAdmin]) == 1; + IsOperator = Convert.ToInt32(row[UserQuery.Column_IsOperator]) == 1; + IsEnable = Convert.ToInt32(row[UserQuery.Column_IsEnable]) == 1; + Credits = Convert.ToDecimal(row[UserQuery.Column_Credits]); + Materials = Convert.ToDecimal(row[UserQuery.Column_Materials]); + GameTime = Convert.ToDecimal(row[UserQuery.Column_GameTime]); AutoKey = (string)row[UserQuery.Column_AutoKey]; } } diff --git a/FunGame.Core/Library/Common/Network/JsonObject.cs b/FunGame.Core/Library/Common/Network/JsonObject.cs index fa26ef2..44e83ae 100644 --- a/FunGame.Core/Library/Common/Network/JsonObject.cs +++ b/FunGame.Core/Library/Common/Network/JsonObject.cs @@ -1,4 +1,5 @@ using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using Milimoe.FunGame.Core.Library.Constant; namespace Milimoe.FunGame.Core.Library.Common.Network @@ -11,12 +12,21 @@ namespace Milimoe.FunGame.Core.Library.Common.Network public object[] Parameters { get; } public string JsonString { get; } + private JArray? JArray; + public JsonObject(SocketMessageType MessageType, Guid Token, params object[] Parameters) { this.MessageType = MessageType; this.Token = Token; this.Parameters = Parameters; - this.JsonString = JsonConvert.SerializeObject(this); + this.JsonString = JsonConvert.SerializeObject(this, Formatting.Indented); + } + + public T? GetObject(int i) + { + if (i >= Parameters.Length) throw new IndexOutOfArrayLengthException(); + JArray ??= JArray.FromObject(Parameters); + return JArray[i].ToObject(); } public static string GetString(SocketMessageType MessageType, Guid Token, params object[] Parameters) @@ -29,4 +39,5 @@ namespace Milimoe.FunGame.Core.Library.Common.Network return JsonConvert.DeserializeObject(JsonString); } } + } diff --git a/FunGame.Core/Library/Common/Network/SocketObject.cs b/FunGame.Core/Library/Common/Network/SocketObject.cs index 334e27a..a22d9bb 100644 --- a/FunGame.Core/Library/Common/Network/SocketObject.cs +++ b/FunGame.Core/Library/Common/Network/SocketObject.cs @@ -8,13 +8,24 @@ namespace Milimoe.FunGame.Core.Library.Common.Network public Guid Token { get; } = Guid.Empty; public object[] Parameters { get; } = Array.Empty(); public int Length { get; } = 0; + private JsonObject Json { get; } - public SocketObject(SocketMessageType type, Guid token, params object[] parameters) + public SocketObject(JsonObject json) { - SocketType = type; - Token = token; - Parameters = parameters; - Length = parameters.Length; + Json = json; + SocketType = Json.MessageType; + Token = Json.Token; + Parameters = Json.Parameters; + Length = Parameters.Length; + } + + public SocketObject() + { + Json = new JsonObject(SocketMessageType.Unknown, Guid.Empty, Array.Empty()); + SocketType = Json.MessageType; + Token = Json.Token; + Parameters = Json.Parameters; + Length = Parameters.Length; } /// @@ -24,18 +35,6 @@ namespace Milimoe.FunGame.Core.Library.Common.Network /// 索引 /// 类型的参数 /// 索引超过数组上限 - public T? GetParam(int index) - { - if (index < Parameters.Length) - { - if (typeof(T) == typeof(Guid)) - { - object param = Guid.Parse((string)Parameters[index]); - return (T)param; - } - return (T)Parameters[index]; - } - throw new IndexOutOfArrayLengthException(); - } + public T? GetParam(int index) => Json.GetObject(index); } } diff --git a/FunGame.Core/Service/SocketManager.cs b/FunGame.Core/Service/SocketManager.cs index addf503..9afc4c3 100644 --- a/FunGame.Core/Service/SocketManager.cs +++ b/FunGame.Core/Service/SocketManager.cs @@ -170,7 +170,7 @@ namespace Milimoe.FunGame.Core.Service Library.Common.Network.JsonObject? json = Library.Common.Network.JsonObject.GetObject(msg); if (json != null) { - result = new Library.Common.Network.SocketObject(json.MessageType, json.Token, json.Parameters); + result = new Library.Common.Network.SocketObject(json); } // 客户端接收消息,广播ScoketObject到每个UIModel OnSocketReceive(result); @@ -199,7 +199,7 @@ namespace Milimoe.FunGame.Core.Service Library.Common.Network.JsonObject? json = Library.Common.Network.JsonObject.GetObject(msg); if (json != null) { - result = new Library.Common.Network.SocketObject(json.MessageType, json.Token, json.Parameters); + result = new Library.Common.Network.SocketObject(json); } return result; } diff --git a/FunGame.Desktop/Model/RunTimeModel.cs b/FunGame.Desktop/Model/RunTimeModel.cs index fbf4c25..e57e6f4 100644 --- a/FunGame.Desktop/Model/RunTimeModel.cs +++ b/FunGame.Desktop/Model/RunTimeModel.cs @@ -3,7 +3,6 @@ using Milimoe.FunGame.Core.Library.Common.Event; using Milimoe.FunGame.Core.Library.Common.Network; using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.Exception; -using Milimoe.FunGame.Desktop.Controller; using Milimoe.FunGame.Desktop.Library.Component; using Milimoe.FunGame.Desktop.Library; using Milimoe.FunGame.Desktop.UI; @@ -227,7 +226,7 @@ namespace Milimoe.FunGame.Desktop.Model { return Socket.Receive(); } - return new SocketObject(SocketMessageType.Unknown, Guid.Empty, Array.Empty()); + return new SocketObject(); } private SocketMessageType Receiving()