示例#1
0
 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();
 }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
 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);
 }
示例#6
0
 partial void OnDataSerialized(ref AmmunitionSerializable serializable);
示例#7
0
 partial void OnDataDeserialized(AmmunitionSerializable serializable, Database database);
示例#8
0
 public static AmmunitionData Deserialize(AmmunitionSerializable serializable, Database database)
 {
     return(new AmmunitionData(serializable, database));
 }
示例#9
0
 public static Ammunition Create(AmmunitionSerializable serializable, Database.Loader loader)
 {
     return(new Ammunition(serializable, loader));
 }
示例#10
0
 partial void OnDataDeserialized(AmmunitionSerializable serializable, Database.Loader loader);