示例#1
0
        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();
        }
示例#2
0
        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();
        }