public void Draw(World WORLD) { // since text needs to be pixel for pixel we override the shader loop and say "don't skip any pixels" basically Globals.normalEffect.Parameters["xSize"].SetValue(1.0f); Globals.normalEffect.Parameters["ySize"].SetValue(1.0f); Globals.normalEffect.Parameters["xDraw"].SetValue(1.0f); Globals.normalEffect.Parameters["yDraw"].SetValue(1.0f); Globals.normalEffect.Parameters["filterColor"].SetValue(Color.White.ToVector4()); Globals.normalEffect.CurrentTechnique.Passes[0].Apply(); string tempString = "Score: " + GameGlobals.score; Vector2 stringDimensions = font.MeasureString(tempString); Globals.spriteBatch.DrawString(font, tempString, new Vector2(Globals.screenWidth / 2 - stringDimensions.X / 2, Globals.screenHeight - 40), Color.Black); healthBar.Draw(new Vector2(20, Globals.screenHeight - 40)); if (WORLD.user.hero.dead || WORLD.user.buildings.Count <= 0) { tempString = "Press Enter or Click Button to Restart"; stringDimensions = font.MeasureString(tempString); Globals.spriteBatch.DrawString(font, tempString, new Vector2(Globals.screenWidth / 2 - stringDimensions.X / 2, Globals.screenHeight / 2), Color.Black); resetButton.Draw(new Vector2(Globals.screenWidth / 2, Globals.screenHeight / 2 + 100)); } if (GameGlobals.paused) { pauseOverlay.Draw(Vector2.Zero); } }
protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); // if your not running a shader program, SpriteSortMode.Deferred is pretty much the best // drawing all sprites immediately is slightly less efficient, but it allows us to run our anti-aliasing Globals.spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend); if (Globals.gameState == (int)GameStates.MainMenu) { mainMenu.Draw(); } else if (Globals.gameState == (int)GameStates.GamePlay) { gamePlay.Draw(); } Globals.normalEffect.Parameters["xSize"].SetValue((float)cursor.myModel.Bounds.Width); Globals.normalEffect.Parameters["ySize"].SetValue((float)cursor.myModel.Bounds.Height); Globals.normalEffect.Parameters["xDraw"].SetValue((float)((int)cursor.dimensions.X)); Globals.normalEffect.Parameters["yDraw"].SetValue((float)((int)cursor.dimensions.Y)); Globals.normalEffect.Parameters["filterColor"].SetValue(Color.White.ToVector4()); Globals.normalEffect.CurrentTechnique.Passes[0].Apply(); cursor.Draw(new Vector2(Globals.mouse.newMousePos.X, Globals.mouse.newMousePos.Y), new Vector2(0, 0), Color.White); Globals.spriteBatch.End(); base.Draw(gameTime); }
public virtual void DrawGrid(Vector2 OFFSET) { if (showGrid) { //Vector2 topLeft = GetSlotFromPixel((new Vector2(0, 0)) / Globals.zoom - OFFSET, Vector2.Zero); //Vector2 bottomRight = GetSlotFromPixel((new Vector2(Globals.screenWidth, Globals.screenHeight)) / Globals.zoom - OFFSET, Vector2.Zero); Vector2 topLeft = GetSlotFromPixel(new Vector2(0, 0), Vector2.Zero); Vector2 bottomRight = GetSlotFromPixel(new Vector2(Globals.screenWidth, Globals.screenHeight), Vector2.Zero); Globals.normalEffect.Parameters["filterColor"].SetValue(Color.White.ToVector4()); Globals.normalEffect.CurrentTechnique.Passes[0].Apply(); // only draws what is currently on screen! If you try to draw everything, your computer likely would break ;) for (int j = (int)topLeft.X; j <= bottomRight.X && j < slots.Count; j++) { for (int k = (int)topLeft.Y; k <= bottomRight.Y && k < slots[0].Count; k++) { if (currentHoverSlot.X == j && currentHoverSlot.Y == k) { Globals.normalEffect.Parameters["filterColor"].SetValue(Color.Red.ToVector4()); Globals.normalEffect.CurrentTechnique.Passes[0].Apply(); } else { Globals.normalEffect.Parameters["filterColor"].SetValue(Color.White.ToVector4()); Globals.normalEffect.CurrentTechnique.Passes[0].Apply(); } gridImg.Draw(OFFSET + physicalStartPos + new Vector2(j * slotDims.X, k * slotDims.Y)); } } } }
public virtual void Draw() { background.Draw(Vector2.Zero); for (int i = 0; i < buttons.Count; i++) { buttons[i].Draw(new Vector2(325, 600 + 45 * i)); } }
/// <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.CornflowerBlue); // TODO: Add your drawing code here Globals.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend); world.Draw(Vector2.Zero); cursor.Draw(new Vector2(Globals.mouse.newMousePos.X, Globals.mouse.newMousePos.Y), new Vector2(0, 0)); // creating a new mouse because using the same variable will cause errors in future Globals.spriteBatch.End(); base.Draw(gameTime); }
public virtual void Draw(Vector2 OFFSET) { // since text needs to be pixel for pixel we override the shader loop and say "don't skip any pixels" basically Globals.normalEffect.Parameters["xSize"].SetValue(1.0f); Globals.normalEffect.Parameters["ySize"].SetValue(1.0f); Globals.normalEffect.Parameters["xDraw"].SetValue(1.0f); Globals.normalEffect.Parameters["yDraw"].SetValue(1.0f); Globals.normalEffect.Parameters["filterColor"].SetValue(Color.Black.ToVector4()); Globals.normalEffect.CurrentTechnique.Passes[0].Apply(); barBackground.Draw(OFFSET, new Vector2(0, 0), Color.Black); Globals.normalEffect.Parameters["filterColor"].SetValue(color.ToVector4()); Globals.normalEffect.CurrentTechnique.Passes[0].Apply(); // the origin set here is making the math super simple bar.Draw(OFFSET + new Vector2(border, border), new Vector2(0, 0), color); }