milimoe 3d02cb3db3
添加行动顺序表和角色技能操作 (#87)
* 添加行动顺序表和角色技能操作

* 添加更多内容(特效的设计接口等)

* 添加爆发技插队和插队保护机制
2024-09-09 01:45:46 +08:00

77 lines
3.4 KiB
C#

using System.Text.Json;
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Architecture;
using Milimoe.FunGame.Core.Library.Constant;
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
{
public class RoomConverter : BaseEntityConverter<Room>
{
public override Room NewInstance()
{
return Factory.GetRoom();
}
public override void ReadPropertyName(ref Utf8JsonReader reader, string propertyName, JsonSerializerOptions options, ref Room result)
{
switch (propertyName)
{
case RoomQuery.Column_ID:
result.Id = reader.GetInt64();
break;
case RoomQuery.Column_RoomID:
result.Roomid = reader.GetString() ?? "";
break;
case RoomQuery.Column_CreateTime:
string dateString = reader.GetString() ?? "";
if (DateTime.TryParseExact(dateString, General.GeneralDateTimeFormat, null, System.Globalization.DateTimeStyles.None, out DateTime date))
{
result.CreateTime = date;
}
else result.CreateTime = General.DefaultTime;
break;
case RoomQuery.Column_RoomMaster:
result.RoomMaster = JsonSerializer.Deserialize<User>(ref reader, options) ?? General.UnknownUserInstance;
break;
case RoomQuery.Column_RoomType:
result.RoomType = (RoomType)reader.GetInt64();
break;
case RoomQuery.Column_GameModule:
result.GameModule = reader.GetString() ?? "";
break;
case RoomQuery.Column_GameMap:
result.GameMap = reader.GetString() ?? "";
break;
case RoomQuery.Column_RoomState:
result.RoomState = (RoomState)reader.GetInt64();
break;
case RoomQuery.Column_IsRank:
result.IsRank = reader.GetBoolean();
break;
case RoomQuery.Column_Password:
result.Password = reader.GetString() ?? "";
break;
}
}
public override void Write(Utf8JsonWriter writer, Room value, JsonSerializerOptions options)
{
writer.WriteStartObject();
writer.WriteNumber(RoomQuery.Column_ID, value.Id);
writer.WriteString(RoomQuery.Column_RoomID, value.Roomid);
writer.WriteString(RoomQuery.Column_CreateTime, value.CreateTime.ToString(General.GeneralDateTimeFormat));
writer.WritePropertyName(RoomQuery.Column_RoomMaster);
JsonSerializer.Serialize(writer, value.RoomMaster, options);
writer.WriteString(RoomQuery.Column_GameModule, value.GameModule);
writer.WriteString(RoomQuery.Column_GameMap, value.GameMap);
writer.WriteNumber(RoomQuery.Column_RoomType, (long)value.RoomType);
writer.WriteNumber(RoomQuery.Column_RoomState, (long)value.RoomState);
writer.WriteBoolean(RoomQuery.Column_IsRank, value.IsRank);
writer.WriteString(RoomQuery.Column_Password, value.Password);
writer.WriteEndObject();
}
}
}