Example #1
0
        //private bool tradeFlash = false;
        public override void Draw(GameTime gameTime)
        {
            Vector2     center = new Vector2(ScreenManager.Game.RenderWidth, ScreenManager.Game.RenderHeight) / 2f;
            SpriteBatch sb     = ScreenManager.SpriteBatch;

            ScreenManager.Game.GraphicsDevice.Clear(Color.Black);

            if (!_firstWave)
            {
                ScreenManager.Game.GraphicsDevice.Clear(new Color(37, 59, 89));

                sb.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null);
                sb.Draw(ScreenManager.blankTexture, new Rectangle(0, (int)waterLevel - ((int)camera.Position.Y - ScreenManager.Game.RenderHeight / 2), ScreenManager.Game.RenderWidth, ((map.TileHeight * map.Height) + 10) - (int)waterLevel), null, new Color(0, 16, 65));
                sb.End();

                underwaterBGParallax.Draw(sb, camera.Position.Y);
                skyBGParallax.Draw(sb, camera.Position.Y);
                waterParallax.Draw(sb, false, camera.Position.Y);
                rocksParallax.Draw(sb, false, camera.Position.Y);
                cloudsParallax.Draw(sb, true, camera.Position.Y);

                particleController.Draw(sb, camera, map, 0);

                sb.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null, null, camera.CameraMatrix);
                map.DrawLayer(sb, "fg", camera);
                playerShip.Draw(sb, map, ScreenManager.Font);
                sb.End();

                enemyController.Draw(sb, camera, map);

                particleController.Draw(sb, camera, map, 1);
                projectileController.Draw(sb, camera, map);
                powerupController.Draw(sb, camera, map);

                rocksParallax.Draw(sb, true, camera.Position.Y);
                cloudsParallax.Draw(sb, false, camera.Position.Y);

                sb.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null);
                sb.Draw(ScreenManager.blankTexture,
                        new Rectangle(0,
                                      (int)waterLevel - ((int)camera.Position.Y - ScreenManager.Game.RenderHeight / 2) - 5,
                                      ScreenManager.Game.RenderWidth, ((map.TileHeight * map.Height) + 10) - (int)waterLevel), null,
                        Color.Black * 0.4f);
                sb.End();

                //sb.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null);
                //Enemy head = EnemyController.Instance.Enemies.FirstOrDefault(en => en is Boss && ((Boss)en).Head);
                //if (head != null) sb.DrawString(ScreenManager.Font, head.Position.ToString(), Vector2.One * 10, Color.White);
                //sb.End();

                waterParallax.Draw(sb, true, camera.Position.Y);
            }

            if (_endOfWave)
            {
                sb.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null);
                sb.Draw(ScreenManager.blankTexture, new Rectangle(0, 0, ScreenManager.Game.RenderWidth, ScreenManager.Game.RenderHeight), null, Color.White * _waveFade);
                if (_tradecost > 0 && !_trading && (Ship.Instance.PowerUpMeter > 0 || Ship.Instance.PowerUpLevel > 0))
                {
                    string tradetext = "Press fire to trade " + _tradecost + " power for health";
                    // sb.DrawString(ScreenManager.FontSmall, tradetext, center + new Vector2(0, -50) + Vector2.One, Color.Black * _waveFade, 0f, ScreenManager.FontSmall.MeasureString(tradetext) / 2,1f, SpriteEffects.None, 0);
                    sb.DrawString(ScreenManager.FontSmall, tradetext, center + new Vector2(0, -50), Color.DarkRed * _waveFade, 0f, ScreenManager.FontSmall.MeasureString(tradetext) / 2, 1f, SpriteEffects.None, 0);
                }


                int numdigits = GameController.Wave.ToString().Length;
                int wavepos   = -38 - 10 - (numdigits * 8);
                sb.Draw(text, center + new Vector2(wavepos, -16), new Rectangle(68, 66, 77, 32), Color.White * _waveFade);
                for (int i = 0; i < numdigits; i++)
                {
                    sb.Draw(text, center + new Vector2(wavepos + 77 + 10 + (i * 16), -16), new Rectangle(Convert.ToInt32(GameController.Wave.ToString().Substring(i, 1)) * 32, 116, 32, 32), Color.White * _waveFade);
                }
                sb.End();
            }

            if (_gameOver)
            {
                sb.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null);
                sb.Draw(ScreenManager.blankTexture, new Rectangle(0, 0, ScreenManager.Game.RenderWidth, ScreenManager.Game.RenderHeight), null, Color.Black * 0.2f * _goFade);
                sb.Draw(text, center + new Vector2(-47, -32), new Rectangle(196, 0, 94, 65), Color.White * _goFade);
                sb.End();
            }

            hud.Draw(sb, new Viewport(0, 0, ScreenManager.Game.RenderWidth, ScreenManager.Game.RenderHeight), camera, !_endOfWave, ScreenManager.Font, (map.Width * map.TileWidth));

            //ScreenManager.FadeBackBufferToBlack(1f - TransitionAlpha);

            base.Draw(gameTime);
        }