/// <summary> /// This is called when the movie should draw itself. /// </summary> public override void Draw(GameTime gameTime) { // Clear background ScreenManager.GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); // Draw current frame spriteBatch.Draw(movie[currentMovieFrame], new Vector2((gameWidth / 2) - (movieWidth / 2), (gameHeight / 2) - (movieHeight / 2)), Color.White); spriteBatch.End(); // If the screen is transitioning on or off, fade it out to black. if (TransitionPosition > 0) { ScreenManager.FadeBackBufferToBlack(255 - TransitionAlpha); } }
/// <summary> /// Draws the message box. /// </summary> public override void Draw(GameTime gameTime) { // Start to transition the Screen off if it's been on for more than 3 seconds if (DateTime.Now >= offAt) { ExitScreen(); } else { SpriteBatch spriteBatch = ScreenManager.SpriteBatch; SpriteFont font = ScreenManager.Font; // Darken down any other screens that were drawn beneath the popup. ScreenManager.FadeBackBufferToBlack(TransitionAlpha * 2 / 3); // Center the message text in the viewport. Viewport viewport = ScreenManager.GraphicsDevice.Viewport; Vector2 viewportSize = new Vector2(viewport.Width, viewport.Height); Vector2 textSize = font.MeasureString("Game Over"); Vector2 textPosition = (viewportSize - textSize) / 2; // The background includes a border somewhat larger than the text itself. const int hPad = 32; const int vPad = 16; Rectangle backgroundRectangle = new Rectangle((int)textPosition.X - hPad, (int)textPosition.Y - vPad, (int)textSize.X + hPad * 2, (int)textSize.Y + vPad * 2); // Fade the popup alpha during transitions. Color color = new Color(255, 255, 255, TransitionAlpha); spriteBatch.Begin(); // Draw the background rectangle. spriteBatch.Draw(gradientTexture, backgroundRectangle, color); // Draw the message box text. spriteBatch.DrawString(font, "Game Over", textPosition, color); spriteBatch.End(); } }
/// <summary> /// Draws the pause menu screen. This darkens down the gameplay screen /// that is underneath us, and then chains to the base MenuScreen.Draw. /// </summary> public override void Draw(GameTime gameTime) { ScreenManager.FadeBackBufferToBlack(TransitionAlpha * 2 / 3); base.Draw(gameTime); }
/// <summary> /// This is called when the game should draw itself. /// </summary> public override void Draw(GameTime gameTime) { // Clear screen ScreenManager.GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); // Draw munchies for (int i = 0; i < noOfMunchies; i++) { if (munchieAnimationCount[i] == 0) { // Draw frame 1 spriteBatch.Draw(munchie1, munchiePos[i], Color.White); } else { // Draw frame 2 spriteBatch.Draw(munchie2, munchiePos[i], Color.White); } } // Draw enemy for (int i = 0; i < enemyCount; i++) { if (enemyAnimationCount[i] == 0) { // Draw frame 1 spriteBatch.Draw(enemy1, enemyPos[i], Color.White); } else { // Draw frame 2 spriteBatch.Draw(enemy2, enemyPos[i], Color.White); } } // Draw Pacman { spriteBatch.Draw(pacman, pacmanPos, new Rectangle(currentFrame.X * frameSize.X, currentFrame.Y * frameSize.Y, frameSize.X, frameSize.Y), Color.White, 0, Vector2.Zero, 1, SpriteEffects.None, 0); } // draw scores & lives { spriteBatch.DrawString(highscoreFont, "Score: " + score, new Vector2(10, 10), Color.GreenYellow, 0, Vector2.Zero, 1, SpriteEffects.None, 1); spriteBatch.DrawString(livesFont, "Lives: " + lives, new Vector2(100, 10), Color.GreenYellow, 0, Vector2.Zero, 1, SpriteEffects.None, 1); spriteBatch.End(); } // If the game is transitioning on or off, fade it out to black. if (TransitionPosition > 0) { ScreenManager.FadeBackBufferToBlack(255 - TransitionAlpha); } }
/// <summary> /// This is called when the game should draw itself. /// </summary> public override void Draw(GameTime gameTime) { spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None); ScreenManager.GraphicsDevice.Textures[1] = waterfallTexture; refractionEffect.Parameters["DisplacementScroll"].SetValue(Functions.MoveInCircle(gameTime, 0.2f)); refractionEffect.Begin(); refractionEffect.CurrentTechnique.Passes[0].Begin(); // Draw the background first, covers the entire viewport spriteBatch.Draw(gameBackground, Vector2.Zero, Color.White); #region Draw power-up if (powerUp.IsActive) { spriteBatch.Draw(blank, powerUp.Position, powerUp.Rectangle, powerUp.Color, 0, new Vector2(30, 10), 1, SpriteEffects.None, 0); spriteBatch.DrawString(powerUpFont, powerUp.DisplayName, powerUp.Position - new Vector2(29, 11), new Color(Color.Black, 175)); } #endregion #region Draw blood effects foreach (Blood b in blood) { if (b.IsActive) { spriteBatch.Draw(b.Texture, b.Position, new Rectangle(b.CurrentFrame.X * b.FrameSize.X, b.CurrentFrame.Y * b.FrameSize.Y, b.FrameSize.X, b.FrameSize.Y), b.Color, b.Rotation, b.Origin, b.Scale, b.SpriteEffects, 0); } } #endregion #region Draw fish foreach (Fish f in fish) { if (f.IsActive) { spriteBatch.Draw(f.Texture, f.Position, new Rectangle(f.CurrentFrame.X * f.FrameSize.X, f.CurrentFrame.Y * f.FrameSize.Y, f.FrameSize.X, f.FrameSize.Y), f.Color, f.Rotation, f.Origin, f.Scale, f.SpriteEffects, 0); } } #endregion #region Draw piranha if (piranha.IsActive) { spriteBatch.Draw(piranha.Texture, piranha.Position, new Rectangle(piranha.CurrentFrame.X * piranha.FrameSize.X, piranha.CurrentFrame.Y * piranha.FrameSize.Y, piranha.FrameSize.X, piranha.FrameSize.Y), piranha.Color, piranha.Rotation, piranha.Origin, piranha.Scale, piranha.SpriteEffects, 0); } #endregion #region Draw mines foreach (Mine mine in mines) { if (mine.IsActive) { spriteBatch.Draw(mine.Texture, mine.Position, new Rectangle(mine.CurrentFrame.X * mine.FrameSize.X, mine.CurrentFrame.Y * mine.FrameSize.Y, mine.FrameSize.X, mine.FrameSize.Y), mine.Color, mine.Rotation, mine.Origin, mine.Scale, mine.SpriteEffects, 0); } } #endregion spriteBatch.Draw(fog, Vector2.Zero, new Color(Color.SteelBlue, 100)); spriteBatch.End(); refractionEffect.CurrentTechnique.Passes[0].End(); refractionEffect.End(); spriteBatch.Begin(); #region Draw UI if (powerUp.Running) { spriteBatch.Draw(blank, new Rectangle(10, 10, 210, 30), new Color(Color.Black, 100)); int left = (powerUp.EffectEnd - DateTime.Now).Seconds; spriteBatch.Draw(blank, new Rectangle(15, 15, left * 10, 20), new Color(Color.LightBlue, 120)); } spriteBatch.Draw(blank, new Rectangle(Functions.GameSize.X - 220, 10, 210, 30), new Color(Color.Black, 100)); spriteBatch.Draw(blank, new Rectangle(Functions.GameSize.X - 215, 15, piranha.Health * 2, 20), new Color((piranha.Poisoned) ? Color.GreenYellow : Color.Red, 150)); spriteBatch.DrawString(spriteFont, Functions.Alert.Message, new Vector2((Functions.GameSize.X / 2) - (spriteFont.MeasureString(Functions.Alert.Message).X / 2), 15), Functions.Alert.Color); #endregion spriteBatch.End(); // If the game is transitioning on or off, fade it out to black. if (TransitionPosition > 0) { ScreenManager.FadeBackBufferToBlack(255 - TransitionAlpha); } }
/// <summary> /// This is called when the movie should draw itself. /// </summary> public override void Draw(GameTime gameTime) { float transitionOffset = (float)Math.Pow(TransitionPosition, 2); spriteBatch.Begin(); spriteBatch.Draw(background, Vector2.Zero, Color.White); // Draw a black, semi-transparent, background to see the text better spriteBatch.Draw(blank, new Rectangle(10, 140, 582, 285), new Color(Color.Black, 100)); #region Draw Title // Draw the menu title. Vector2 titlePosition = new Vector2(426, 80); Vector2 titleOrigin = font.MeasureString(menuTitle) / 2; //Color titleColor = new Color(192, 192, 192, TransitionAlpha); Color titleColor = Color.LightCyan; float titleScale = 1.25f; titlePosition.Y -= transitionOffset * 100; spriteBatch.DrawString(font, menuTitle, titlePosition, titleColor, 0, titleOrigin, titleScale, SpriteEffects.None, 0); #endregion spriteBatch.DrawString(smallfont, "The aim of the game is simple: eat the fish and avoid the mines", new Vector2(20, 150), Color.White); spriteBatch.DrawString(smallfont, "Gray mines will cause instant damage", new Vector2(20, 165), Color.Tomato); spriteBatch.DrawString(smallfont, "Yellow/Green mines will poison you. Poison will cause damage over time.", new Vector2(20, 180), Color.YellowGreen); spriteBatch.DrawString(smallfont, "When you are poisoned, one fish will turn green. You must eat this fish to be cured.", new Vector2(40, 195), Color.YellowGreen); spriteBatch.DrawString(smallfont, "Power-Ups: these can be eaten to provide different beneficial effects", new Vector2(20, 225), Color.White); Vector2 puPos = new Vector2(50, 230); foreach (PowerUp pu in powerUps) { puPos += new Vector2(0, 25); spriteBatch.Draw(blank, puPos, pu.Rectangle, pu.Color, 0, new Vector2(30, 10), 1, SpriteEffects.None, 0); spriteBatch.DrawString(smallfont, pu.DisplayName, puPos - new Vector2(29, 11), new Color(Color.Black, 175)); } spriteBatch.DrawString(smallfont, "Health +5", new Vector2(87, 248), Color.LightGreen); spriteBatch.DrawString(smallfont, "Health +10", new Vector2(87, 273), Color.LightGreen); spriteBatch.DrawString(smallfont, "Health +25", new Vector2(87, 298), Color.LightGreen); spriteBatch.DrawString(smallfont, "No Chase - while active, mines won't chase you when you get close.", new Vector2(87, 323), Color.LightSkyBlue); spriteBatch.DrawString(smallfont, "Repel - while active, mines will move away from you.", new Vector2(87, 348), Color.LightPink); spriteBatch.DrawString(smallfont, "Slow Fish - while active, fish will move slower.", new Vector2(87, 373), Color.Yellow); spriteBatch.DrawString(smallfont, "Slow Mines - while active, mines will move slower.", new Vector2(87, 398), Color.Salmon); spriteBatch.End(); // If the screen is transitioning on or off, fade it out to black. if (TransitionPosition > 0) { ScreenManager.FadeBackBufferToBlack(255 - TransitionAlpha); } }