示例#1
0
        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();
            }
        }
示例#2
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)
        {
            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);
        }