public override void Update(GameTime deltaTime, GamePlayer player)
        {
            // Change back to idle state
            player.ChangeState_Idle();

            // MAKE sure this is after changing state
            base.Update(deltaTime, player);
        }
        public override void Update(GameTime deltaTime, GamePlayer player)
        {
            // Switch back to the movement state after 2 seconds
            float elapsedTime = (float)deltaTime.ElapsedGameTime.TotalSeconds;

            if ( (m_JumpTime -= elapsedTime) <= 0.0f )
            {
                // If there is any movement left then switch to the movement state
                if (player.CurrentDiceRoll != 0)
                {
                    // Move to the next square and continue movement code as normal
                    player.MoveToNextSquare();
                    player.ChangeState_Movement();
                }
                else
                    player.ChangeState_Idle();
            }

            // MAKE sure this is after changing state
            base.Update(deltaTime, player);
        }
        public override void Update(GameTime deltaTime, GamePlayer player)
        {
            bool changeState = true;
            TutorialManager tutorials = TutorialManager.Instance;

            if (player.ActivePawn != null)
            {
                BoardSquare current = player.ActivePawn.CurrentSquare;

                if (current != null)
                {
                    if (!tutorials.HasTutorialBeenShown(TutorialStage.StartTutorial))
                    {
                        // If the camera is stationary
                        if (CameraManager.Instance.ActiveCamera != null)
                        {
                            if (!CameraManager.Instance.ActiveCamera.Tween)
                            {
                                // Show start tutorial
                                tutorials.ShowTutorial(TutorialStage.StartTutorial, Vector3.Zero, UIManager.TextureAlignment.eTopLeft);
                            }
                        }

                        // Set not to change state this cycle 
                        changeState = false;
                    }
                    else if (current.GetType().IsSubclassOf(typeof(ArithmeticSquare)))
                    {
                        if ( !tutorials.HasTutorialBeenShown(TutorialStage.ArithmeticSquares) )
                        {
                            // If the camera is stationary
                            if (CameraManager.Instance.ActiveCamera != null)
                            {
                                if (!CameraManager.Instance.ActiveCamera.Tween)
                                {
                                    // Show start tutorial
                                    tutorials.ShowTutorial(TutorialStage.ArithmeticSquares, Vector3.Zero, UIManager.TextureAlignment.eTopLeft);
                                }
                            }

                            // Set not to change state this cycle 
                            changeState = false;
                        }
                    }
                    else if (current.GetType() == typeof(IfSquare))
                    {
                        if (!tutorials.HasTutorialBeenShown(TutorialStage.IfSquare))
                        {
                            // If the camera is stationary
                            if (CameraManager.Instance.ActiveCamera != null)
                            {
                                if (!CameraManager.Instance.ActiveCamera.Tween)
                                {
                                    // Show start tutorial
                                    tutorials.ShowTutorial(TutorialStage.IfSquare, Vector3.Zero, UIManager.TextureAlignment.eTopLeft);
                                }
                            }

                            // Set not to change state this cycle 
                            changeState = false;
                        }
                    }
                    else if (current.GetType() == typeof(WhileSquare))
                    {
                        if (!tutorials.HasTutorialBeenShown(TutorialStage.WhileSquare))
                        {
                            // If the camera is stationary
                            if (CameraManager.Instance.ActiveCamera != null)
                            {
                                if (!CameraManager.Instance.ActiveCamera.Tween)
                                {
                                    // Show start tutorial
                                    tutorials.ShowTutorial(TutorialStage.WhileSquare, Vector3.Zero, UIManager.TextureAlignment.eTopLeft);
                                }
                            }

                            // Set not to change state this cycle 
                            changeState = false;
                        }
                    }
                    else if (current.GetType() == typeof(SwitchSquare))
                    {
                        if (!tutorials.HasTutorialBeenShown(TutorialStage.SwitchSquare))
                        {
                            // If the camera is stationary
                            if (CameraManager.Instance.ActiveCamera != null)
                            {
                                if (!CameraManager.Instance.ActiveCamera.Tween)
                                {
                                    // Show start tutorial
                                    tutorials.ShowTutorial(TutorialStage.SwitchSquare, Vector3.Zero, UIManager.TextureAlignment.eTopLeft);
                                }
                            }

                            // Set not to change state this cycle 
                            changeState = false;
                        }
                    }
                }
            }

            if (changeState)
            {
                // Change back to idle state
                player.ChangeState_Idle();
            }

            // MAKE sure this is after changing state
            base.Update(deltaTime, player);
        }