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 IEnumerable<Renderable> RenderPreview(ActorInfo building, Player owner)
public virtual IEnumerable<Renderable> 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);
}
}

View File

@@ -30,10 +30,11 @@ namespace OpenRA.Mods.RA.Orders
Producer = producer;
Building = name;
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>()
.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);
}

View File

@@ -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<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));
}
}

View File

@@ -20,14 +20,14 @@ namespace OpenRA.Mods.RA.Render
public override object Create(ActorInitializer init) { return new RenderBuildingWarFactory( init, this ); }
/* 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)
yield return r;
@@ -35,7 +35,7 @@ namespace OpenRA.Mods.RA.Render
anim.PlayRepeating("idle-top");
var rb = building.Traits.Get<RenderBuildingInfo>();
yield return new Renderable(anim.Image, rb.Origin + 0.5f*anim.Image.size*(1 - Scale),
p.First().Palette, 0, Scale);
pr, 0, Scale);
}
}