/// <summary> /// updates everything that's specific for a GameState /// </summary> /// <param name="mouseState"></param> /// <param name="keyboardState"></param> /// <param name="gameTime"></param> private void SwitchUpdate(KeyboardState keyboardState, GameTime gameTime) { switch (CurrentGameState) { case GameState.MainMenu: if (button.BtnFreePlay.IsClicked) { CurrentGameState = GameState.FreePlay; } if (button.BtnTutorial.IsClicked) { CurrentGameState = GameState.Tutorial; } if (button.BtnOptions.IsClicked) { CurrentGameState = GameState.Options; } button.BtnOptions.Update(false, gameTime); button.BtnTutorial.Update(false, gameTime); button.BtnFreePlay.Update(false, gameTime); break; case GameState.Tutorial: if (keyboardState.IsKeyDown(Keys.Escape)) { CurrentGameState = GameState.MainMenu; } break; case GameState.Options: if (keyboardState.IsKeyDown(Keys.Right) && oldKeyboardState.IsKeyUp(Keys.Right)) { MediaPlayer.Stop(); } if (keyboardState.IsKeyDown(Keys.OemPlus) && oldKeyboardState.IsKeyUp(Keys.OemPlus)) { cube.IncreaseRotationSpeed(); } if (button.BtnRussian.IsClicked) { lang.Russian(); } if (button.BtnHebrew.IsClicked) { lang.Hebrew(); } if (button.BtnEnglish.IsClicked) { lang.English(); } button.BtnEnglish.Update(false, gameTime); button.BtnHebrew.Update(false, gameTime); button.BtnRussian.Update(false, gameTime); CheckClickOnAddMusic(); music.Update(); if (keyboardState.IsKeyDown(Keys.Escape)) { CurrentGameState = GameState.MainMenu; } break; case GameState.FreePlay: if (keyboardState.IsKeyDown(Keys.Escape)) { CurrentGameState = GameState.MainMenu; DebugBorders("MainMenu"); } if (button.BtnScramble.IsClicked) { shouldRotate = true; } if (button.BtnSolve.IsClicked) { clocks.StopStoper(); cube.Angle = 0; shouldRotate = false; AlgOrder = ""; AllTimeAlgOrder = ""; YAlgOrder = ""; cube.Solve(); DebugBorders("Reset!"); } if (shouldRotate || solve.ShouldScramble) { cube.Scramble(); AlgOrder += cube.ScrambleResult; shouldRotate = false; solve.ShouldScramble = false; } CheckClickOnStopper(); clocks.UpdateStoper(gameTime); if (shouldRunStopper) { clocks.StartStoper(); } button.BtnScramble.Update(false, gameTime); button.BtnSolve.Update(false, gameTime); break; } }
private void SwitchUpdate(MouseState mouseState, KeyboardState keyboardState, GameTime gameTime) { switch (currentGameState) { case GameState.MainMenu: if (button.btnFreePlay.isClicked) { currentGameState = GameState.FreePlay; } if (button.btnTutorial.isClicked) { currentGameState = GameState.Tutorial; } if (button.btnOptions.isClicked) { currentGameState = GameState.Options; } button.btnOptions.Update(mouseState, false); button.btnTutorial.Update(mouseState, false); button.btnFreePlay.Update(mouseState, false); break; case GameState.Tutorial: if (keyboardState.IsKeyDown(Keys.Back)) { currentGameState = GameState.MainMenu; } break; case GameState.Options: if (keyboardState.IsKeyDown(Keys.Right) && oldKeyboardState.IsKeyUp(Keys.Right)) { MediaPlayer.Stop(); } if (button.btnHebrew.isClicked) { lang.Hebrew(); } if (button.btnEnglish.isClicked) { lang.English(); } if (button.ClassicBound.Contains(mousePos) && mouseState.LeftButton == ButtonState.Pressed && oldMouseState.LeftButton == ButtonState.Released && whichGenre != "classic") { whichGenre = "classic"; justSwitched = true; MediaPlayer.Stop(); } else if (whichGenre == "classic") { justSwitched = false; } if (button.RockBound.Contains(mousePos) && mouseState.LeftButton == ButtonState.Pressed && oldMouseState.LeftButton == ButtonState.Released && whichGenre != "rock") { whichGenre = "rock"; justSwitched = true; MediaPlayer.Stop(); } else if (whichGenre == "rock") { justSwitched = false; } music.Update(mouseState, whichGenre, justSwitched); button.btnEnglish.Update(mouseState, false); button.btnHebrew.Update(mouseState, false); if (keyboardState.IsKeyDown(Keys.Back)) { currentGameState = GameState.MainMenu; } break; case GameState.FreePlay: if (keyboardState.IsKeyDown(Keys.Back)) { currentGameState = GameState.MainMenu; } if (button.btnScramble.isClicked) { shouldScramble = true; } if (button.btnSolve.isClicked) { cube.Solve(); } cube.Update(gameTime, shouldScramble, algOrder); if (cube.ScrambleIndex >= 25) { shouldScramble = false; cube.ScrambleIndex = 0; } button.btnScramble.Update(mouseState, false); button.btnSolve.Update(mouseState, false); break; } }