Make the guts of Renderable private.

This commit is contained in:
Paul Chote
2013-05-12 03:01:11 +12:00
parent 7719ad1f2d
commit d103a187f6
11 changed files with 59 additions and 46 deletions

View File

@@ -65,22 +65,23 @@ namespace OpenRA.Graphics
public PaletteReference Palette(string name) { return palettes[name]; }
public void AddPalette(string name, Palette pal, bool allowModifiers) { palette.AddPalette(name, pal, allowModifiers); }
IEnumerable<Renderable> SpritesToRender()
void DrawRenderables()
{
var bounds = Game.viewport.WorldBounds(world);
var comparer = new RenderableComparer();
var actors = world.FindUnits(
bounds.TopLeftAsCPos().ToPPos(),
bounds.BottomRightAsCPos().ToPPos()
);
bounds.BottomRightAsCPos().ToPPos());
var renderables = actors.SelectMany(a => a.Render(this))
.OrderBy(r => r, comparer);
actors.SelectMany(a => a.Render(this))
.OrderBy(r => r, comparer)
.Do(rr => rr.Render(this));
var effects = world.Effects.SelectMany(e => e.Render(this));
return renderables.Concat(effects);
// Effects are drawn on top of all actors
// TODO: Allow effects to be interleaved with actors
world.Effects.SelectMany(e => e.Render(this))
.Do(rr => rr.Render(this));
}
public void Draw()
@@ -96,7 +97,7 @@ namespace OpenRA.Graphics
terrainRenderer.Draw(this, Game.viewport);
foreach (var a in world.traitDict.ActorsWithTraitMultiple<IRenderAsTerrain>(world))
foreach (var r in a.Trait.RenderAsTerrain(this, a.Actor))
r.Sprite.DrawAt(r.Pos, r.Palette.Index, r.Scale);
r.Render(this);
foreach (var a in world.Selection.Actors)
if (!a.Destroyed)
@@ -108,8 +109,7 @@ namespace OpenRA.Graphics
if (world.OrderGenerator != null)
world.OrderGenerator.RenderBeforeWorld(this, world);
foreach (var image in SpritesToRender())
image.Sprite.DrawAt(image.Pos, image.Palette.Index, image.Scale);
DrawRenderables();
// added for contrails
foreach (var a in world.ActorsWithTrait<IPostRender>())