Pass a PaletteReference to RenderPreview.

This commit is contained in:
Paul Chote
2013-02-24 11:42:32 +13:00
parent 885eec7444
commit 48d713aafd
4 changed files with 13 additions and 14 deletions

View File

@@ -23,14 +23,12 @@ namespace OpenRA.Traits
public virtual object Create(ActorInitializer init) { return new RenderSimple(init.self); } public virtual object Create(ActorInitializer init) { return new RenderSimple(init.self); }
public virtual IEnumerable<Renderable> RenderPreview(ActorInfo building, Player owner) public virtual IEnumerable<Renderable> RenderPreview(ActorInfo building, PaletteReference pr)
{ {
var anim = new Animation(RenderSimple.GetImage(building), () => 0); var anim = new Animation(RenderSimple.GetImage(building), () => 0);
anim.PlayRepeating("idle"); 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), pr, 0, Scale);
yield return new Renderable(anim.Image, 0.5f * anim.Image.size * (1 - Scale),
PaletteReference.FromName(pal), 0, Scale);
} }
} }

View File

@@ -30,10 +30,11 @@ namespace OpenRA.Mods.RA.Orders
Producer = producer; Producer = producer;
Building = name; Building = name;
BuildingInfo = Rules.Info[Building].Traits.Get<BuildingInfo>(); BuildingInfo = Rules.Info[Building].Traits.Get<BuildingInfo>();
var rbi = Rules.Info[Building].Traits.Get<RenderBuildingInfo>();
var pr = PaletteReference.FromName(rbi.Palette ?? (producer.Owner != null ?
rbi.PlayerPalette + producer.Owner.InternalName : null));
Preview = Rules.Info[Building].Traits.Get<RenderBuildingInfo>() Preview = rbi.RenderPreview(Rules.Info[Building], pr);
.RenderPreview(Rules.Info[Building], producer.Owner);
buildOk = SequenceProvider.GetSequence("overlay", "build-valid").GetSprite(0); buildOk = SequenceProvider.GetSequence("overlay", "build-valid").GetSprite(0);
buildBlocked = SequenceProvider.GetSequence("overlay", "build-invalid").GetSprite(0); buildBlocked = SequenceProvider.GetSequence("overlay", "build-invalid").GetSprite(0);
} }

View File

@@ -25,9 +25,9 @@ namespace OpenRA.Mods.RA.Render
public readonly float2 Origin = float2.Zero; public readonly float2 Origin = float2.Zero;
public override object Create(ActorInitializer init) { return new RenderBuilding(init, this);} public override object Create(ActorInitializer init) { return new RenderBuilding(init, this);}
public override IEnumerable<Renderable> RenderPreview(ActorInfo building, Player owner) public override IEnumerable<Renderable> RenderPreview(ActorInfo building, PaletteReference pr)
{ {
return base.RenderPreview(building, owner) return base.RenderPreview(building, pr)
.Select(a => a.WithPos(a.Pos + building.Traits.Get<RenderBuildingInfo>().Origin)); .Select(a => a.WithPos(a.Pos + building.Traits.Get<RenderBuildingInfo>().Origin));
} }
} }

View File

@@ -20,14 +20,14 @@ namespace OpenRA.Mods.RA.Render
public override object Create(ActorInitializer init) { return new RenderBuildingWarFactory( init, this ); } public override object Create(ActorInitializer init) { return new RenderBuildingWarFactory( init, this ); }
/* get around unverifiability */ /* get around unverifiability */
IEnumerable<Renderable> BaseBuildingPreview(ActorInfo building, Player owner) IEnumerable<Renderable> BaseBuildingPreview(ActorInfo building, PaletteReference pr)
{ {
return base.RenderPreview(building, owner); return base.RenderPreview(building, pr);
} }
public override IEnumerable<Renderable> RenderPreview(ActorInfo building, Player owner) public override IEnumerable<Renderable> RenderPreview(ActorInfo building, PaletteReference pr)
{ {
var p = BaseBuildingPreview(building, owner); var p = BaseBuildingPreview(building, pr);
foreach (var r in p) foreach (var r in p)
yield return r; yield return r;
@@ -35,7 +35,7 @@ namespace OpenRA.Mods.RA.Render
anim.PlayRepeating("idle-top"); anim.PlayRepeating("idle-top");
var rb = building.Traits.Get<RenderBuildingInfo>(); var rb = building.Traits.Get<RenderBuildingInfo>();
yield return new Renderable(anim.Image, rb.Origin + 0.5f*anim.Image.size*(1 - Scale), yield return new Renderable(anim.Image, rb.Origin + 0.5f*anim.Image.size*(1 - Scale),
p.First().Palette, 0, Scale); pr, 0, Scale);
} }
} }