Remove Owner from ActorPreviews.

This commit is contained in:
Paul Chote
2015-05-07 20:08:14 +01:00
parent d3f76f13a1
commit c0282bdff9
6 changed files with 16 additions and 13 deletions

View File

@@ -25,16 +25,14 @@ namespace OpenRA.Mods.Common.Graphics
public class ActorPreviewInitializer public class ActorPreviewInitializer
{ {
public readonly ActorInfo Actor; public readonly ActorInfo Actor;
public readonly Player Owner;
public readonly WorldRenderer WorldRenderer; public readonly WorldRenderer WorldRenderer;
public World World { get { return WorldRenderer.World; } } public World World { get { return WorldRenderer.World; } }
readonly TypeDictionary dict; readonly TypeDictionary dict;
public ActorPreviewInitializer(ActorInfo actor, Player owner, WorldRenderer worldRenderer, TypeDictionary dict) public ActorPreviewInitializer(ActorInfo actor, WorldRenderer worldRenderer, TypeDictionary dict)
{ {
Actor = actor; Actor = actor;
Owner = owner;
WorldRenderer = worldRenderer; WorldRenderer = worldRenderer;
this.dict = dict; this.dict = dict;
} }

View File

@@ -170,10 +170,11 @@ namespace OpenRA.Mods.Common.Orders
var td = new TypeDictionary() var td = new TypeDictionary()
{ {
new RaceInit(race), new RaceInit(race),
new OwnerInit(producer.Owner),
new HideBibPreviewInit() new HideBibPreviewInit()
}; };
var init = new ActorPreviewInitializer(rules.Actors[building], producer.Owner, wr, td); var init = new ActorPreviewInitializer(rules.Actors[building], wr, td);
preview = rules.Actors[building].Traits.WithInterface<IRenderActorPreviewInfo>() preview = rules.Actors[building].Traits.WithInterface<IRenderActorPreviewInfo>()
.SelectMany(rpi => rpi.RenderPreview(init)) .SelectMany(rpi => rpi.RenderPreview(init))
.ToArray(); .ToArray();

View File

@@ -56,15 +56,16 @@ namespace OpenRA.Mods.Common.Traits
public IEnumerable<IActorPreview> RenderPreview(ActorPreviewInitializer init) public IEnumerable<IActorPreview> RenderPreview(ActorPreviewInitializer init)
{ {
var sequenceProvider = init.World.Map.SequenceProvider; var sequenceProvider = init.World.Map.SequenceProvider;
var race = init.Contains<RaceInit>() ? init.Get<RaceInit, string>() : init.Owner.Country.Race; var race = init.Get<RaceInit, string>();
var ownerName = init.Get<OwnerInit>().PlayerName;
var image = GetImage(init.Actor, sequenceProvider, race); var image = GetImage(init.Actor, sequenceProvider, race);
var palette = init.WorldRenderer.Palette(Palette ?? PlayerPalette + init.Owner.InternalName); var palette = init.WorldRenderer.Palette(Palette ?? PlayerPalette + ownerName);
var facings = 0; var facings = 0;
var body = init.Actor.Traits.GetOrDefault<BodyOrientationInfo>(); var body = init.Actor.Traits.GetOrDefault<BodyOrientationInfo>();
if (body != null) if (body != null)
facings = body.QuantizedFacings == -1 ? facings = body.QuantizedFacings == -1 ?
init.Actor.Traits.Get<IQuantizeBodyOrientationInfo>().QuantizedBodyFacings(init.Actor, sequenceProvider, init.Owner.Country.Race) : init.Actor.Traits.Get<IQuantizeBodyOrientationInfo>().QuantizedBodyFacings(init.Actor, sequenceProvider, race) :
body.QuantizedFacings; body.QuantizedFacings;
foreach (var spi in init.Actor.Traits.WithInterface<IRenderActorPreviewSpritesInfo>()) foreach (var spi in init.Actor.Traits.WithInterface<IRenderActorPreviewSpritesInfo>())

View File

@@ -46,9 +46,9 @@ namespace OpenRA.Mods.Common.Widgets
public override Widget Clone() { return new ActorPreviewWidget(this); } public override Widget Clone() { return new ActorPreviewWidget(this); }
public void SetPreview(ActorInfo actor, Player owner, TypeDictionary td) public void SetPreview(ActorInfo actor, TypeDictionary td)
{ {
var init = new ActorPreviewInitializer(actor, owner, worldRenderer, td); var init = new ActorPreviewInitializer(actor, worldRenderer, td);
preview = actor.Traits.WithInterface<IRenderActorPreviewInfo>() preview = actor.Traits.WithInterface<IRenderActorPreviewInfo>()
.SelectMany(rpi => rpi.RenderPreview(init)) .SelectMany(rpi => rpi.RenderPreview(init))
.ToArray(); .ToArray();

View File

@@ -30,8 +30,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var td = new TypeDictionary(); var td = new TypeDictionary();
td.Add(new HideBibPreviewInit()); td.Add(new HideBibPreviewInit());
td.Add(new OwnerInit(world.WorldActor.Owner));
preview.SetPreview(actor, world.WorldActor.Owner, td); td.Add(new RaceInit(world.WorldActor.Owner.PlayerReference.Race));
preview.SetPreview(actor, td);
var hueSlider = widget.Get<SliderWidget>("HUE"); var hueSlider = widget.Get<SliderWidget>("HUE");
var mixer = widget.Get<ColorMixerWidget>("MIXER"); var mixer = widget.Get<ColorMixerWidget>("MIXER");

View File

@@ -49,12 +49,14 @@ namespace OpenRA.Mods.TS.Traits
public virtual IEnumerable<IActorPreview> RenderPreview(ActorPreviewInitializer init) public virtual IEnumerable<IActorPreview> RenderPreview(ActorPreviewInitializer init)
{ {
var body = init.Actor.Traits.Get<BodyOrientationInfo>(); var body = init.Actor.Traits.Get<BodyOrientationInfo>();
var race = init.Get<RaceInit, string>();
var ownerName = init.Get<OwnerInit>().PlayerName;
var sequenceProvider = init.World.Map.SequenceProvider; var sequenceProvider = init.World.Map.SequenceProvider;
var image = Image ?? init.Actor.Name; var image = Image ?? init.Actor.Name;
var facings = body.QuantizedFacings == -1 ? var facings = body.QuantizedFacings == -1 ?
init.Actor.Traits.Get<IQuantizeBodyOrientationInfo>().QuantizedBodyFacings(init.Actor, sequenceProvider, init.Owner.Country.Race) : init.Actor.Traits.Get<IQuantizeBodyOrientationInfo>().QuantizedBodyFacings(init.Actor, sequenceProvider, race) :
body.QuantizedFacings; body.QuantizedFacings;
var palette = init.WorldRenderer.Palette(Palette ?? PlayerPalette + init.Owner.InternalName); var palette = init.WorldRenderer.Palette(Palette ?? PlayerPalette + ownerName);
var ifacing = init.Actor.Traits.GetOrDefault<IFacingInfo>(); var ifacing = init.Actor.Traits.GetOrDefault<IFacingInfo>();
var facing = ifacing != null ? init.Contains<FacingInit>() ? init.Get<FacingInit, int>() : ifacing.GetInitialFacing() : 0; var facing = ifacing != null ? init.Contains<FacingInit>() ? init.Get<FacingInit, int>() : ifacing.GetInitialFacing() : 0;