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; internal static Renderer renderer;
static int2 clientSize; static int2 clientSize;
static HardwarePalette palette;
static string mapName; static string mapName;
internal static Session LobbyInfo = new Session(); internal static Session LobbyInfo = new Session();
static bool changePending; static bool changePending;
@@ -57,8 +56,6 @@ namespace OpenRa
a.Owner.Shroud.Explore(a); a.Owner.Shroud.Explore(a);
}; };
palette = new HardwarePalette(renderer, world.Map);
SequenceProvider.Initialize(manifest.Sequences); SequenceProvider.Initialize(manifest.Sequences);
viewport = new Viewport(clientSize, Game.world.Map.Offset, Game.world.Map.Offset + Game.world.Map.Size, renderer); 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")) using (new PerfSample("render"))
{ {
UpdatePalette(world.Actors.SelectMany(
a => a.traits.WithInterface<IPaletteModifier>()));
++RenderFrame; ++RenderFrame;
viewport.DrawRegions(); viewport.DrawRegions();
} }
@@ -157,16 +152,6 @@ namespace OpenRa
PerfHistory.items["batches"].Tick(); 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 SharedRandom = new Random(0); /* for things that require sync */
public static Random CosmeticRandom = new Random(); /* for things that are just fluff */ 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 System.Drawing;
using OpenRa.FileFormats; using OpenRa.FileFormats;
using OpenRa.Traits;
namespace OpenRa.Graphics namespace OpenRa.Graphics
{ {
@@ -38,5 +40,15 @@ namespace OpenRa.Graphics
return allocated++; 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() 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 r1 = new float2(2, -2) / screenSize;
float2 r2 = new float2(-1, 1); float2 r2 = new float2(-1, 1);

View File

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