Ejemplo n.º 1
0
        protected override void OnKeyPressed(object sender, KeyEventArgs e)
        {
            if (KeyDown || IsDead() || (e != null && Game.KeyIsNotAllowed(e.Code)))
            {
                return;
            }

            KeyDown = true;

            if (!Game.IsRunning())
            {
                return;
            }

            CanRotate = false;
            RotationDelayTimer.Stop();

            AimAssistance.AimStart();
            foreach (AimAssistance t in AimAssistanceExtras)
            {
                t.AimStart();
            }
        }
Ejemplo n.º 2
0
        public void Start()
        {
            Timer           = new Timer();
            Timer.AutoReset = false;
            Timer.Elapsed  += OnEnd;

            Timer.Interval = 10000;
            switch (Type)
            {
            case DOUBLE_EXPLOSION_RADIUS:
            {
                Cannon.Weapon.ExplosionRadius *= 2;
                Cannon.AimAssistance.UpdateReticle();
                Cannon.AimAssistance.UpdateReticlePosition();
                foreach (AimAssistance a in Cannon.AimAssistanceExtras)
                {
                    a.UpdateReticle();
                    a.UpdateReticlePosition();
                }
                break;
            }

            case AIM_SPEED_INCREASE:
            {
                Cannon.AimSpeed       *= 1.5f;
                Cannon.RotateSpeedMax *= 1.5f;
                Cannon.RotateAcc      *= 3f;
                Cannon.RotationDelayTimer.Interval /= 2f;

                Timer.Interval = 20000;
                break;
            }

            case TRIPLE_CANNON:
            case OCTUPLE_CANNON:
            {
                int amount = Type == TRIPLE_CANNON ? 3 : 8;
                for (int b = 1; b < amount; b++)
                {
                    var barrel = new Sprite(((Sprite)Cannon.Model).Texture);
                    barrel.Scale  = new Vector2f(0.5f, 0.5f);
                    barrel.Origin = new Vector2f(26, 30);
                    if (amount == 3)
                    {
                        barrel.Rotation = b == 1 ? 45 : -45;
                    }
                    else
                    {
                        barrel.Rotation = 45 * b;
                    }
                    Cannon.PowerupEffect.AddChild(barrel);

                    var aa = new AimAssistance(Game, Cannon);
                    aa.Position       = Cannon.Position;
                    aa.RotationOffset = barrel.Rotation;
                    Game.Layer_OtherAbove.AddChildAt(aa, 0);
                    Cannon.AimAssistanceExtras.Add(aa);

                    if (Cannon.AimAssistance.IsAiming())
                    {
                        aa.AimStart();
                        aa.SetReticlePosition(Cannon.AimAssistance.GetReticlePosition());
                    }
                }
                break;
            }
            }

            Game.HUD.AddPowerup(Type, Timer.Interval);

            Timer.Start();
        }