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