Ejemplo n.º 1
0
        private void CheckKeys(GameTime gameTime)
        {
            if (_dying)
            {
                return;
            }

            // Movement
            if (InputManager.Instace.KeyDown(Keys.Left) && Math.Abs(_knockbackAcceleration) < 1200f)
            {
                CharacterSprite.SetDirection(SpriteDirection.Left);
                _bottomSprite.SetDirection(SpriteDirection.Left);
                _movement = -1.0f;
            }
            else if (InputManager.Instace.KeyDown(Keys.Right) && Math.Abs(_knockbackAcceleration) < 1200f)
            {
                CharacterSprite.SetDirection(SpriteDirection.Right);
                _bottomSprite.SetDirection(SpriteDirection.Right);
                _movement = 1.0f;
            }

            // Attack
            if (!_isAttacking && InputManager.Instace.KeyDown(Keys.Z))
            {
                RequestAttack(ShotAttack);
            }

            // Jump
            _isJumping = InputManager.Instace.KeyDown(Keys.C);

            // Recharging
            _recharging = _isOnGround && InputManager.Instace.KeyDown(Keys.X);
            if (_recharging)
            {
                if (CharacterSprite.CurrentFrame != 2)
                {
                    _recharged = false;
                }

                if (CharacterSprite.CurrentFrame == 0)
                {
                    TriggerRechargingParticles();
                }
                else if (CharacterSprite.CurrentFrameList == "recharging" && CharacterSprite.CurrentFrame == 2 && !_recharged)
                {
                    _recharged = true;
                    var newAmmo = _ammo + 3;
                    _ammo = MathHelper.Clamp(newAmmo, 0, MaxAmmo);
                    _vacuumSei.PlaySafe();
                }
            }
            if (_recharging && CharacterSprite.CurrentFrame == 0)
            {
                TriggerRechargingParticles();
            }
        }