mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2025-12-05 00:06:02 +00:00
添加普通攻击类JSON转换器
This commit is contained in:
parent
1e46318da5
commit
93eeb195bb
@ -251,6 +251,7 @@ namespace Milimoe.FunGame.Core.Entity
|
||||
character.EXP = reference.EXP;
|
||||
}
|
||||
character.NormalAttack.Level = reference.NormalAttack.Level;
|
||||
character.NormalAttack.HardnessTime = reference.NormalAttack.HardnessTime;
|
||||
character.NormalAttack.SetMagicType(reference.NormalAttack.IsMagic, reference.NormalAttack.MagicType);
|
||||
return character;
|
||||
}
|
||||
|
||||
@ -197,6 +197,12 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
|
||||
case nameof(Character.ExEvadeRate):
|
||||
result.ExEvadeRate = reader.GetDouble();
|
||||
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):
|
||||
HashSet<Skill> skills = NetworkUtility.JsonDeserialize<HashSet<Skill>>(ref reader, options) ?? [];
|
||||
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.ExCritDMG), value.ExCritDMG);
|
||||
writer.WriteNumber(nameof(Character.ExEvadeRate), value.ExEvadeRate);
|
||||
writer.WritePropertyName(nameof(Character.NormalAttack));
|
||||
JsonSerializer.Serialize(writer, value.NormalAttack, options);
|
||||
writer.WritePropertyName(nameof(Character.Skills));
|
||||
JsonSerializer.Serialize(writer, value.Skills.Where(s => s.Guid == Guid.Empty), options);
|
||||
writer.WritePropertyName(nameof(Character.Items));
|
||||
|
||||
47
Library/Common/JsonConverter/NormalAttackConverter.cs
Normal file
47
Library/Common/JsonConverter/NormalAttackConverter.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -21,7 +21,7 @@ namespace Milimoe.FunGame.Core.Service
|
||||
ReferenceHandler = ReferenceHandler.IgnoreCycles,
|
||||
Converters = { new DateTimeConverter(), new DataTableConverter(), new DataSetConverter(), new UserConverter(), new RoomConverter(),
|
||||
new CharacterConverter(), new MagicResistanceConverter(), new EquipSlotConverter(), new SkillConverter(), new EffectConverter(), new ItemConverter(),
|
||||
new InventoryConverter()
|
||||
new InventoryConverter(), new NormalAttackConverter()
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user