diff --git a/OpenRa.Game/Actor.cs b/OpenRa.Game/Actor.cs index f156a60f79..f055c7c3a8 100755 --- a/OpenRa.Game/Actor.cs +++ b/OpenRa.Game/Actor.cs @@ -36,7 +36,7 @@ namespace OpenRa if (name != null) { - Log.Write("Loading {0}",name.ToLowerInvariant()); + //Log.Write("Loading {0}",name.ToLowerInvariant()); Info = Rules.Info[name.ToLowerInvariant()]; Health = this.GetMaxHP(); diff --git a/OpenRa.Game/Graphics/HardwarePalette.cs b/OpenRa.Game/Graphics/HardwarePalette.cs index eca43c4584..1e8c9d57fe 100644 --- a/OpenRa.Game/Graphics/HardwarePalette.cs +++ b/OpenRa.Game/Graphics/HardwarePalette.cs @@ -8,17 +8,18 @@ namespace OpenRa.Graphics { class HardwarePalette : Sheet { - const int maxEntries = 32; + const int maxEntries = 16; int allocated = 0; // We need to store the Palettes themselves for the remap palettes to work // We should probably try to fix this somehow static Dictionary palettes; - + static Dictionary indices; public HardwarePalette(Renderer renderer, Map map) : base(renderer,new Size(256, maxEntries)) { palettes = new Dictionary(); + indices = new Dictionary(); } public Palette GetPalette(string name) @@ -31,9 +32,20 @@ namespace OpenRa.Graphics } } + public int GetPaletteIndex(string name) + { + try { return indices[name]; } + catch (KeyNotFoundException) + { + throw new InvalidOperationException( + "Palette `{0}` does not exist".F(name)); + } + } + public int AddPalette(string name, Palette p) { palettes.Add(name, p); + indices.Add(name, allocated); for (int i = 0; i < 256; i++) { this[new Point(i, allocated)] = p.GetColor(i); diff --git a/OpenRa.Game/Graphics/TerrainRenderer.cs b/OpenRa.Game/Graphics/TerrainRenderer.cs index cc3516f412..5894c26792 100644 --- a/OpenRa.Game/Graphics/TerrainRenderer.cs +++ b/OpenRa.Game/Graphics/TerrainRenderer.cs @@ -34,9 +34,9 @@ namespace OpenRa.Graphics for( int i = map.XOffset ; i < map.XOffset + map.Width; i++ ) { Sprite tile = tileMapping[map.MapTiles[i, j]]; - //var bar = Game.world.WorldRenderer; - var foo = wr.GetPaletteIndex("terrain"); - Util.FastCreateQuad(vertices, indices, Game.CellSize * new float2(i, j), tile, foo, nv, ni, tile.size); + // TODO: The zero below should explicitly refer to the terrain palette, but this code is called + // before the palettes are created + Util.FastCreateQuad(vertices, indices, Game.CellSize * new float2(i, j), tile, 0, nv, ni, tile.size); nv += 4; ni += 6; } diff --git a/OpenRa.Game/Graphics/WorldRenderer.cs b/OpenRa.Game/Graphics/WorldRenderer.cs index ceb2abcb86..df24a1238a 100644 --- a/OpenRa.Game/Graphics/WorldRenderer.cs +++ b/OpenRa.Game/Graphics/WorldRenderer.cs @@ -35,9 +35,9 @@ namespace OpenRa.Graphics // TODO: Implement public int GetPaletteIndex(string name) { - return 0; + return palette.GetPaletteIndex(name); } - + public Palette GetPalette(string name) { return palette.GetPalette(name); diff --git a/OpenRa.Game/Traits/PaletteFromFile.cs b/OpenRa.Game/Traits/PaletteFromFile.cs index 2f903acb2b..0e8b56435a 100644 --- a/OpenRa.Game/Traits/PaletteFromFile.cs +++ b/OpenRa.Game/Traits/PaletteFromFile.cs @@ -20,7 +20,7 @@ namespace OpenRa.Traits if (info.Theatre == null || info.Theatre.ToLowerInvariant() == self.World.Map.Theater.ToLowerInvariant()) { - Log.Write("Loading palette {0} from file {1}", info.Name, info.Filename); + //Log.Write("Loading palette {0} from file {1}", info.Name, info.Filename); self.World.WorldRenderer.AddPalette(info.Name, new Palette(FileSystem.Open(info.Filename))); } } diff --git a/OpenRa.Game/Traits/ShroudPalette.cs b/OpenRa.Game/Traits/ShroudPalette.cs index 5a15f7ce56..1da995778a 100644 --- a/OpenRa.Game/Traits/ShroudPalette.cs +++ b/OpenRa.Game/Traits/ShroudPalette.cs @@ -18,6 +18,7 @@ namespace OpenRa.Traits // TODO: This shouldn't rely on a base palette var wr = self.World.WorldRenderer; var pal = wr.GetPalette("terrain"); + wr.AddPalette("shroud", new Palette(pal, new ShroudPaletteRemap())); } } diff --git a/mods/cnc/system.yaml b/mods/cnc/system.yaml index 612f3509f4..51b4726925 100644 --- a/mods/cnc/system.yaml +++ b/mods/cnc/system.yaml @@ -44,14 +44,14 @@ World: Name: player5 BasePalette: player Remap: salmon.rem - PaletteFromRemap@player6: - Name: player6 - BasePalette: player - Remap: green.rem - PaletteFromRemap@player7: - Name: player7 - BasePalette: player - Remap: gray.rem +# PaletteFromRemap@player6: +# Name: player6 +# BasePalette: player +# Remap: green.rem +# PaletteFromRemap@player7: +# Name: player7 +# BasePalette: player +# Remap: gray.rem PaletteFromFile@chrome: Name: chrome Filename: temperat.pal