moved Game.palette into WorldRenderer

This commit is contained in:
Bob
2010-01-21 12:31:44 +13:00
parent d07b782044
commit d7be2b0dd3
4 changed files with 19 additions and 17 deletions

View File

@@ -28,7 +28,6 @@ namespace OpenRa
internal static Renderer renderer;
static int2 clientSize;
static HardwarePalette palette;
static string mapName;
internal static Session LobbyInfo = new Session();
static bool changePending;
@@ -57,8 +56,6 @@ namespace OpenRa
a.Owner.Shroud.Explore(a);
};
palette = new HardwarePalette(renderer, world.Map);
SequenceProvider.Initialize(manifest.Sequences);
viewport = new Viewport(clientSize, Game.world.Map.Offset, Game.world.Map.Offset + Game.world.Map.Size, renderer);
@@ -147,8 +144,6 @@ namespace OpenRa
using (new PerfSample("render"))
{
UpdatePalette(world.Actors.SelectMany(
a => a.traits.WithInterface<IPaletteModifier>()));
++RenderFrame;
viewport.DrawRegions();
}
@@ -157,16 +152,6 @@ namespace OpenRa
PerfHistory.items["batches"].Tick();
}
static void UpdatePalette(IEnumerable<IPaletteModifier> paletteMods)
{
var b = new Bitmap(palette.Bitmap);
foreach (var mod in paletteMods)
mod.AdjustPalette(b);
palette.Texture.SetData(b);
renderer.PaletteTexture = palette.Texture;
}
public static Random SharedRandom = new Random(0); /* for things that require sync */
public static Random CosmeticRandom = new Random(); /* for things that are just fluff */

View File

@@ -1,5 +1,7 @@
using System.Collections.Generic;
using System.Drawing;
using OpenRa.FileFormats;
using OpenRa.Traits;
namespace OpenRa.Graphics
{
@@ -38,5 +40,15 @@ namespace OpenRa.Graphics
return allocated++;
}
public void Update(IEnumerable<IPaletteModifier> paletteMods)
{
var b = new Bitmap(Bitmap);
foreach (var mod in paletteMods)
mod.AdjustPalette(b);
Texture.SetData(b);
Game.renderer.PaletteTexture = Texture;
}
}
}

View File

@@ -44,6 +44,9 @@ namespace OpenRa.Graphics
public void DrawRegions()
{
Game.world.WorldRenderer.palette.Update(Game.world.Actors.SelectMany(
a => a.traits.WithInterface<IPaletteModifier>()));
float2 r1 = new float2(2, -2) / screenSize;
float2 r2 = new float2(-1, 1);

View File

@@ -12,17 +12,19 @@ namespace OpenRa.Graphics
internal readonly LineRenderer lineRenderer;
internal readonly UiOverlay uiOverlay;
internal readonly Renderer renderer;
internal readonly HardwarePalette palette;
public static bool ShowUnitPaths = false;
internal WorldRenderer(World world, Renderer renderer)
{
terrainRenderer = new TerrainRenderer(world, renderer);
this.renderer = renderer;
terrainRenderer = new TerrainRenderer(world, renderer);
spriteRenderer = new SpriteRenderer(renderer, true);
lineRenderer = new LineRenderer(renderer);
uiOverlay = new UiOverlay(spriteRenderer);
palette = new HardwarePalette(renderer, world.Map);
}
void DrawSpriteList(RectangleF rect,