Beispiel #1
0
        protected override void Update(GameTime gameTime)
        {
            MouseState mouse = Mouse.GetState();

            switch (CurrentGameState)
            {
            //Pause..
            case MainMenu.GameState.MainMenu:
                if (btnPlay.isClicked == true)
                {
                    CurrentGameState = MainMenu.GameState.Jeu;
                }
                btnPlay.Update(mouse);
                if (btnQuit.isClicked == true)
                {
                    Exit();
                }
                btnQuit.Update(mouse);
                if (btnOptions.isClicked == true)
                {
                    CurrentGameState = MainMenu.GameState.Options;
                }
                btnOptions.Update(mouse);
                break;


            case MainMenu.GameState.Paused:
                if (btnPlay.isClicked == true)
                {
                    CurrentGameState = MainMenu.GameState.Jeu;
                }
                btnPlay.Update(mouse);
                if (btnQuit.isClicked == true)
                {
                    Exit();
                }
                btnQuit.Update(mouse);
                if (btnMenu.isClicked == true)
                {
                    CurrentGameState = MainMenu.GameState.MainMenu;
                }
                if (btnOptions.isClicked == true)
                {
                    CurrentGameState = MainMenu.GameState.Options;
                }
                btnOptions.Update(mouse);
                break;



            case MainMenu.GameState.Jeu:
                //déplacement du joueur
                #region
                Vector2 moveVector = Vector2.Zero;
                Vector2 moveDir    = Vector2.Zero;
                string  animation  = "";

                KeyboardState ks = Keyboard.GetState();

                if (ks.IsKeyDown(Keys.NumPad7))
                {
                    moveDir     = new Vector2(-2, -1);
                    animation   = "WalkNorthWest";
                    moveVector += new Vector2(-2, -1);
                }

                if (ks.IsKeyDown(Keys.NumPad8))
                {
                    moveDir     = new Vector2(0, -1);
                    animation   = "WalkNorth";
                    moveVector += new Vector2(0, -1);
                }

                if (ks.IsKeyDown(Keys.NumPad9))
                {
                    moveDir     = new Vector2(2, -1);
                    animation   = "WalkNorthEast";
                    moveVector += new Vector2(2, -1);
                }

                if (ks.IsKeyDown(Keys.NumPad4))
                {
                    moveDir     = new Vector2(-2, 0);
                    animation   = "WalkWest";
                    moveVector += new Vector2(-2, 0);
                }

                if (ks.IsKeyDown(Keys.NumPad6))
                {
                    moveDir     = new Vector2(2, 0);
                    animation   = "WalkEast";
                    moveVector += new Vector2(2, 0);
                }

                if (ks.IsKeyDown(Keys.NumPad1))
                {
                    moveDir     = new Vector2(-2, 1);
                    animation   = "WalkSouthWest";
                    moveVector += new Vector2(-2, 1);
                }

                if (ks.IsKeyDown(Keys.NumPad2))
                {
                    moveDir     = new Vector2(0, 1);
                    animation   = "WalkSouth";
                    moveVector += new Vector2(0, 1);
                }

                if (ks.IsKeyDown(Keys.NumPad3))
                {
                    moveDir     = new Vector2(2, 1);
                    animation   = "WalkSouthEast";
                    moveVector += new Vector2(2, 1);
                }


                //Pause..

                if (Keyboard.GetState().IsKeyDown(Keys.Escape))
                {
                    CurrentGameState = MainMenu.GameState.Paused;
                }



                //////aumentation et dimiution du volume
                if (ks.IsKeyDown(Keys.RightControl) && ks.IsKeyDown(Keys.Up))
                {
                    Volume            += 0.1f;
                    MediaPlayer.Volume = Volume;
                }
                if (ks.IsKeyDown(Keys.RightControl) && ks.IsKeyDown(Keys.Down))
                {
                    Volume            -= 0.1f;
                    MediaPlayer.Volume = Volume;
                }
                //////



                //Point nopoint;
                // Point where = myMap.WorldToMapCell(new Point(Mouse.GetState().X, Mouse.GetState().Y), out nopoint);

                //interaction entre le joueur et la Map


                if (myMap.GetCellAtWorldPoint(vlad.Position + moveDir).Walkable == false)
                {
                    moveDir = Vector2.Zero;
                }

                if (Math.Abs(myMap.GetOverallHeight(vlad.Position) - myMap.GetOverallHeight(vlad.Position + moveDir)) > 10)
                {
                    moveDir = Vector2.Zero;
                }

                if (moveDir.Length() != 0)
                {
                    vlad.MoveBy((int)moveDir.X, (int)moveDir.Y);
                    if (vlad.CurrentAnimation != animation)
                    {
                        vlad.CurrentAnimation = animation;
                    }
                }
                else
                {
                    vlad.CurrentAnimation = "Idle" + vlad.CurrentAnimation.Substring(4);
                }
                float vladX = MathHelper.Clamp(
                    vlad.Position.X, 0 + vlad.DrawOffset.X, Camera.WorldWidth);
                float vladY = MathHelper.Clamp(
                    vlad.Position.Y, 0 + vlad.DrawOffset.Y, Camera.WorldHeight);

                vlad.Position = new Vector2(vladX, vladY);

                Vector2 testPosition = Camera.WorldToScreen(vlad.Position);

                if (testPosition.X < 100)
                {
                    Camera.Move(new Vector2(testPosition.X - 100, 0));
                }

                if (testPosition.X > (Camera.ViewWidth - 100))
                {
                    Camera.Move(new Vector2(testPosition.X - (Camera.ViewWidth - 100), 0));
                }

                if (testPosition.Y < 100)
                {
                    Camera.Move(new Vector2(0, testPosition.Y - 100));
                }

                if (testPosition.Y > (Camera.ViewHeight - 100))
                {
                    Camera.Move(new Vector2(0, testPosition.Y - (Camera.ViewHeight - 100)));
                }
                /////////////////////////////////////////////
                vlad.Update(gameTime);
                break;
            }
            #endregion ;

            base.Update(gameTime);
        }
        public void Update(GameTime gameTime)
        {
            if (bActive && bMovingTowardsTarget)
            {
                if (!(v2Target == null))
                {
                    // Get a vector pointing from the current location of the sprite
                    // to the destination.
                    Vector2 Delta = new Vector2(v2Target.X - asSprite.X, v2Target.Y - asSprite.Y);

                    if (Delta.Length() > Speed)
                    {
                        Delta.Normalize();
                        Delta    *= Speed;
                        Position += Delta;
                    }
                    else
                    {
                        if (v2Target == asSprite.Position)
                        {
                            if (bPathing)
                            {
                                if (queuePath.Count > 0)
                                {
                                    v2Target = queuePath.Dequeue();
                                    if (bLoopPath)
                                    {
                                        queuePath.Enqueue(v2Target);
                                    }
                                }
                                else
                                {
                                    if (!(sEndPathAnimation == null))
                                    {
                                        if (!(Sprite.CurrentAnimation == sEndPathAnimation))
                                        {
                                            Sprite.CurrentAnimation = sEndPathAnimation;
                                        }
                                    }

                                    if (bDeactivateAtEndOfPath)
                                    {
                                        IsActive = false;
                                    }

                                    if (bHideAtEndOfPath)
                                    {
                                        IsVisible = false;
                                    }
                                }
                            }
                        }
                        else
                        {
                            asSprite.Position = v2Target;
                        }
                    }
                }
            }
            if (bActive)
            {
                asSprite.Update(gameTime);
            }
        }