/// <summary> /// This is called when the game should draw itself. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Draw(GameTime gameTime) { #if DEBUG base.Window.Title = "Flowers...FPS: " + FrameRate.getInstance().calculateFrameRate(gameTime); #endif GraphicsDevice.Clear(Color.White); base.spriteBatch.Begin(); this.backGround.render(spriteBatch); this.activeDisplay.render(spriteBatch); base.spriteBatch.End(); base.Draw(gameTime); }
/// <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 DEBUG base.Window.Title = GAME_NAME + "...FPS: " + FrameRate.getInstance().calculateFrameRate(gameTime) + " X:" + InputManager.getInstance().MouseX + " Y:" + InputManager.getInstance().MouseY; if (InputManager.getInstance().wasKeyPressed(Keys.R)) { GameStateMachine.getInstance().reset(); } if (InputManager.getInstance().wasKeyPressed(Keys.Escape) || InputManager.getInstance().wasButtonPressed(PlayerIndex.One, Buttons.B)) { MapEditor.getInstance().logEntries(); this.Exit(); } Debug.update(); #endif if (InputManager.getInstance().wasKeyPressed(Keys.Escape)) { GameStateMachine.getInstance().goToPreviousState(); } else if (InputManager.getInstance().wasKeyPressed(Keys.Enter)) { GameStateMachine.getInstance().goToNextState(); } // start the transitions handleNewTransition(); if (GameStateMachine.getInstance().CurrentState.GetType() == typeof(ExitGameState)) { this.Exit(); } else { float elapsed = gameTime.ElapsedGameTime.Milliseconds; handleTransitionState(elapsed); SoundManager.getInstance().update(); this.activeDisplay.update(elapsed); this.transitionItem.update(elapsed); base.Update(gameTime); } }
/// <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 DEBUG base.Window.Title = GAME_NAME + "...FPS: " + FrameRate.getInstance().calculateFrameRate(gameTime) + " X:" + InputManager.getInstance().MouseX + " Y:" + InputManager.getInstance().MouseY; if (InputManager.getInstance().wasKeyPressed(Keys.R)) { SoundManager.getInstance().removeAllEmitters(); this.gameDisplay = new GameDisplay(GraphicsDevice, Content); } if (InputManager.getInstance().wasKeyPressed(Keys.Escape) || InputManager.getInstance().wasButtonPressed(PlayerIndex.One, Buttons.B)) { //SpawnGenerator.getInstance().Running = false; //this.Exit(); } #endif // start the transitions handleNewTransition(); if (StateManager.getInstance().CurrentGameState == GameState.Exit) { SpawnGenerator.getInstance().Running = false; this.Exit(); } base.IsMouseVisible = false; if (StateManager.getInstance().CurrentGameState == GameState.Options) { if (!InputManager.getInstance().isLeftButtonDown()) { base.IsMouseVisible = true; } } float elapsed = gameTime.ElapsedGameTime.Milliseconds; handleTransitionState(elapsed); SoundManager.getInstance().update(); this.activeDisplay.update(elapsed); this.transitionItem.update(elapsed); base.Update(gameTime); }
/// <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 DEBUG base.Window.Title = "Rob, The Dumb Ass Robber...FPS: " + FrameRate.getInstance().calculateFrameRate(gameTime) + " X:" + InputManager.getInstance().MouseX + " Y:" + InputManager.getInstance().MouseY; #endif // Allows the game to exit if (StateManager.getInstance().CurrentGameState == StateManager.GameState.MainMenu) { if (InputManager.getInstance().wasKeyPressed(Keys.Escape) || InputManager.getInstance().wasButtonPressed(PlayerIndex.One, Buttons.B)) { this.Exit(); } } else if (StateManager.getInstance().CurrentGameState == StateManager.GameState.Exit) { this.Exit(); } // Transition code #region Transitions if (StateManager.getInstance().CurrentGameState == StateManager.GameState.MainMenu) { if (StateManager.getInstance().PreviousGameState == StateManager.GameState.MainMenu && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.mainMenu; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.InGameMenu && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionIn) { this.activeDisplay = this.mainMenu; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.InGameMenu && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.inGameMenu; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.ModeSelect && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.modeSelectMenu; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.Instructions && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.instructionMenu; } else { this.activeDisplay = this.mainMenu; } } else if (StateManager.getInstance().CurrentGameState == StateManager.GameState.Instructions) { if (StateManager.getInstance().PreviousGameState == StateManager.GameState.MainMenu && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.mainMenu; } else { this.activeDisplay = this.instructionMenu; } } else if (StateManager.getInstance().CurrentGameState == StateManager.GameState.ModeSelect) { if (StateManager.getInstance().PreviousGameState == StateManager.GameState.MainMenu && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.mainMenu; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.MapSelection && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.mapSelectionMenu; } else { this.activeDisplay = this.modeSelectMenu; } } else if (StateManager.getInstance().CurrentGameState == StateManager.GameState.Waiting || StateManager.getInstance().CurrentGameState == StateManager.GameState.Active) { if (StateManager.getInstance().PreviousGameState == StateManager.GameState.MapSelection && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionIn) { this.activeDisplay = this.gameDisplay; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.MapSelection && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.mapSelectionMenu; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.Active && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.mainMenu; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.Active && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionIn) { this.activeDisplay = this.gameDisplay; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.InGameMenu && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionIn) { this.activeDisplay = gameDisplay; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.InGameMenu && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.inGameMenu; } else { this.activeDisplay = this.gameDisplay; } } else if (StateManager.getInstance().CurrentGameState == StateManager.GameState.InGameMenu) { if (StateManager.getInstance().PreviousGameState == StateManager.GameState.Active && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.gameDisplay; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.Active && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionIn) { this.activeDisplay = this.inGameMenu; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.Waiting && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.gameDisplay; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.Waiting && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionIn) { this.activeDisplay = this.inGameMenu; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.GameOver && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionIn) { this.activeDisplay = this.gameDisplay; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.GameOver && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.gameDisplay; } else { this.activeDisplay = this.inGameMenu; } } else if (StateManager.getInstance().CurrentGameState == StateManager.GameState.MapSelection) { if (StateManager.getInstance().PreviousGameState == StateManager.GameState.ModeSelect && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.modeSelectMenu; } else if (StateManager.getInstance().PreviousGameState == StateManager.GameState.GameOver && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.gameOverDisplay; } else { this.activeDisplay = this.mapSelectionMenu; } } else if (StateManager.getInstance().CurrentGameState == StateManager.GameState.GameOver) { if (StateManager.getInstance().PreviousGameState == StateManager.GameState.Active && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.gameDisplay; } else { this.activeDisplay = this.gameOverDisplay; } } else if (StateManager.getInstance().CurrentGameState == StateManager.GameState.Reset) { if (StateManager.getInstance().PreviousGameState == StateManager.GameState.GameOver && StateManager.getInstance().CurrentTransitionState == StateManager.TransitionState.TransitionOut) { this.activeDisplay = this.gameOverDisplay; } else { this.activeDisplay = this.gameDisplay; } } else { if (StateManager.getInstance().CurrentGameState == StateManager.GameState.InitGame) { this.activeDisplay = this.mapSelectionMenu; ((GameDisplay)this.gameDisplay).reset(); StateManager.getInstance().CurrentGameState = StateManager.GameState.Waiting; StateManager.getInstance().PreviousGameState = StateManager.GameState.MapSelection; } else { this.activeDisplay = this.gameDisplay; } } #endregion Transitions float elapsed = gameTime.ElapsedGameTime.Milliseconds; this.activeDisplay.update(elapsed); SoundManager.getInstance().update(); base.Update(gameTime); }
/// <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) { // Allows the game to exit if (InputManager.getInstance().wasKeyPressed(Keys.Escape)) { this.Exit(); } float elapsed = gameTime.ElapsedGameTime.Milliseconds; this.nuke.update(elapsed); this.explosionEmitter.update(elapsed); foreach (Launcher launcher in this.players) { if (launcher != null) { launcher.update(elapsed); } } bool allPlayersLanded = true; foreach (Launcher launcher in this.players) { if (launcher != null && !CollisionHelper.collision(launcher, this.terrain)) { launcher.shiftDown(elapsed); allPlayersLanded = false; } } if (allPlayersLanded && StateManager.getInstance().CurrentGameState == StateManager.GameState.Loading) { StateManager.getInstance().CurrentGameState = StateManager.GameState.Active; } if (StateManager.getInstance().CurrentGameState == StateManager.GameState.Active || StateManager.getInstance().CurrentGameState == StateManager.GameState.Waiting) { if (this.nuke.State == SpriteState.Active) { Vector2 collisionPoint; // check for collision with enemies for (int i = 0; i < this.players.Length; i++) { if (this.players[i] != null && this.players[i].ID != this.nuke.OwnerID) { if (CollisionHelper.collision(this.nuke, this.players[i], out collisionPoint)) { this.players[i] = null; explode(collisionPoint); break; } } } bool allPlayersDead = true; for (int i = 0; i < this.players.Length; i++) { if (this.players[i] != null) { allPlayersDead = false; break; } } if (allPlayersDead) { StateManager.getInstance().CurrentGameState = StateManager.GameState.GameOver; } if (CollisionHelper.collision(this.nuke, this.terrain, out collisionPoint)) { explode(collisionPoint); this.terrain.destroy(collisionPoint); } // check if it went out of bounds Vector2 nukePos = this.nuke.Position; if (nukePos.X > base.graphics.PreferredBackBufferWidth * (1.5f) || nukePos.X < -.5f * base.graphics.PreferredBackBufferWidth || nukePos.Y > base.graphics.PreferredBackBufferHeight * (1.5)) { explode(nukePos); } } } else if (StateManager.getInstance().CurrentGameState == StateManager.GameState.GameOver) { if (InputManager.getInstance().wasButtonPressed(MouseButton.Left)) { reset(); } } this.sfxEngine.update(); #if DEBUG if (InputManager.getInstance().isButtonDown(MouseButton.Left)) { this.terrain.destroy(InputManager.getInstance().MousePosition); } if (InputManager.getInstance().wasKeyPressed(Keys.R)) { reset(); } else if (InputManager.getInstance().wasKeyPressed(Keys.C)) { Console.Clear(); } this.Window.Title = TITLE + " " + FrameRate.getInstance().calculateFrameRate(gameTime); #endif base.Update(gameTime); }