public static void Update(float elapsedTime) { if (switchRoom()) LoadSaveManager.SaveGameProgress(); CameraManager.Update(elapsedTime); MapsManager.maps[(int)currentRoom].Update(elapsedTime); if (currentRoom== Rooms.finalBoss) { FinalBoss.Update(elapsedTime); } if(currentRoom==Rooms.midBoss) { MidBoss.Update(elapsedTime); } EnemyManager.enemyRoomManagers[(int)currentRoom].Update(elapsedTime); FireBallsManager.Update(elapsedTime); LavaGeyserManager.Update(elapsedTime); PlatformsManager.platformsRoomManagers[(int)currentRoom].Update(elapsedTime); CollectablesManager.collectablesRoomManagers[(int)currentRoom].Update(elapsedTime); MonologuesManager.monologuesRoomManagers[(int)currentRoom].Update(elapsedTime); DoorsManager.doorsRoomManagers[(int)currentRoom].Update(); AnimatedSpritesManager.animatedSpritesRoomManagers[(int)currentRoom].Update(elapsedTime); TorchManager.Update(elapsedTime); }
/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } currentKeyboard = Keyboard.GetState(); currentGamePad = GamePad.GetState(PlayerIndex.One); currentMouseState = Mouse.GetState(); float elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds; //update logic here #if LEVEL_EDITOR levelEditor.Update(currentMouseState, previousMouseState, tilesPerRow, infoBoxHeightPx); CameraManager.Update(elapsedTime); PlatformsManager.platformsRoomManagers[levelEditor.currentRoomNumber].Update(elapsedTime); #else //update only relevant classes depending on the state of the game switch (currentGameState) { case GameStates.titleScreen: if (!gameInitialized) { LoadContent(); } MenusManager.menus[(int)MenusManager.MenuType.titleScreen].Update(); break; case GameStates.loadGame: if (LoadSaveManager.LoadGame()) { currentGameState = GameStates.playing; } else { currentGameState = GameStates.titleScreen; } break; case GameStates.controls: MenusManager.menus[(int)MenusManager.MenuType.controls].Update(); break; case GameStates.achievements: MenusManager.menus[(int)MenusManager.MenuType.achievements].Update(); break; case GameStates.credits: MenusManager.menus[(int)MenusManager.MenuType.credits].Update(); break; case GameStates.intro: if (CutscenesManager.cutscenes[(int)CutscenesManager.CutsceneType.intro].active) { CutscenesManager.cutscenes[(int)CutscenesManager.CutsceneType.intro].Update(elapsedTime); } else { currentGameState = GameStates.playing; } break; case GameStates.playing: GameStats.Update(elapsedTime); if ((currentKeyboard.IsKeyDown(Keys.P) && !previousKeyboard.IsKeyDown(Keys.P)) || (currentKeyboard.IsKeyDown(Keys.M) && !previousKeyboard.IsKeyDown(Keys.M)) || (currentGamePad.Buttons.Start == ButtonState.Pressed && previousGamePad.Buttons.Start == ButtonState.Released)) { currentGameState = GameStates.pause; break; } RoomsManager.Update(elapsedTime); Player.Update(elapsedTime); ProjectilesManager.Update(elapsedTime); GameEvents.Update(elapsedTime); Collisions.Update(elapsedTime); CollectablesManager.Update(elapsedTime); break; case GameStates.pause: if ((currentKeyboard.IsKeyDown(Keys.P) && !previousKeyboard.IsKeyDown(Keys.P)) || (currentKeyboard.IsKeyDown(Keys.M) && !previousKeyboard.IsKeyDown(Keys.M)) || (currentGamePad.Buttons.Start == ButtonState.Pressed && previousGamePad.Buttons.Start == ButtonState.Released)) { MenusManager.menus[(int)MenusManager.MenuType.pause].Reset(); currentGameState = GameStates.playing; break; } MenusManager.menus[(int)MenusManager.MenuType.pause].Update(); break; case GameStates.confirmQuit: MenusManager.menus[(int)MenusManager.MenuType.confirmQuit].Update(); if (currentGameState == GameStates.titleScreen) { gameInitialized = false; } break; case GameStates.dead: GameStats.Update(elapsedTime); PlayerDeathManager.Update(elapsedTime); break; case GameStates.ending: if (!CutscenesManager.cutscenes[(int)CutscenesManager.CutsceneType.ending].active) { LoadSaveManager.SaveHighScores(new AchievementsSaveData (true, (GameStats.deathsCount == 0) || Achievements.noDeath, (GameStats.hitsCount == 0) || Achievements.noHits, ((GameStats.gameTime < Achievements.bestTime) || (Achievements.bestTime == 0)) ? GameStats.gameTime : Achievements.bestTime ));; LoadSaveManager.DeleteSaveFile(); currentGameState = GameStates.achievements; gameInitialized = false; } CutscenesManager.cutscenes[(int)CutscenesManager.CutsceneType.ending].Update(elapsedTime); break; case GameStates.quit: Exit(); break; case GameStates.doubleJump: MenusManager.menus[(int)MenusManager.MenuType.doubleJump].Update(); break; case GameStates.wallJump: MenusManager.menus[(int)MenusManager.MenuType.wallJump].Update(); break; } #endif previousKeyboard = currentKeyboard; previousGamePad = currentGamePad; previousMouseState = currentMouseState; base.Update(gameTime); }