コード例 #1
0
        void MenuEngineUpdated(object sender, Menu menu)
        {
            if (menu.GetType() == typeof(Menus.IntroductionScreen))              // IntroductionScreen;
            {
                if (_keyHandler.IsKeyPressed(Key.S) || _keyHandler.IsKeyPressed(Key.D1))
                {
                    ((Menus.IntroductionScreen)menu).GotoChooseSideScreen();
                }
                else if (_keyHandler.IsKeyPressed(Key.H) || _keyHandler.IsKeyPressed(Key.D2))
                {
                    ((Menus.IntroductionScreen)menu).GotoHelpScreen();
                }
                else if (_keyHandler.IsKeyPressed(Key.C) || _keyHandler.IsKeyPressed(Key.D3))
                {
                    ((Menus.IntroductionScreen)menu).GotoCreditsScreen();
                }
                _keyHandler.ClearKeyPresses();
            }
            else if (menu.GetType() == typeof(Menus.ChooseSideScreen))              // ChooseSideScreen;
            {
                if (_keyHandler.IsKeyPressed(Key.M) || _keyHandler.IsKeyPressed(Key.D1))
                {
                    ((Menus.ChooseSideScreen)menu).GotoMe();
                }
                else if (_keyHandler.IsKeyPressed(Key.K) || _keyHandler.IsKeyPressed(Key.D2))
                {
                    ((Menus.ChooseSideScreen)menu).GotoKraker();
                }
                _keyHandler.ClearKeyPresses();
            }
            else if (menu.GetType() == typeof(Menus.HelpScreen))              // HelpMenu;
            {
                if (_keyHandler.IsKeyPressed(Key.Home) || _keyHandler.IsKeyPressed(Key.D1))
                {
                    ((Menus.HelpScreen)menu).GotoBack();
                }
            }
            else if (menu.GetType() == typeof(Menus.CreditsScreen))              // CreditsScreen;
            {
            }
            else if (menu.GetType() == typeof(Menus.LevelHolder))              // LevelHolder;
            {
                if (Player.Dead)
                {
                    return;                               // there's no need to use the keys when player is dead;
                }
                Boolean left  = _keyHandler.IsKeyPressed(Key.A),
                        right = _keyHandler.IsKeyPressed(Key.D);
                if (!(left && right))
                {
                    if (left)                      // move left;
                    {
                        Player.Movement.Left();
                    }
                    else if (right)                      // move right;
                    {
                        Player.Movement.Right();
                    }
                }

                Boolean jump = _keyHandler.IsKeyPressed(Key.W) || _keyHandler.IsKeyPressed(Key.Ctrl),
                        duck = _keyHandler.IsKeyPressed(Key.S) || _keyHandler.IsKeyPressed(Key.Shift);
                if (!(jump && duck))
                {
                    if (jump)                      // jump;
                    {
                        Player.Movement.Jump();
                    }
                    else if (duck)                      // duck;
                    {
                        Player.Movement.Duck();
                    }
                }

                Boolean aimleft  = _keyHandler.IsKeyPressed(Key.Left),
                        aimright = _keyHandler.IsKeyPressed(Key.Right);
                if (!(aimleft && aimright))
                {
                    if (aimleft)                      // aim left;
                    {
                        Player.WeaponEngine.CurrentWeapon.ProjectoryAngle -= 2;
                    }
                    else if (aimright)                      // aim right;
                    {
                        Player.WeaponEngine.CurrentWeapon.ProjectoryAngle += 2;
                    }
                }

                Boolean next = _keyHandler.IsKeyPressed(Key.Down) || _keyHandler.IsKeyPressed(Key.Q),
                        prev = _keyHandler.IsKeyPressed(Key.Up) || _keyHandler.IsKeyPressed(Key.E);
                if (!(next && prev))
                {
                    if (next)                      // change next weapon;
                    {
                        Player.ShuffleWeaponDown();
                        _keyHandler.ClearKeyPresses(Key.Down);
                        _keyHandler.ClearKeyPresses(Key.Q);
                    }
                    else if (prev)                      // change previous weapon;
                    {
                        Player.ShuffleWeaponUp();
                        _keyHandler.ClearKeyPresses(Key.Up);
                        _keyHandler.ClearKeyPresses(Key.E);
                    }
                }

                if (_keyHandler.IsKeyPressed(Key.Space)) // shoot;
                {                                        // todo: remove key.z and fix space commit;
                    Player.Fire();
                    //_keyHandler.ClearKeyPresses(Key.Space);
                }
            }
            else if (menu.GetType() == typeof(Menus.HighScoresScreen))              // HighScoresScreen;
            {
            }
            else if (menu.GetType() == typeof(Menus.EndScreen))              // EndScreen;
            {
                _keyHandler.ClearKeyPresses();
            }
        }