diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs index ff2e750a0b..5ad228d7ed 100644 --- a/OpenRA.Game/Graphics/WorldRenderer.cs +++ b/OpenRA.Game/Graphics/WorldRenderer.cs @@ -21,10 +21,12 @@ namespace OpenRA.Graphics { public readonly string Name; public readonly int Index; - public PaletteReference(string name, int index) + public readonly Palette Palette; + public PaletteReference(string name, int index, Palette palette) { Name = name; Index = index; + Palette = palette; } } @@ -40,22 +42,21 @@ namespace OpenRA.Graphics { this.world = world; this.palette = Game.modData.Palette; - foreach( var pal in world.traitDict.ActorsWithTraitMultiple( world ) ) + palettes = new Cache(CreatePaletteReference); + foreach (var pal in world.traitDict.ActorsWithTraitMultiple(world)) pal.Trait.InitPalette( this ); terrainRenderer = new TerrainRenderer(world, this); shroudRenderer = new ShroudRenderer(world); - palettes = new Cache(CreatePaletteReference); } PaletteReference CreatePaletteReference(string name) { - return new PaletteReference(name, palette.GetPaletteIndex(name)); + return new PaletteReference(name, palette.GetPaletteIndex(name), palette.GetPalette(name)); } public PaletteReference Palette(string name) { return palettes[name]; } public int GetPaletteIndex(string name) { return palette.GetPaletteIndex(name); } - public Palette GetPalette(string name) { return palette.GetPalette(name); } public void AddPalette(string name, Palette pal, bool allowModifiers) { palette.AddPalette(name, pal, allowModifiers); } class SpriteComparer : IComparer diff --git a/OpenRA.Game/Traits/World/PlayerColorPalette.cs b/OpenRA.Game/Traits/World/PlayerColorPalette.cs index 1e50140945..0b35c05ddc 100644 --- a/OpenRA.Game/Traits/World/PlayerColorPalette.cs +++ b/OpenRA.Game/Traits/World/PlayerColorPalette.cs @@ -37,7 +37,7 @@ namespace OpenRA.Traits public void InitPalette( WorldRenderer wr ) { var paletteName = "{0}{1}".F( info.BaseName, owner.InternalName ); - var newpal = new Palette(wr.GetPalette(info.BasePalette), + var newpal = new Palette(wr.Palette(info.BasePalette).Palette, new PlayerColorRemap(info.RemapIndex, owner.ColorRamp)); wr.AddPalette(paletteName, newpal, info.AllowModifiers); } diff --git a/OpenRA.Mods.RA/Widgets/ColorPreviewManagerWidget.cs b/OpenRA.Mods.RA/Widgets/ColorPreviewManagerWidget.cs index 9b2a144b6d..78562d1236 100755 --- a/OpenRA.Mods.RA/Widgets/ColorPreviewManagerWidget.cs +++ b/OpenRA.Mods.RA/Widgets/ColorPreviewManagerWidget.cs @@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA.Widgets public override void Initialize(WidgetArgs args) { base.Initialize(args); - preview = worldRenderer.GetPalette(Palette); + preview = worldRenderer.Palette(Palette).Palette; } public override void Tick()