示例#1
0
        private void UpdateKeys()
        {
            #region keys handle
            switch (keyDown)
            {
            case (Keys.P):
                if (MsToSec(_pauseRegisterTimer) >= _pauseRegisterRate)
                {
                    _pauseRegisterTimer = 0;
                    if (game.State == GameState.Playing)
                    {
                        game.Pause();
                    }
                    else
                    {
                        game.Unpause();
                    }
                }
                break;

            case (Keys.Up):
                if (game.State != GameState.Pause)
                {
                    world.cat.Direction = Dir.Up;
                }
                break;

            case (Keys.Down):
                if (game.State != GameState.Pause)
                {
                    world.cat.Direction = Dir.Down;
                }
                break;

            case (Keys.Right):
                if (game.State != GameState.Pause)
                {
                    world.cat.Direction = Dir.Right;
                }
                break;

            case (Keys.Left):
                if (game.State != GameState.Pause)
                {
                    world.cat.Direction = Dir.Left;
                }
                break;

            case (Keys.Space):
                if (game.State != GameState.Pause)
                {
                    if (MsToSec(_spaceRegisterTimer) >= _spaceRegisterRate)
                    {
                        _spaceRegisterTimer = 0;
                        if (world.cat.State == CatState.Hidden)
                        {
                            world.cat.State = CatState.Idle;
                            world.jumpingPoints[world.AbsPositionToRelative(world.cat.Position)].HasCat = false;
                            toDraw.Add(world.cat.sprite);
                        }
                        else if (world.jumpingPoints.ContainsKey(world.AbsPositionToRelative(world.cat.Position)))
                        {
                            world.jumpingPoints[world.AbsPositionToRelative(world.cat.Position)].HasCat = true;
                            world.cat.State = CatState.Hidden;
                            toDraw.Remove(world.cat.sprite);
                        }
                    }
                }
                break;

            case (Keys.Escape):
                game.Close();
                break;

            case (Keys.R):
                if (game.State == GameState.Pause)
                {
                    game.Unpause();
                }
                game.Restart();
                break;

            case (Keys.Q):
                game.GameOver();
                break;

            case (default(Keys)):
                world.cat.Direction = Dir.None;
                break;
            }
            #endregion
        }