Пример #1
0
        protected override void UpdatePosition()
        {
            base.UpdatePosition();
            switch (rocketAnimation)
            {
            case ProjectileAnimationState.Closed:
                if (totalTravelledTime < Parameter.ProjectileArmorSSTransformTime)
                {
                    totalTravelledTime += Parameter.ProjectileMovementTotalTimeElapsed;
                }
                else
                {
                    IsAbleToRefreshPosition = false;
                    rocketAnimation         = ProjectileAnimationState.Opening;
                    FlipbookList[0].AppendAnimationIntoCycle(rocketAnimationPresets[ProjectileAnimationState.Opening], true);
                    FlipbookList[0].AppendAnimationIntoCycle(rocketAnimationPresets[ProjectileAnimationState.Opened]);
                    BaseDamage     += Parameter.ProjectileArmorSSEBaseDamage;
                    ExplosionRadius = Parameter.ProjectileArmorSSEExplosionRadius;
                }
                break;

            case ProjectileAnimationState.Opening:
                if (FlipbookList[0].CurrentAnimationInstance == rocketAnimationPresets[ProjectileAnimationState.Opened])
                {
                    IsAbleToRefreshPosition = true;
                    rocketAnimation         = ProjectileAnimationState.Opened;
                }
                break;

            case ProjectileAnimationState.Opened: break;
            }
        }
Пример #2
0
        public DragonProjectile3SS(Dragon mobile, Vector2 initialPosition, Vector2 finalPosition, float spawnTime)
            : base(mobile, ShotType.SS, Parameter.ProjectileDragonSSExplosionRadius, Parameter.ProjectileDragonSSBaseDamage,
                   projectileInitialPosition: initialPosition)
        {
            //Calculate the angle of the swords
            double angle = (float)Helper.AngleBetween(finalPosition, initialPosition);

            //Initializing Flipbook
            FlipbookList.Add(new Flipbook(
                                 initialPosition, new Vector2(49.5f, 40),
                                 99, 80, "Graphics/Tank/Dragon/Shot3",
                                 new List <AnimationInstance>()
            {
                new AnimationInstance()
                {
                    StartingFrame = 0, EndingFrame = 17, TimePerFrame = 1 / 20f
                },
                new AnimationInstance()
                {
                    StartingFrame = 18, EndingFrame = 40, TimePerFrame = 1 / 20f
                },
            }, DepthParameter.Projectile, rotation: (float)angle));

            SpawnTime = spawnTime;

            animationState = ProjectileAnimationState.Spawning;

            IsAbleToRefreshPosition = false;

            InitializeMovement();
        }
Пример #3
0
        protected override void UpdatePosition()
        {
            base.UpdatePosition();

            switch (bubbleAnimation)
            {
            case ProjectileAnimationState.Closed:
                if (totalTravelledTime < Parameter.ProjectileTurtleSSTransformTime)
                {
                    totalTravelledTime += Parameter.ProjectileMovementTotalTimeElapsed;
                }
                else
                {
                    IsAbleToRefreshPosition = false;
                    bubbleAnimation         = ProjectileAnimationState.Opening;
                }
                break;

            case ProjectileAnimationState.Opening:
                bubbleAnimation = ProjectileAnimationState.Opened;
                SpecialEffectBuilder.TurtleProjectile3Division(FlipbookList[0].Position, FlipbookList[0].Rotation);
                TurtleProjectileEmitter.Shot3((Turtle)Mobile, force, FlipbookList[0].Position, FlipbookList[0].Rotation, OnFinalizeExecutionAction);
                PlayExplosionSFX();
                GameScene.Camera.TrackObject(Mobile.LastCreatedProjectileList.First());
                IsAbleToRefreshPosition = true;
                break;

            case ProjectileAnimationState.Opened:
                base.Destroy();
                break;
            }
        }
Пример #4
0
        protected override void UpdatePosition()
        {
            base.UpdatePosition();

            switch (animationState)
            {
            case ProjectileAnimationState.Spawning:
                if (FlipbookList[0].FlipbookAnimationList.Count() == 1)
                {
                    IsAbleToRefreshPosition = true;
                    animationState          = ProjectileAnimationState.Moving;
                }
                break;

            case ProjectileAnimationState.Moving: break;
            }
        }
Пример #5
0
        public TurtleProjectile3(Turtle mobile)
            : base(mobile, ShotType.SS, Parameter.ProjectileTurtleSSExplosionRadius, Parameter.ProjectileTurtleSSBaseDamage)
        {
            //Initializing Flipbook
            FlipbookList.Add(new Flipbook(
                                 mobile.Crosshair.CannonPosition, new Vector2(26, 22.5f),
                                 52, 45, "Graphics/Tank/Turtle/Bullet3",
                                 new AnimationInstance()
            {
                StartingFrame = 0, EndingFrame = 14, TimePerFrame = 1 / 20f
            },
                                 DepthParameter.Projectile, angle));

            bubbleAnimation = ProjectileAnimationState.Closed;

            //Physics/Trajectory setups
            mass          = Parameter.ProjectileTurtleSSMass;
            windInfluence = Parameter.ProjectileTurtleSSWindInfluence;
        }
Пример #6
0
        public ArmorProjectile3(Armor mobile)
            : base(mobile, ShotType.SS, Parameter.ProjectileArmorSSExplosionRadius, Parameter.ProjectileArmorSSBaseDamage)
        {
            Mobile = mobile;

            rocketAnimation    = ProjectileAnimationState.Closed;
            totalTravelledTime = 0;

            //Initializing Flipbook
            FlipbookList.Add(new Flipbook(
                                 mobile.Crosshair.CannonPosition, new Vector2(65, 54),
                                 131, 109, "Graphics/Tank/Armor/Bullet3",
                                 new List <AnimationInstance>()
            {
                rocketAnimationPresets[rocketAnimation]
            },
                                 DepthParameter.Projectile, angle));

            //Physics/Trajectory setups
            mass          = Parameter.ProjectileArmorSSMass;
            windInfluence = Parameter.ProjectileArmorSSWindInfluence;

            SpawnTime = 0.7;
        }