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); } }