添加普通攻击类JSON转换器

This commit is contained in:
milimoe 2024-12-26 01:09:24 +08:00
parent 1e46318da5
commit 93eeb195bb
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
4 changed files with 57 additions and 1 deletions

View File

@ -251,6 +251,7 @@ namespace Milimoe.FunGame.Core.Entity
character.EXP = reference.EXP; character.EXP = reference.EXP;
} }
character.NormalAttack.Level = reference.NormalAttack.Level; character.NormalAttack.Level = reference.NormalAttack.Level;
character.NormalAttack.HardnessTime = reference.NormalAttack.HardnessTime;
character.NormalAttack.SetMagicType(reference.NormalAttack.IsMagic, reference.NormalAttack.MagicType); character.NormalAttack.SetMagicType(reference.NormalAttack.IsMagic, reference.NormalAttack.MagicType);
return character; return character;
} }

View File

@ -197,6 +197,12 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
case nameof(Character.ExEvadeRate): case nameof(Character.ExEvadeRate):
result.ExEvadeRate = reader.GetDouble(); result.ExEvadeRate = reader.GetDouble();
break; break;
case nameof(Character.NormalAttack):
NormalAttack normalAttack = NetworkUtility.JsonDeserialize<NormalAttack>(ref reader, options) ?? new NormalAttack(result);
result.NormalAttack.Level = normalAttack.Level;
result.NormalAttack.HardnessTime = normalAttack.HardnessTime;
result.NormalAttack.SetMagicType(normalAttack.IsMagic, normalAttack.MagicType);
break;
case nameof(Character.Skills): case nameof(Character.Skills):
HashSet<Skill> skills = NetworkUtility.JsonDeserialize<HashSet<Skill>>(ref reader, options) ?? []; HashSet<Skill> skills = NetworkUtility.JsonDeserialize<HashSet<Skill>>(ref reader, options) ?? [];
foreach (Skill skill in skills) foreach (Skill skill in skills)
@ -280,6 +286,8 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
writer.WriteNumber(nameof(Character.ExCritRate), value.ExCritRate); writer.WriteNumber(nameof(Character.ExCritRate), value.ExCritRate);
writer.WriteNumber(nameof(Character.ExCritDMG), value.ExCritDMG); writer.WriteNumber(nameof(Character.ExCritDMG), value.ExCritDMG);
writer.WriteNumber(nameof(Character.ExEvadeRate), value.ExEvadeRate); writer.WriteNumber(nameof(Character.ExEvadeRate), value.ExEvadeRate);
writer.WritePropertyName(nameof(Character.NormalAttack));
JsonSerializer.Serialize(writer, value.NormalAttack, options);
writer.WritePropertyName(nameof(Character.Skills)); writer.WritePropertyName(nameof(Character.Skills));
JsonSerializer.Serialize(writer, value.Skills.Where(s => s.Guid == Guid.Empty), options); JsonSerializer.Serialize(writer, value.Skills.Where(s => s.Guid == Guid.Empty), options);
writer.WritePropertyName(nameof(Character.Items)); writer.WritePropertyName(nameof(Character.Items));

View File

@ -0,0 +1,47 @@
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;
namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
{
public class NormalAttackConverter : BaseEntityConverter<NormalAttack>
{
public override NormalAttack NewInstance()
{
return new NormalAttack(Factory.GetCharacter());
}
public override void ReadPropertyName(ref Utf8JsonReader reader, string propertyName, JsonSerializerOptions options, ref NormalAttack result)
{
switch (propertyName)
{
case nameof(NormalAttack.Level):
result.Level = reader.GetInt32();
break;
case nameof(NormalAttack.HardnessTime):
result.HardnessTime = reader.GetDouble();
break;
case nameof(NormalAttack.IsMagic):
result.SetMagicType(reader.GetBoolean(), result.MagicType);
break;
case nameof(NormalAttack.MagicType):
result.SetMagicType(result.IsMagic, (MagicType)reader.GetInt32());
break;
}
}
public override void Write(Utf8JsonWriter writer, NormalAttack value, JsonSerializerOptions options)
{
writer.WriteStartObject();
writer.WriteNumber(nameof(NormalAttack.Level), value.Level);
writer.WriteNumber(nameof(NormalAttack.HardnessTime), value.HardnessTime);
writer.WriteBoolean(nameof(NormalAttack.IsMagic), value.IsMagic);
writer.WriteNumber(nameof(NormalAttack.MagicType), (int)value.MagicType);
writer.WriteEndObject();
}
}
}

View File

@ -21,7 +21,7 @@ namespace Milimoe.FunGame.Core.Service
ReferenceHandler = ReferenceHandler.IgnoreCycles, ReferenceHandler = ReferenceHandler.IgnoreCycles,
Converters = { new DateTimeConverter(), new DataTableConverter(), new DataSetConverter(), new UserConverter(), new RoomConverter(), Converters = { new DateTimeConverter(), new DataTableConverter(), new DataSetConverter(), new UserConverter(), new RoomConverter(),
new CharacterConverter(), new MagicResistanceConverter(), new EquipSlotConverter(), new SkillConverter(), new EffectConverter(), new ItemConverter(), new CharacterConverter(), new MagicResistanceConverter(), new EquipSlotConverter(), new SkillConverter(), new EffectConverter(), new ItemConverter(),
new InventoryConverter() new InventoryConverter(), new NormalAttackConverter()
} }
}; };