private AmmunitionData(AmmunitionSerializable serializable, Database database) { ItemId = new ItemId <AmmunitionData>(serializable.Id, serializable.FileName); Body = BulletBodyData.Deserialize(serializable.Body, database); Triggers = serializable.Triggers?.Select(item => BulletTriggerData.Deserialize(item, database)).ToArray(); ImpactType = serializable.ImpactType; Effects = serializable.Effects?.Select(item => ImpactEffectData.Deserialize(item, database)).ToArray(); }
public Ammunition(AmmunitionSerializable serializable, Database database) { Id = new ItemId <Ammunition>(serializable.Id, serializable.FileName); Body = new BulletBody(serializable.Body, database); Triggers = serializable.Triggers?.Select(item => new BulletTrigger(item, database)).ToArray(); ImpactType = serializable.ImpactType; Effects = serializable.Effects?.Select(item => new ImpactEffect(item, database)).ToArray(); OnDataDeserialized(serializable, database); }
private Ammunition(AmmunitionSerializable serializable, Database.Loader loader) { Id = new ItemId <Ammunition>(serializable.Id); loader.AddAmmunition(serializable.Id, this); Body = BulletBody.Create(serializable.Body, loader); Triggers = new ImmutableCollection <BulletTrigger>(serializable.Triggers?.Select(item => BulletTrigger.Create(item, loader))); ImpactType = serializable.ImpactType; Effects = new ImmutableCollection <ImpactEffect>(serializable.Effects?.Select(item => ImpactEffect.Create(item, loader))); OnDataDeserialized(serializable, loader); }
public AmmunitionSerializable Serialize() { var serializable = new AmmunitionSerializable(); serializable.Id = ItemId.Id; serializable.FileName = ItemId.Name; serializable.ItemType = (int)ItemType.Ammunition; serializable.Body = Body.Serialize(); serializable.Triggers = Triggers?.Select(item => item.Serialize()).ToArray(); serializable.ImpactType = ImpactType; serializable.Effects = Effects?.Select(item => item.Serialize()).ToArray(); return(serializable); }
public void Save(AmmunitionSerializable serializable) { serializable.Body = Body.Serialize(); if (Triggers == null || Triggers.Length == 0) { serializable.Triggers = null; } else { serializable.Triggers = Triggers.Select(item => item.Serialize()).ToArray(); } serializable.ImpactType = ImpactType; if (Effects == null || Effects.Length == 0) { serializable.Effects = null; } else { serializable.Effects = Effects.Select(item => item.Serialize()).ToArray(); } OnDataSerialized(ref serializable); }
partial void OnDataSerialized(ref AmmunitionSerializable serializable);
partial void OnDataDeserialized(AmmunitionSerializable serializable, Database database);
public static AmmunitionData Deserialize(AmmunitionSerializable serializable, Database database) { return(new AmmunitionData(serializable, database)); }
public static Ammunition Create(AmmunitionSerializable serializable, Database.Loader loader) { return(new Ammunition(serializable, loader)); }
partial void OnDataDeserialized(AmmunitionSerializable serializable, Database.Loader loader);