//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); }