public Ammunition(SerializableAmmunition serializable, Database database) { ItemId = new ItemId <Ammunition>(serializable.Id, serializable.FileName); Body = new BulletBody { Type = serializable.Body.Type, Size = new NumericValue <float>(serializable.Body.Size, 0, 1000), Velocity = new NumericValue <float>(serializable.Body.Velocity, 0, 1000), Range = new NumericValue <float>(serializable.Body.Range, 0, 1000), Lifetime = new NumericValue <float>(serializable.Body.Lifetime, 0, 1000), Weight = new NumericValue <float>(serializable.Body.Weight, 0, 1000), HitPoints = new NumericValue <int>(serializable.Body.HitPoints, 0, 1000), EnergyCost = new NumericValue <float>(serializable.Body.EnergyCost, 0, 1000), Color = Helpers.ColorFromString(serializable.Body.Color), BulletPrefab = database.GetBulletPrefabId(serializable.Body.BulletPrefab), CanBeDisarmed = serializable.Body.CanBeDisarmed, FriendlyFire = serializable.Body.FriendlyFire, }; Triggers = serializable.Triggers?.Select(item => new Trigger { Condition = item.Condition, EffectType = item.EffectType, VisualEffect = database.GetVisualEffectId(item.VisualEffect), Ammunition = database.GetAmmunitionId(item.Ammunition), AudioClip = item.AudioClip, Quantity = new NumericValue <int>(item.Quantity, 0, 100), ColorMode = item.ColorMode, Color = Helpers.ColorFromString(item.Color), Size = new NumericValue <float>(item.Size, 0, 1000), Lifetime = new NumericValue <float>(item.Lifetime, 0, 1000), Cooldown = new NumericValue <float>(item.Cooldown, 0, 1000), RandomFactor = new NumericValue <float>(item.RandomFactor, 0, 1), PowerMultiplier = new NumericValue <float>(item.PowerMultiplier, 0, 100), MaxNestingLevel = new NumericValue <int>(item.MaxNestingLevel, 0, 100), }).ToArray(); ImpactType = serializable.ImpactType; ImpactEffects = serializable.Effects?.Select(item => new ImpactEffect { Type = item.Type, DamageType = item.DamageType, Power = new NumericValue <float>(item.Power, 0, 1000), Factor = new NumericValue <float>(item.Factor, 0, 100), }).ToArray(); }
public void Save(SerializableAmmunition serializable) { serializable.Body = new SerializableAmmunition.BulletBody { Type = Body.Type, Size = Body.Size.Value, Velocity = Body.Velocity.Value, Range = Body.Range.Value, Lifetime = Body.Lifetime.Value, Weight = Body.Weight.Value, HitPoints = Body.HitPoints.Value, Color = Helpers.ColorToString(Body.Color), BulletPrefab = Body.BulletPrefab.Id, EnergyCost = Body.EnergyCost.Value, CanBeDisarmed = Body.CanBeDisarmed, FriendlyFire = Body.FriendlyFire, }; serializable.Triggers = Triggers?.Select(item => new SerializableAmmunition.BulletTrigger { Condition = item.Condition, EffectType = item.EffectType, VisualEffect = item.VisualEffect.Id, Ammunition = item.Ammunition.Id, AudioClip = item.AudioClip, Quantity = item.Quantity.Value, Color = Helpers.ColorToString(item.Color), ColorMode = item.ColorMode, Size = item.Size.Value, Lifetime = item.Lifetime.Value, Cooldown = item.Cooldown.Value, RandomFactor = item.RandomFactor.Value, PowerMultiplier = item.PowerMultiplier.Value, MaxNestingLevel = item.MaxNestingLevel.Value, }).ToArray(); serializable.ImpactType = ImpactType; serializable.Effects = ImpactEffects?.Select(item => new SerializableAmmunition.ImpactEffect { Type = item.Type, DamageType = item.DamageType, Power = item.Power.Value, Factor = item.Factor.Value, }).ToArray(); }