예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
            }
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        /// <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);
        }