public override void Update(GameTime gameTime) { for (int i = 0; i < gameAssets_.EnemyListCount; i++) //Enemy logic { gameAssets_.EnemyListItem(i).Update(gameTime); } for (int i = 0; i < gameAssets_.TowerListCount; i++) //Player logic { //pass a reference to the playstate, if the playstate is set to overwhelmed then it is a game over. gameAssets_.TowerListItem(i).Update(gameTime, ref playState); } if (playState == PLAY_STATES.OVERWHELMED) { } else { MoveViewPort(); //Viewport control viewPort_.Update(); for (int i = 0; i < gameAssets_.GUIListCount; i++) //Move GUI Elements with Viewport { gameAssets_.GUIListItem(i).Update(viewPort_.X, viewPort_.Y); } SpellManagement(); //Spells - suggest input handler later to cover some functions already being handled by this function gameAssets_.RemoveEntitiesMarkedForDelete(); //Removing all objects marked as !active from appropriate lists CollisionTesting(gameTime); //Collisions UpdateState(); } }
/// <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) { GraphicsDevice.Clear(Color.ForestGreen); // TODO: Add your drawing code here spriteBatch.Begin(); for (int i = 0; i < gameAssets.DrawListCount; i++) { if (gameAssets.DrawListItem(i).Active) { viewPort.Draw(gameAssets.DrawListItem(i)); } } //Add GUI to separate drawlist - Always draw on top of everything else for (int i = 0; i < gameAssets.GUIListCount; i++) { if (gameAssets.GUIListItem(i).Active) { viewPort.Draw(gameAssets.GUIListItem(i)); } } if (currentGameState == (int)GAME_STATES.PLAY_GAME) { string output = gameAssets.TowerListItem(0).Essence.ToString(); spriteBatch.DrawString(myFont, output, fontPos, Color.Black); if (gameState is PlayGame) { if (((PlayGame)gameState).CurrentPlayState == PLAY_STATES.ABOUT_TO_GENERATE_WAVE) { spriteBatch.DrawString(waveStateFont, "ABOUT_TO_GENERATE_WAVE", waveStateFontPos, Color.Black); } if (((PlayGame)gameState).CurrentPlayState == PLAY_STATES.WAVE_IN_PROGRESS) { spriteBatch.DrawString(waveStateFont, "WAVE_IN_PROGRESS", waveStateFontPos, Color.Black); } if (((PlayGame)gameState).CurrentPlayState == PLAY_STATES.WAITING_FOR_WAVE_TO_START) { spriteBatch.DrawString(waveStateFont, "WAITING_FOR_WAVE_TO_START", waveStateFontPos, Color.Black); } if (((PlayGame)gameState).CurrentPlayState == PLAY_STATES.WAVE_COMPLETE) { spriteBatch.DrawString(waveStateFont, "WAVE_COMPLETE", waveStateFontPos, Color.Black); } if (((PlayGame)gameState).CurrentPlayState == PLAY_STATES.OVERWHELMED) { spriteBatch.DrawString(waveStateFont, "OVERWHELMED", waveStateFontPos, Color.Black); } } } spriteBatch.End(); base.Draw(gameTime); }