From d7be2b0dd34bf5b917da228cd69b836461701987 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 21 Jan 2010 12:31:44 +1300 Subject: [PATCH] moved Game.palette into WorldRenderer --- OpenRa.Game/Game.cs | 15 --------------- OpenRa.Game/Graphics/HardwarePalette.cs | 12 ++++++++++++ OpenRa.Game/Graphics/Viewport.cs | 3 +++ OpenRa.Game/Graphics/WorldRenderer.cs | 6 ++++-- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index 14a1e96041..43820d20d3 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -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())); ++RenderFrame; viewport.DrawRegions(); } @@ -157,16 +152,6 @@ namespace OpenRa PerfHistory.items["batches"].Tick(); } - static void UpdatePalette(IEnumerable 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 */ diff --git a/OpenRa.Game/Graphics/HardwarePalette.cs b/OpenRa.Game/Graphics/HardwarePalette.cs index c5e784e4a2..51a95e7bf2 100644 --- a/OpenRa.Game/Graphics/HardwarePalette.cs +++ b/OpenRa.Game/Graphics/HardwarePalette.cs @@ -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 paletteMods) + { + var b = new Bitmap(Bitmap); + foreach (var mod in paletteMods) + mod.AdjustPalette(b); + + Texture.SetData(b); + Game.renderer.PaletteTexture = Texture; + } } } diff --git a/OpenRa.Game/Graphics/Viewport.cs b/OpenRa.Game/Graphics/Viewport.cs index 9d923cddaf..b412177374 100644 --- a/OpenRa.Game/Graphics/Viewport.cs +++ b/OpenRa.Game/Graphics/Viewport.cs @@ -44,6 +44,9 @@ namespace OpenRa.Graphics public void DrawRegions() { + Game.world.WorldRenderer.palette.Update(Game.world.Actors.SelectMany( + a => a.traits.WithInterface())); + float2 r1 = new float2(2, -2) / screenSize; float2 r2 = new float2(-1, 1); diff --git a/OpenRa.Game/Graphics/WorldRenderer.cs b/OpenRa.Game/Graphics/WorldRenderer.cs index 5683a72832..0f20b3f601 100644 --- a/OpenRa.Game/Graphics/WorldRenderer.cs +++ b/OpenRa.Game/Graphics/WorldRenderer.cs @@ -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,