diff --git a/OpenRA.Game/Traits/Render/RenderSimple.cs b/OpenRA.Game/Traits/Render/RenderSimple.cs index 3e8096e3c0..3ada42970c 100755 --- a/OpenRA.Game/Traits/Render/RenderSimple.cs +++ b/OpenRA.Game/Traits/Render/RenderSimple.cs @@ -23,14 +23,12 @@ namespace OpenRA.Traits public virtual object Create(ActorInitializer init) { return new RenderSimple(init.self); } - public virtual IEnumerable RenderPreview(ActorInfo building, Player owner) + public virtual IEnumerable RenderPreview(ActorInfo building, PaletteReference pr) { var anim = new Animation(RenderSimple.GetImage(building), () => 0); anim.PlayRepeating("idle"); - var pal = Palette ?? (owner != null ? PlayerPalette + owner.InternalName : null); - yield return new Renderable(anim.Image, 0.5f * anim.Image.size * (1 - Scale), - PaletteReference.FromName(pal), 0, Scale); + yield return new Renderable(anim.Image, 0.5f * anim.Image.size * (1 - Scale), pr, 0, Scale); } } diff --git a/OpenRA.Mods.RA/Orders/PlaceBuildingOrderGenerator.cs b/OpenRA.Mods.RA/Orders/PlaceBuildingOrderGenerator.cs index f03fc5eb1b..031e0d8c57 100755 --- a/OpenRA.Mods.RA/Orders/PlaceBuildingOrderGenerator.cs +++ b/OpenRA.Mods.RA/Orders/PlaceBuildingOrderGenerator.cs @@ -30,10 +30,11 @@ namespace OpenRA.Mods.RA.Orders Producer = producer; Building = name; BuildingInfo = Rules.Info[Building].Traits.Get(); + var rbi = Rules.Info[Building].Traits.Get(); + var pr = PaletteReference.FromName(rbi.Palette ?? (producer.Owner != null ? + rbi.PlayerPalette + producer.Owner.InternalName : null)); - Preview = Rules.Info[Building].Traits.Get() - .RenderPreview(Rules.Info[Building], producer.Owner); - + Preview = rbi.RenderPreview(Rules.Info[Building], pr); buildOk = SequenceProvider.GetSequence("overlay", "build-valid").GetSprite(0); buildBlocked = SequenceProvider.GetSequence("overlay", "build-invalid").GetSprite(0); } diff --git a/OpenRA.Mods.RA/Render/RenderBuilding.cs b/OpenRA.Mods.RA/Render/RenderBuilding.cs index cb0caed50c..9b7d5c8e41 100755 --- a/OpenRA.Mods.RA/Render/RenderBuilding.cs +++ b/OpenRA.Mods.RA/Render/RenderBuilding.cs @@ -25,9 +25,9 @@ namespace OpenRA.Mods.RA.Render public readonly float2 Origin = float2.Zero; public override object Create(ActorInitializer init) { return new RenderBuilding(init, this);} - public override IEnumerable RenderPreview(ActorInfo building, Player owner) + public override IEnumerable RenderPreview(ActorInfo building, PaletteReference pr) { - return base.RenderPreview(building, owner) + return base.RenderPreview(building, pr) .Select(a => a.WithPos(a.Pos + building.Traits.Get().Origin)); } } diff --git a/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs b/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs index d1f730dc51..aba2eb45cb 100755 --- a/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs @@ -20,14 +20,14 @@ namespace OpenRA.Mods.RA.Render public override object Create(ActorInitializer init) { return new RenderBuildingWarFactory( init, this ); } /* get around unverifiability */ - IEnumerable BaseBuildingPreview(ActorInfo building, Player owner) + IEnumerable BaseBuildingPreview(ActorInfo building, PaletteReference pr) { - return base.RenderPreview(building, owner); + return base.RenderPreview(building, pr); } - public override IEnumerable RenderPreview(ActorInfo building, Player owner) + public override IEnumerable RenderPreview(ActorInfo building, PaletteReference pr) { - var p = BaseBuildingPreview(building, owner); + var p = BaseBuildingPreview(building, pr); foreach (var r in p) yield return r; @@ -35,7 +35,7 @@ namespace OpenRA.Mods.RA.Render anim.PlayRepeating("idle-top"); var rb = building.Traits.Get(); yield return new Renderable(anim.Image, rb.Origin + 0.5f*anim.Image.size*(1 - Scale), - p.First().Palette, 0, Scale); + pr, 0, Scale); } }