public override void HandleInput(GameTime gameTime, CInput _Input)
 {
     if (_Input.KeyPressed(Keys.Back))
     {
         StateManager.getInst().ExitScreen();
         StateManager.getInst().AddScreen(new MenuState(IDGameState.MENU));
     }
     base.HandleInput(gameTime, _Input);
 }
 public override void HandleInput(GameTime gameTime, CInput _Input)
 {
     CoolDown += (float)gameTime.ElapsedGameTime.TotalMilliseconds;
     if (CoolDown > 2000)
     {
         CoolDown = 0;
         StateManager.getInst().ExitScreen();
         StateManager.getInst().AddScreen(new MainGame(IDGameState.MAINGAME));
     }
     GlobalValue.IS_LOCK_KEYBOARD = false;
     if (_Input.KeyPressed(Keys.Delete))
     {
         GlobalValue.MARIO_LIFE++;
     }
     base.HandleInput(gameTime, _Input);
 }
        public override void UpdateMovement(GameTime _GameTime, CInput _Input)
        {
            GlobalValue.MARIO_POSITION = this.Position;
            if (_Input.KeyPressed(Keys.Z) && IDObject == IDObject.FIRE_MARIO)
            {
                AddBullet();
                if (Sprite.Animation.CurFrame != 5)
                {
                    Sprite.Animation.CurFrame = 5;
                    Sprite.Animation.SetLocalAnimation();
                }
                Status = IDStatus.MARIO_ATTACK;
            }
            // Gia tốc trọng trường
            if (Status != IDStatus.TELEPORT)
            {
                Accel = new Vector2(m_Accel.X, 0.00098f);
            }

            if (Status != IDStatus.MARIO_JUMP && Status != IDStatus.DIE && !GlobalValue.IS_LOCK_KEYBOARD)
            {
                AnalysisInput(_Input);
            }
            //ManageTeleport(_GameTime);
            UpdateBullet(_GameTime, _Input);
            ManageBullet();
            LimitSpeed();
            CheckDead();

            base.Update(_GameTime, _Input);
        }
        /// <summary>
        /// Phân tích tín hiệu input để xử lý status cho Mario
        /// </summary>
        /// <param name="_Input"></param>
        /// <returns></returns>
        private void AnalysisInput(CInput _Input)
        {
            if (_Input.KeyDown(Keys.Right) && Status != IDStatus.MARIO_JUMP && !m_IsDisableRight)
            {
                Direction = IDDir.RIGHT;
                Accel = new Vector2(0.001f, Accel.Y);
                Status = IDStatus.MARIO_RUN;
            }

            if (_Input.KeyDown(Keys.Left) && Status != IDStatus.MARIO_JUMP && !m_IsDisableLeft)
            {
                Direction = IDDir.LEFT;
                Accel = new Vector2(-0.001f, Accel.Y);
                Status = IDStatus.MARIO_RUN;
            }

            if (_Input.KeyPressed(Keys.Up) && m_IsJumping == false && !m_IsDisableUp && Status != IDStatus.MARIO_ATTACK)
            {
                Status = IDStatus.MARIO_JUMP;
                m_IsJumping = true;
                Velocity = new Vector2(Velocity.X, -0.35f);
                if (IDObject == IDObject.SMALL_MARIO)
                {
                    SoundManager.PlaySound(ESound.SFX_JUMP_SMALL);
                }
                if (IDObject == IDObject.FIRE_MARIO|| IDObject == IDObject.SUPER_MARIO)
                {
                    SoundManager.PlaySound(ESound.SFX_JUMP_BIG);
                }
            }

            if (_Input.KeyDown(Keys.Down) && Status != IDStatus.MARIO_JUMP && !m_IsDisableDown)
            {
                //Velocity = Vector2.Zero;
                Accel = new Vector2(0, Accel.Y);
                //Status = IDStatus.MARIO_RUN;
                Status = IDStatus.MARIO_DOWN;
            }

            Damping(_Input);
        }
 /// <summary>
 /// Hãm vận tốc của Mario khi công còn nhận input
 /// </summary>
 /// <param name="_Input"></param>
 /// <returns></returns>
 private void Damping(CInput _Input)
 {
     if (!_Input.KeyDown(Keys.Left) && !_Input.KeyDown(Keys.Right))
     {
         Accel = new Vector2(0, Accel.Y);
         m_Velocity = new Vector2(m_Velocity.X - m_Velocity.X * 0.1f, m_Velocity.Y);
         if (Math.Abs(m_Velocity.X) <= 0.001f)
         {
             m_Velocity = new Vector2(0.0f, m_Velocity.Y);
             if(!_Input.KeyDown(Keys.Up) && !_Input.KeyPressed(Keys.Z) && !_Input.KeyDown(Keys.Down) && Status != IDStatus.TELEPORT)
             {
                 Status = IDStatus.MARIO_STAND;
             }
         }
     }
 }