protected override void PostDraw(SpriteBatch spriteBatch) { Matrix matrix = Matrix.CreateScale(new Vector3(drawScale, drawScale, 1)); spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null, matrix); if (AutoTileInProgress != null) { for (int jj = viewTileRect.Y; jj < viewTileRect.End.Y; jj++) { for (int ii = viewTileRect.X; ii < viewTileRect.End.X; ii++) { Loc testLoc = new Loc(ii, jj); if (Collision.InBounds(ZoneManager.Instance.CurrentMap.Width, ZoneManager.Instance.CurrentMap.Height, testLoc) && AutoTileInProgress.IncludesLoc(testLoc)) { AutoTile brush = AutoTileInProgress.GetBrush(testLoc); if (brush.IsEmpty()) { GraphicsManager.Pixel.Draw(spriteBatch, new Rectangle(ii * GraphicsManager.TileSize - ViewRect.X, jj * GraphicsManager.TileSize - ViewRect.Y, GraphicsManager.TileSize, GraphicsManager.TileSize), null, Color.Black); } else { brush.Draw(spriteBatch, new Loc(ii * GraphicsManager.TileSize, jj * GraphicsManager.TileSize) - ViewRect.Start); } } } } } //draw the blocks for (int jj = viewTileRect.Y; jj < viewTileRect.End.Y; jj++) { for (int ii = viewTileRect.X; ii < viewTileRect.End.X; ii++) { Loc testLoc = new Loc(ii, jj); if (Collision.InBounds(ZoneManager.Instance.CurrentMap.Width, ZoneManager.Instance.CurrentMap.Height, testLoc)) { TerrainTile tile = ZoneManager.Instance.CurrentMap.Tiles[ii][jj].Data; if (TerrainInProgress != null && TerrainInProgress.IncludesLoc(testLoc)) { tile = TerrainInProgress.GetBrush(testLoc); if (tile.TileTex.IsEmpty()) { GraphicsManager.Pixel.Draw(spriteBatch, new Rectangle(ii * GraphicsManager.TileSize - ViewRect.X, jj * GraphicsManager.TileSize - ViewRect.Y, GraphicsManager.TileSize, GraphicsManager.TileSize), null, Color.Black); } else { tile.TileTex.Draw(spriteBatch, new Loc(ii * GraphicsManager.TileSize, jj * GraphicsManager.TileSize) - ViewRect.Start); } } if (ShowTerrain) { TerrainData data = tile.GetData(); Color color = Color.Transparent; switch (data.BlockType) { case TerrainData.Mobility.Block: color = Color.Red; break; case TerrainData.Mobility.Water: color = Color.Blue; break; case TerrainData.Mobility.Lava: color = Color.Orange; break; case TerrainData.Mobility.Abyss: color = Color.Black; break; case TerrainData.Mobility.Impassable: color = Color.White; break; } if (color != Color.Transparent) { GraphicsManager.Pixel.Draw(spriteBatch, new Rectangle(ii * GraphicsManager.TileSize - ViewRect.X, jj * GraphicsManager.TileSize - ViewRect.Y, GraphicsManager.TileSize, GraphicsManager.TileSize), null, color * 0.5f); } } } } } if (ShowEntrances) { foreach (LocRay8 entrance in ZoneManager.Instance.CurrentMap.EntryPoints) { Color showColor = Color.OrangeRed; GraphicsManager.Pixel.Draw(spriteBatch, new Rectangle(entrance.Loc.X * GraphicsManager.TileSize - ViewRect.X, entrance.Loc.Y * GraphicsManager.TileSize - ViewRect.Y, GraphicsManager.TileSize, GraphicsManager.TileSize), null, showColor * 0.75f); } } if (TileInProgress != null) { for (int jj = viewTileRect.Y; jj < viewTileRect.End.Y; jj++) { for (int ii = viewTileRect.X; ii < viewTileRect.End.X; ii++) { Loc testLoc = new Loc(ii, jj); if (Collision.InBounds(ZoneManager.Instance.CurrentMap.Width, ZoneManager.Instance.CurrentMap.Height, testLoc) && TileInProgress.IncludesLoc(testLoc)) { EffectTile tile = TileInProgress.GetBrush(testLoc); if (tile.ID < 0) { GraphicsManager.Pixel.Draw(spriteBatch, new Rectangle(ii * GraphicsManager.TileSize - ViewRect.X, jj * GraphicsManager.TileSize - ViewRect.Y, GraphicsManager.TileSize, GraphicsManager.TileSize), null, Color.Black); } else { TileData entry = DataManager.Instance.GetTile(tile.ID); if (entry.Anim.AnimIndex != "") { DirSheet sheet = GraphicsManager.GetObject(entry.Anim.AnimIndex); Loc drawLoc = new Loc(ii * GraphicsManager.TileSize, jj * GraphicsManager.TileSize) - ViewRect.Start + new Loc(GraphicsManager.TileSize / 2) - new Loc(sheet.Width, sheet.Height) / 2; sheet.DrawDir(spriteBatch, drawLoc.ToVector2(), entry.Anim.GetCurrentFrame(GraphicsManager.TotalFrameTick, sheet.TotalFrames), entry.Anim.GetDrawDir(Dir8.None), Color.White); } else { GraphicsManager.Pixel.Draw(spriteBatch, new Rectangle(ii * GraphicsManager.TileSize - ViewRect.X, jj * GraphicsManager.TileSize - ViewRect.Y, GraphicsManager.TileSize, GraphicsManager.TileSize), null, Color.White); } } } } } } spriteBatch.End(); }