public void Update()
        {
            Keys[] pressedKeys = Keyboard.GetState().GetPressedKeys();

            if (Game1.State.Type == GameStates.Playing)
            {
                if ((pressedKeys.Contains(Keys.Q) && preKeys != null && !preKeys.Contains(Keys.Q)))
                {
                    commandDict[Keys.Q].Execute();
                }
                if ((pressedKeys.Contains(Keys.M) && !preKeys.Contains(Keys.M)))
                {
                    SoundManager.Instance.muteAndUnmute(Muted);
                    Muted = !Muted;
                }
                else if ((pressedKeys.Contains(Keys.Y) && preKeys != null))
                {
                    commandDict[Keys.Y].Execute();
                }
                else if ((pressedKeys.Contains(Keys.U) && preKeys != null))
                {
                    commandDict[Keys.U].Execute();
                }
                else if ((pressedKeys.Contains(Keys.I) && preKeys != null))
                {
                    commandDict[Keys.I].Execute();
                }
                else if ((pressedKeys.Contains(Keys.O) && preKeys != null))
                {
                    commandDict[Keys.O].Execute();
                }
                else if ((pressedKeys.Contains(Keys.F) && preKeys != null))
                {
                    commandDict[Keys.F].Execute();
                }

                if (Left(pressedKeys))
                {
                    commandDict[Keys.Left].Execute();
                }
                else if (Right(pressedKeys))
                {
                    commandDict[Keys.Right].Execute();
                }
                else if (Jump(pressedKeys))
                {
                    commandDict[Keys.Up].Execute();
                }
                else if (Down(pressedKeys))
                {
                    commandDict[Keys.Down].Execute();
                }
                else if (LeftJump(pressedKeys))
                {
                    if (mario.IsInAir || mario.IsInWater)
                    {
                        if (mario.IsInWater)
                        {
                            if (mario.Swimable)
                            {
                                switch (mario.State.MarioShape)
                                {
                                case Shape.Small:
                                    mario.State = new SwimmingLeftSmallMarioState(mario);
                                    break;

                                case Shape.Big:
                                    mario.State = new SwimmingLeftBigMarioState(mario);
                                    break;

                                case Shape.Fire:
                                    mario.State = new SwimmingLeftFireMarioState(mario);
                                    break;
                                }
                                mario.State.MarioPosture   = Posture.Swimming;
                                mario.State.MarioDirection = Direction.Left;
                                mario.Velocity             = new Vector2(mario.Velocity.X, GameData.marioInWaterJump);
                                mario.Acceleration         = new Vector2(0, GameData.Gravity + GameData.Float);
                                mario.Swimable             = false;
                            }
                        }
                        commandDict[Keys.Left].Execute();
                    }
                    else
                    {
                        commandDict[Keys.Up].Execute();
                    }
                }
                else if (LeftDown(pressedKeys))
                {
                    commandDict[Keys.Down].Execute();
                }
                else if (RightJump(pressedKeys))
                {
                    if (mario.IsInAir || mario.IsInWater)
                    {
                        if (mario.IsInWater)
                        {
                            if (mario.Swimable)
                            {
                                switch (mario.State.MarioShape)
                                {
                                case Shape.Small:
                                    mario.State = new SwimmingRightSmallMarioState(mario);
                                    break;

                                case Shape.Big:
                                    mario.State = new SwimmingRightBigMarioState(mario);
                                    break;

                                case Shape.Fire:
                                    mario.State = new SwimmingRightFireMarioState(mario);
                                    break;
                                }
                                mario.State.MarioPosture   = Posture.Swimming;
                                mario.State.MarioDirection = Direction.Right;
                                mario.Velocity             = new Vector2(mario.Velocity.X, GameData.marioInWaterJump);
                                mario.Acceleration         = new Vector2(0, GameData.Gravity + GameData.Float);
                                mario.Swimable             = false;
                            }
                        }
                        commandDict[Keys.Right].Execute();
                    }
                    else
                    {
                        commandDict[Keys.Up].Execute();
                    }
                }
                else if (RightDown(pressedKeys))
                {
                    commandDict[Keys.Down].Execute();
                }
                else if (LeftRightJump(pressedKeys))
                {
                    commandDict[Keys.Up].Execute();
                }

                if (preKeys != null)
                {
                    foreach (Keys key in preKeys)
                    {
                        if (preKeys.Contains(key) && Keyboard.GetState().IsKeyUp(key))
                        {
                            if (releasedCommandDict.ContainsKey(key))
                            {
                                releasedCommandDict[key].Execute();
                            }
                        }
                    }
                }

                if (pressedKeys.Contains(Keys.P))
                {
                    Game1.State.Pause();
                    SoundManager.Instance.muteAndUnmute(Muted);
                    Muted = !Muted;
                }

                preKeys = pressedKeys;
            }
            else if (Game1.State.Type == GameStates.Title)
            {
                if ((pressedKeys.Contains(Keys.Enter) && preKeys != null && !preKeys.Contains(Keys.Enter)))
                {
                    mygame.Reset();
                    if (titlePanel.option == 0)
                    {
                        Game1.State = new PlayingState(mygame);
                        SoundManager.Instance.PlayOverWorldSong();
                    }
                    else if (titlePanel.option == 1)
                    {
                        mygame.LoadNextLevel("./LevelLoader/Level2.xml");
                        Game1.State = new Transition(mygame);
                    }
                    // MarioInfo.StartTimer();
                    MarioInfo.StartTimer();
                }
                else if ((pressedKeys.Contains(Keys.Q) && preKeys != null && !preKeys.Contains(Keys.Q)))
                {
                    commandDict[Keys.Q].Execute();
                }
                else if ((pressedKeys.Contains(Keys.Up) && !preKeys.Contains(Keys.Up)))
                {
                    titlePanel.Up();
                }
                else if ((pressedKeys.Contains(Keys.Down) && !preKeys.Contains(Keys.Down)))
                {
                    titlePanel.Down();
                }
            }
            else if (Game1.State.Type == GameStates.LifeDisplay)
            {
                if ((pressedKeys.Contains(Keys.Y) && preKeys != null && !preKeys.Contains(Keys.Y)))
                {
                    if (mario.IsLevel2)
                    {
                        mygame.LoadNextLevel("./LevelLoader/Level2.xml");
                    }
                    else
                    {
                        mygame.LevelReset(mygame.File);
                    }
                    Game1.State.Proceed();
                    //SoundManager.Instance.PlayOverWorldSong();
                }
                else if ((pressedKeys.Contains(Keys.N) && preKeys != null && !preKeys.Contains(Keys.N)))
                {
                    commandDict[Keys.Q].Execute();
                }
            }
            else if (Game1.State.Type == GameStates.Pause)
            {
                if (pressedKeys.Contains(Keys.P))
                {
                    Game1.State.Proceed();
                    SoundManager.Instance.muteAndUnmute(Muted);
                    Muted = !Muted;
                }
            }
            else if (Game1.State.Type == GameStates.GameOver)
            {
                if ((pressedKeys.Contains(Keys.Y) && preKeys != null && !preKeys.Contains(Keys.Y)))
                {
                    Game1.State.Proceed();
                    MarioInfo.ClearTimer();
                }
                else if ((pressedKeys.Contains(Keys.N) && preKeys != null && !preKeys.Contains(Keys.N)))
                {
                    commandDict[Keys.Q].Execute();
                }
            }
            else if (Game1.State.Type == GameStates.Victory)
            {
                if ((pressedKeys.Contains(Keys.Y) && preKeys != null && !preKeys.Contains(Keys.Y)))
                {
                    MarioInfo.ClearTimer();
                    MarioInfo.MarioLife[0] = 3;
                    mygame.Reset();
                    //SoundManager.Instance.PlayOverWorldSong();
                    Game1.State.Proceed();
                }
                else if ((pressedKeys.Contains(Keys.N) && preKeys != null && !preKeys.Contains(Keys.N)))
                {
                    commandDict[Keys.Q].Execute();
                }
            }
            else if (Game1.State.Type == GameStates.Transition)
            {
                mygame.LoadNextLevel("./LevelLoader/Level2.xml");
                Game1.State.Proceed();
            }

            preKeys = pressedKeys;
        }
Beispiel #2
0
        public void Update()
        {
            Keys[] pressedKeys = Keyboard.GetState().GetPressedKeys();

            if ((Game1.State.Type == GameStates.Playing))
            {
                if ((pressedKeys.Contains(Keys.Q) && preKeys != null && !preKeys.Contains(Keys.Q)))
                {
                    commandDict[Keys.Q].Execute();
                }
                if ((pressedKeys.Contains(Keys.M) && !preKeys.Contains(Keys.M)))
                {
                    SoundManager.Instance.muteAndUnmute(Muted);
                    Muted = !Muted;
                }
                else if ((pressedKeys.Contains(Keys.Y) && preKeys != null))
                {
                    commandDict[Keys.Y].Execute();
                }
                else if ((pressedKeys.Contains(Keys.U) && preKeys != null))
                {
                    commandDict[Keys.U].Execute();
                }
                else if ((pressedKeys.Contains(Keys.I) && preKeys != null))
                {
                    commandDict[Keys.I].Execute();
                }
                else if ((pressedKeys.Contains(Keys.O) && preKeys != null))
                {
                    commandDict[Keys.O].Execute();
                }

                if (Left(pressedKeys))
                {
                    commandDict[Keys.Left].Execute();
                }
                else if (Right(pressedKeys))
                {
                    commandDict[Keys.Right].Execute();
                }
                else if (Jump(pressedKeys))
                {
                    commandDict[Keys.Up].Execute();
                }
                else if (Down(pressedKeys))
                {
                    commandDict[Keys.Down].Execute();
                }
                else if (LeftJump(pressedKeys))
                {
                    if (mario.IsInAir)
                    {
                        commandDict[Keys.Left].Execute();
                    }
                    else
                    {
                        commandDict[Keys.Up].Execute();
                    }
                }
                else if (LeftDown(pressedKeys))
                {
                    commandDict[Keys.Down].Execute();
                }
                else if (RightJump(pressedKeys))
                {
                    if (mario.IsInAir)
                    {
                        commandDict[Keys.Right].Execute();
                    }
                    else
                    {
                        commandDict[Keys.Up].Execute();
                    }
                }
                else if (RightDown(pressedKeys))
                {
                    commandDict[Keys.Down].Execute();
                }
                else if (LeftRightJump(pressedKeys))
                {
                    commandDict[Keys.Up].Execute();
                }

                if (preKeys != null)
                {
                    foreach (Keys key in preKeys)
                    {
                        if (preKeys.Contains(key) && Keyboard.GetState().IsKeyUp(key))
                        {
                            if (releasedCommandDict.ContainsKey(key))
                            {
                                releasedCommandDict[key].Execute();
                            }
                        }
                    }
                }

                if ((pressedKeys.Contains(Keys.P) && preKeys != null && preKeys.Contains(Keys.P)))
                {
                    Game1.State.Pause();
                    SoundManager.Instance.muteAndUnmute(Muted);
                    Muted = !Muted;
                }

                preKeys = pressedKeys;
            }
            else if (Game1.State.Type == GameStates.Title)
            {
                if ((pressedKeys.Contains(Keys.Enter) && preKeys != null && !preKeys.Contains(Keys.Enter)))
                {
                    mygame.Reset();
                    Game1.State = new PlayingState(mygame);
                    SoundManager.Instance.PlayOverWorldSong();
                    MarioInfo.StartTimer();
                }
                else if ((pressedKeys.Contains(Keys.Q) && preKeys != null && !preKeys.Contains(Keys.Q)))
                {
                    commandDict[Keys.Q].Execute();
                }
            }
            else if (Game1.State.Type == GameStates.LifeDisplay)
            {
                if ((pressedKeys.Contains(Keys.Y) && preKeys != null && !preKeys.Contains(Keys.Y)))
                {
                    mygame.LevelReset();
                    Game1.State.Proceed();
                    SoundManager.Instance.PlayOverWorldSong();
                }
                else if ((pressedKeys.Contains(Keys.N) && preKeys != null && !preKeys.Contains(Keys.N)))
                {
                    commandDict[Keys.Q].Execute();
                }
            }
            else if (Game1.State.Type == GameStates.Pause)
            {
                if ((pressedKeys.Contains(Keys.P) && preKeys != null))
                {
                    Game1.State.Proceed();
                    SoundManager.Instance.muteAndUnmute(Muted);
                    Muted = !Muted;
                }
            }
            else if (Game1.State.Type == GameStates.GameOver)
            {
                if ((pressedKeys.Contains(Keys.Y) && preKeys != null && !preKeys.Contains(Keys.Y)))
                {
                    Game1.State.Proceed();
                    MarioInfo.ClearTimer();
                }
                else if ((pressedKeys.Contains(Keys.N) && preKeys != null && !preKeys.Contains(Keys.N)))
                {
                    commandDict[Keys.Q].Execute();
                }
            }
            else if (Game1.State.Type == GameStates.Victory)
            {
                if ((pressedKeys.Contains(Keys.Y) && preKeys != null && !preKeys.Contains(Keys.Y)))
                {
                    mygame.Reset();
                    MarioInfo.ClearTimer();
                    MarioInfo.MarioLife[0] = 3;
                    Game1.State.Proceed();
                }
                else if ((pressedKeys.Contains(Keys.N) && preKeys != null && !preKeys.Contains(Keys.N)))
                {
                    commandDict[Keys.Q].Execute();
                }
            }
        }