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.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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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));
|
||||||
|
|||||||
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,
|
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()
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user