public override void Draw(Graphics2D g) { Zone zoneOld = roomOld.Room.Zone; Zone zoneNew = roomNew.Room.Zone; if (zoneOld == zoneNew) { // Draw the rooms normally. DrawRooms(g); } else { // Fade between zones. // Switch to the temp render target to draw the new zone. g.End(); g.SetRenderTarget(GameData.RenderTargetGameTemp); g.Begin(GameSettings.DRAW_MODE_DEFAULT); roomOld.Room.Zone = zoneNew; DrawRooms(g); roomOld.Room.Zone = zoneOld; // Switch to main render target to draw the old zone. g.End(); g.SetRenderTarget(GameData.RenderTargetGame); g.Begin(GameSettings.DRAW_MODE_DEFAULT); roomNew.Room.Zone = zoneOld; DrawRooms(g); roomNew.Room.Zone = zoneNew; // Draw the temp render target (with the new zone) at an opacity. float opacity = (float) distance / (float) maxDistance; Color color = Color.White * opacity; g.DrawImage(GameData.RenderTargetGameTemp, Vector2F.Zero, Vector2F.Zero, Vector2F.One, 0.0, color); } }
//----------------------------------------------------------------------------- // Overriden methods //----------------------------------------------------------------------------- protected override void Draw() { Graphics2D g = new Graphics2D(spriteBatch); //g.SetRenderTarget(GameData.RenderTargetGame); g.Begin(GameSettings.DRAW_MODE_DEFAULT); g.Clear(Color.White); g.Translate(new Vector2F(-this.HorizontalScroll.Value, -this.VerticalScroll.Value)); g.Translate(-Tileset.SpriteSheet.Offset); g.DrawImage(Tileset.SpriteSheet.Image.GetVariant(Zone.ImageVariantID), Point2I.Zero); Point2I tilePoint = SelectedTile * (Tileset.SpriteSheet.CellSize + Tileset.SpriteSheet.Spacing); g.ResetTranslation(); g.Translate(new Vector2F(-this.HorizontalScroll.Value, -this.VerticalScroll.Value)); g.DrawRectangle(new Rectangle2I(tilePoint, Tileset.SpriteSheet.CellSize + 1), 1, Color.White); g.DrawRectangle(new Rectangle2I(tilePoint + 1, Tileset.SpriteSheet.CellSize - 1), 1, Color.Black); g.DrawRectangle(new Rectangle2I(tilePoint - 1, Tileset.SpriteSheet.CellSize + 3), 1, Color.Black); g.ResetTranslation(); g.End(); }
//----------------------------------------------------------------------------- // Overriden methods //----------------------------------------------------------------------------- protected override void Draw() { editorControl.UpdateTicks(); Graphics2D g = new Graphics2D(spriteBatch); g.Begin(GameSettings.DRAW_MODE_DEFAULT); DrawLevel(g); g.End(); /* Graphics2D g = new Graphics2D(spriteBatch); g.SetRenderTarget(levelRenderTarget); g.Begin(GameSettings.DRAW_MODE_DEFAULT); DrawLevel(g); g.End(); g.SetRenderTarget(null); spriteBatch.GraphicsDevice.Clear(Microsoft.Xna.Framework.Color.Red); g.Begin(GameSettings.DRAW_MODE_DEFAULT); g.DrawImage(levelRenderTarget, Point2I.Zero); g.End();*/ }
//----------------------------------------------------------------------------- // Overriden methods //----------------------------------------------------------------------------- protected override void Draw() { editorControl.UpdateTicks(); Graphics2D g = new Graphics2D(spriteBatch); g.Begin(GameSettings.DRAW_MODE_DEFAULT); DrawLevel(g); g.End(); }
//----------------------------------------------------------------------------- // Overriden methods //----------------------------------------------------------------------------- protected override void Draw() { Graphics2D g = new Graphics2D(spriteBatch); //g.SetRenderTarget(GameData.RenderTargetGame); g.Begin(GameSettings.DRAW_MODE_DEFAULT); Point2I selectedTileLocation = GetSelectedTileLocation(); // Draw the tileset. g.Clear(Color.White); g.Translate(-this.HorizontalScroll.Value, -this.VerticalScroll.Value); if (Tileset.SpriteSheet == null) { // Draw each tile's sprite seperately. for (int y = 0; y < Tileset.Height; y++) { for (int x = 0; x < Tileset.Width; x++) { BaseTileData tileData = Tileset.GetTileData(x, y); if (tileData != null) { int spacing = 1; Vector2F drawPos = new Vector2F(x, y) * (Tileset.CellSize + spacing); SpriteAnimation spr = tileData.Sprite; int imageVariantID = tileData.Properties.GetInteger("image_variant", Zone.ImageVariantID); if (imageVariantID < 0) imageVariantID = Zone.ImageVariantID; if (spr.IsAnimation) { int substripIndex = tileData.Properties.GetInteger("substrip_index", 0); spr.Animation = spr.Animation.GetSubstrip(substripIndex); } g.DrawAnimation(tileData.Sprite, imageVariantID, 0.0f, drawPos, Color.White); } } } } else { // Draw the spritesheet's image. g.Translate(-Tileset.SpriteSheet.Offset); g.DrawImage(Tileset.SpriteSheet.Image.GetVariant(Zone.ImageVariantID), Point2I.Zero); g.ResetTranslation(); } // Draw the selection box. if (selectedTileLocation >= Point2I.Zero) { Point2I tilePoint = selectedTileLocation * (Tileset.CellSize + Tileset.Spacing); g.Translate(-this.HorizontalScroll.Value, -this.VerticalScroll.Value); g.DrawRectangle(new Rectangle2I(tilePoint, Tileset.CellSize + 1), 1, Color.White); g.DrawRectangle(new Rectangle2I(tilePoint + 1, Tileset.CellSize - 1), 1, Color.Black); g.DrawRectangle(new Rectangle2I(tilePoint - 1, Tileset.CellSize + 3), 1, Color.Black); g.ResetTranslation(); } g.End(); }
public override void Draw(Graphics2D g) { // Draw the room. g.Translate(0, 16); g.Translate(-viewControl.Position); // Draw tiles. for (int i = 0; i < room.LayerCount; i++) { for (int x = 0; x < room.Width; x++) { for (int y = 0; y < room.Height; y++) { Tile t = tiles[x, y, i]; if (t != null) t.Draw(g); } } } // Draw entities. g.End(); g.Begin(GameSettings.DRAW_MODE_BACK_TO_FRONT); for (int i = 0; i < entities.Count; ++i) { entities[i].Draw(g); } // Draw event tiles. g.End(); g.Begin(GameSettings.DRAW_MODE_DEFAULT); for (int i = 0; i < eventTiles.Count; ++i) { eventTiles[i].Draw(g); } // Draw HUD. g.End(); g.Begin(GameSettings.DRAW_MODE_DEFAULT); g.ResetTranslation(); GameControl.HUD.Draw(g, false); GameControl.DrawRoomState(g); }
//----------------------------------------------------------------------------- // Drawing //----------------------------------------------------------------------------- // Called every step to draw the game. public void Draw(Graphics2D g) { g.UseIntegerPrecision = true; // Render the game-state stack to a buffer. g.SetRenderTarget(GameData.RenderTargetGame); g.Begin(GameSettings.DRAW_MODE_DEFAULT); g.Clear(Color.Black); gameStateStack.Draw(g); g.End(); // Draw the buffer to the screen scaled. g.SetRenderTarget(null); g.ResetTranslation(); g.Begin(GameSettings.DRAW_MODE_DEFAULT); g.DrawImage(GameData.RenderTargetGame, Vector2F.Zero, Vector2F.Zero, (Vector2F) gameScale, 0.0); g.End(); }