Begin refactoring Shroud. ShroudRenderer is now internal to WorldRenderer; all traits interact with Shroud directly. Gives soft-edges at the map border for free, but breaks shellmap and observers.

This commit is contained in:
Paul Chote
2010-11-26 15:11:25 +13:00
parent b423889c06
commit 41fd19c766
7 changed files with 73 additions and 59 deletions

View File

@@ -159,6 +159,9 @@ namespace OpenRA.Graphics
var map = world.Map;
var size = Util.NextPowerOf2(Math.Max(map.Bounds.Width, map.Bounds.Height));
Bitmap bitmap = new Bitmap(size, size);
if (world.LocalPlayer == null || world.LocalPlayer.Shroud == null)
return bitmap;
var bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);

View File

@@ -21,6 +21,8 @@ namespace OpenRA.Graphics
{
public readonly World world;
internal readonly TerrainRenderer terrainRenderer;
internal readonly ShroudRenderer shroudRenderer;
public readonly UiOverlay uiOverlay;
internal readonly HardwarePalette palette;
@@ -29,6 +31,7 @@ namespace OpenRA.Graphics
this.world = world;
terrainRenderer = new TerrainRenderer(world, this);
shroudRenderer = new ShroudRenderer(world.WorldActor.Trait<Shroud>(), world.Map);
uiOverlay = new UiOverlay();
palette = new HardwarePalette(world.Map);
@@ -110,9 +113,7 @@ namespace OpenRA.Graphics
if (world.OrderGenerator != null)
world.OrderGenerator.RenderAfterWorld(this, world);
if (world.LocalPlayer != null)
world.LocalPlayer.Shroud.Draw( this );
shroudRenderer.Draw( this );
Game.Renderer.DisableScissor();
foreach (var a in world.Selection.Actors)