Use a consistent set of arguments for Render* ctors.

This commit is contained in:
Paul Chote
2014-07-09 19:00:35 +12:00
committed by Paul Chote
parent d135e58ad9
commit f606a1bfd7
12 changed files with 54 additions and 53 deletions

View File

@@ -26,7 +26,7 @@ namespace OpenRA.Mods.Cnc.Traits
public readonly string WakeLeftSequence = "wake-left"; public readonly string WakeLeftSequence = "wake-left";
public readonly string WakeRightSequence = "wake-right"; public readonly string WakeRightSequence = "wake-right";
public override object Create(ActorInitializer init) { return new RenderGunboat(init.Self, this); } public override object Create(ActorInitializer init) { return new RenderGunboat(init, this); }
public int QuantizedBodyFacings(SequenceProvider sequenceProvider, ActorInfo ai) public int QuantizedBodyFacings(SequenceProvider sequenceProvider, ActorInfo ai)
{ {
@@ -38,27 +38,27 @@ namespace OpenRA.Mods.Cnc.Traits
{ {
Animation left, right; Animation left, right;
public RenderGunboat(Actor self, RenderGunboatInfo info) public RenderGunboat(ActorInitializer init, RenderGunboatInfo info)
: base(self) : base(init, info)
{ {
var name = GetImage(self); var name = GetImage(init.Self);
var facing = self.Trait<IFacing>(); var facing = init.Self.Trait<IFacing>();
var turret = self.TraitsImplementing<Turreted>() var turret = init.Self.TraitsImplementing<Turreted>()
.First(t => t.Name == info.Turret); .First(t => t.Name == info.Turret);
left = new Animation(self.World, name, () => turret.TurretFacing); left = new Animation(init.World, name, () => turret.TurretFacing);
left.Play(info.LeftSequence); left.Play(info.LeftSequence);
Add(info.LeftSequence, new AnimationWithOffset(left, null, () => facing.Facing > 128, 0)); Add(info.LeftSequence, new AnimationWithOffset(left, null, () => facing.Facing > 128, 0));
right = new Animation(self.World, name, () => turret.TurretFacing); right = new Animation(init.World, name, () => turret.TurretFacing);
right.Play(info.RightSequence); right.Play(info.RightSequence);
Add(info.RightSequence, new AnimationWithOffset(right, null, () => facing.Facing <= 128, 0)); Add(info.RightSequence, new AnimationWithOffset(right, null, () => facing.Facing <= 128, 0));
var leftWake = new Animation(self.World, name); var leftWake = new Animation(init.World, name);
leftWake.PlayRepeating(info.WakeLeftSequence); leftWake.PlayRepeating(info.WakeLeftSequence);
Add(info.WakeLeftSequence, new AnimationWithOffset(leftWake, null, () => facing.Facing > 128, -87)); Add(info.WakeLeftSequence, new AnimationWithOffset(leftWake, null, () => facing.Facing > 128, -87));
var rightWake = new Animation(self.World, name); var rightWake = new Animation(init.World, name);
rightWake.PlayRepeating(info.WakeRightSequence); rightWake.PlayRepeating(info.WakeRightSequence);
Add(info.WakeRightSequence, new AnimationWithOffset(rightWake, null, () => facing.Facing <= 128, -87)); Add(info.WakeRightSequence, new AnimationWithOffset(rightWake, null, () => facing.Facing <= 128, -87));
} }

View File

@@ -41,7 +41,7 @@ namespace OpenRA.Mods.Common.Traits
: this(init, info, () => 0) { } : this(init, info, () => 0) { }
public RenderBuilding(ActorInitializer init, RenderBuildingInfo info, Func<int> baseFacing) public RenderBuilding(ActorInitializer init, RenderBuildingInfo info, Func<int> baseFacing)
: base(init.Self, baseFacing) : base(init, info, baseFacing)
{ {
var self = init.Self; var self = init.Self;
this.info = info; this.info = info;

View File

@@ -16,12 +16,13 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Invisible during games.")] [Desc("Invisible during games.")]
class RenderEditorOnlyInfo : RenderSimpleInfo class RenderEditorOnlyInfo : RenderSimpleInfo
{ {
public override object Create(ActorInitializer init) { return new RenderEditorOnly(init.Self); } public override object Create(ActorInitializer init) { return new RenderEditorOnly(init, this); }
} }
class RenderEditorOnly : RenderSimple class RenderEditorOnly : RenderSimple
{ {
public RenderEditorOnly(Actor self) : base(self, () => 0) { } public RenderEditorOnly(ActorInitializer init, RenderEditorOnlyInfo info)
: base(init, info, () => 0) { }
public override IEnumerable<IRenderable> Render(Actor self, WorldRenderer wr) { return SpriteRenderable.None; } public override IEnumerable<IRenderable> Render(Actor self, WorldRenderer wr) { return SpriteRenderable.None; }
} }

View File

@@ -12,13 +12,13 @@ namespace OpenRA.Mods.Common.Traits
{ {
class RenderFlareInfo : RenderSimpleInfo class RenderFlareInfo : RenderSimpleInfo
{ {
public override object Create(ActorInitializer init) { return new RenderFlare(init.Self); } public override object Create(ActorInitializer init) { return new RenderFlare(init, this); }
} }
class RenderFlare : RenderSimple class RenderFlare : RenderSimple
{ {
public RenderFlare(Actor self) public RenderFlare(ActorInitializer init, RenderFlareInfo info)
: base(self, () => 0) : base(init, info, () => 0)
{ {
DefaultAnimation.PlayThen("open", () => DefaultAnimation.PlayRepeating("idle")); DefaultAnimation.PlayThen("open", () => DefaultAnimation.PlayRepeating("idle"));
} }

View File

@@ -17,7 +17,7 @@ namespace OpenRA.Mods.Common.Traits
class RenderHarvesterInfo : RenderUnitInfo, Requires<HarvesterInfo> class RenderHarvesterInfo : RenderUnitInfo, Requires<HarvesterInfo>
{ {
public readonly string[] ImagesByFullness = { "harv" }; public readonly string[] ImagesByFullness = { "harv" };
public override object Create(ActorInitializer init) { return new RenderHarvester(init.Self, this); } public override object Create(ActorInitializer init) { return new RenderHarvester(init, this); }
} }
class RenderHarvester : RenderUnit, INotifyHarvesterAction class RenderHarvester : RenderUnit, INotifyHarvesterAction
@@ -25,15 +25,15 @@ namespace OpenRA.Mods.Common.Traits
Harvester harv; Harvester harv;
RenderHarvesterInfo info; RenderHarvesterInfo info;
public RenderHarvester(Actor self, RenderHarvesterInfo info) public RenderHarvester(ActorInitializer init, RenderHarvesterInfo info)
: base(self) : base(init, info)
{ {
this.info = info; this.info = info;
harv = self.Trait<Harvester>(); harv = init.Self.Trait<Harvester>();
// HACK: Force images to be loaded up-front // HACK: Force images to be loaded up-front
foreach (var image in info.ImagesByFullness) foreach (var image in info.ImagesByFullness)
new Animation(self.World, image); new Animation(init.World, image);
} }
public override void Tick(Actor self) public override void Tick(Actor self)

View File

@@ -25,7 +25,7 @@ namespace OpenRA.Mods.Common.Traits
public readonly string[] IdleAnimations = { }; public readonly string[] IdleAnimations = { };
public readonly string[] StandAnimations = { "stand" }; public readonly string[] StandAnimations = { "stand" };
public override object Create(ActorInitializer init) { return new RenderInfantry(init.Self, this); } public override object Create(ActorInitializer init) { return new RenderInfantry(init, this); }
public override IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p) public override IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
{ {
@@ -58,14 +58,14 @@ namespace OpenRA.Mods.Common.Traits
bool IsModifyingSequence { get { return rsm != null && rsm.IsModifyingSequence; } } bool IsModifyingSequence { get { return rsm != null && rsm.IsModifyingSequence; } }
bool wasModifying; bool wasModifying;
public RenderInfantry(Actor self, RenderInfantryInfo info) public RenderInfantry(ActorInitializer init, RenderInfantryInfo info)
: base(self, MakeFacingFunc(self)) : base(init, info, MakeFacingFunc(init.Self))
{ {
this.info = info; this.info = info;
DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(self, info.StandAnimations.Random(Game.CosmeticRandom)), () => 0); DefaultAnimation.PlayFetchIndex(NormalizeInfantrySequence(init.Self, info.StandAnimations.Random(Game.CosmeticRandom)), () => 0);
state = AnimationState.Waiting; state = AnimationState.Waiting;
move = self.Trait<IMove>(); move = init.Self.Trait<IMove>();
rsm = self.TraitOrDefault<IRenderInfantrySequenceModifier>(); rsm = init.Self.TraitOrDefault<IRenderInfantrySequenceModifier>();
} }
protected virtual string NormalizeInfantrySequence(Actor self, string baseSequence) protected virtual string NormalizeInfantrySequence(Actor self, string baseSequence)

View File

@@ -18,7 +18,7 @@ namespace OpenRA.Mods.Common.Traits
{ {
public class RenderSimpleInfo : RenderSpritesInfo, IRenderActorPreviewSpritesInfo, IQuantizeBodyOrientationInfo, ILegacyEditorRenderInfo, Requires<IBodyOrientationInfo> public class RenderSimpleInfo : RenderSpritesInfo, IRenderActorPreviewSpritesInfo, IQuantizeBodyOrientationInfo, ILegacyEditorRenderInfo, Requires<IBodyOrientationInfo>
{ {
public override object Create(ActorInitializer init) { return new RenderSimple(init.Self); } public override object Create(ActorInitializer init) { return new RenderSimple(init, this); }
public virtual IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p) public virtual IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
{ {
@@ -43,17 +43,17 @@ namespace OpenRA.Mods.Common.Traits
{ {
public readonly Animation DefaultAnimation; public readonly Animation DefaultAnimation;
public RenderSimple(Actor self, Func<int> baseFacing) public RenderSimple(ActorInitializer init, RenderSimpleInfo info, Func<int> baseFacing)
: base(self) : base(init, info)
{ {
DefaultAnimation = new Animation(self.World, GetImage(self), baseFacing); DefaultAnimation = new Animation(init.World, GetImage(init.Self), baseFacing);
Add("", DefaultAnimation); Add("", DefaultAnimation);
} }
public RenderSimple(Actor self) public RenderSimple(ActorInitializer init, RenderSimpleInfo info)
: this(self, MakeFacingFunc(self)) : this(init, info, MakeFacingFunc(init.Self))
{ {
DefaultAnimation.PlayRepeating(NormalizeSequence(self, "idle")); DefaultAnimation.PlayRepeating(NormalizeSequence(init.Self, "idle"));
} }
public int2 SelectionSize(Actor self) { return AutoSelectionSize(self); } public int2 SelectionSize(Actor self) { return AutoSelectionSize(self); }

View File

@@ -32,7 +32,7 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Change the sprite image size.")] [Desc("Change the sprite image size.")]
public readonly float Scale = 1f; public readonly float Scale = 1f;
public virtual object Create(ActorInitializer init) { return new RenderSprites(init.Self); } public virtual object Create(ActorInitializer init) { return new RenderSprites(init, this); }
public IEnumerable<IActorPreview> RenderPreview(ActorPreviewInitializer init) public IEnumerable<IActorPreview> RenderPreview(ActorPreviewInitializer init)
{ {
@@ -99,9 +99,9 @@ namespace OpenRA.Mods.Common.Traits
return () => facing.Facing; return () => facing.Facing;
} }
public RenderSprites(Actor self) public RenderSprites(ActorInitializer init, RenderSpritesInfo info)
{ {
info = self.Info.Traits.Get<RenderSpritesInfo>(); this.info = info;
} }
public static string GetImage(ActorInfo actor) public static string GetImage(ActorInfo actor)

View File

@@ -15,13 +15,13 @@ namespace OpenRA.Mods.Common.Traits
{ {
public class RenderUnitInfo : RenderSimpleInfo, Requires<IFacingInfo> public class RenderUnitInfo : RenderSimpleInfo, Requires<IFacingInfo>
{ {
public override object Create(ActorInitializer init) { return new RenderUnit(init.Self); } public override object Create(ActorInitializer init) { return new RenderUnit(init, this); }
} }
public class RenderUnit : RenderSimple public class RenderUnit : RenderSimple
{ {
public RenderUnit(Actor self) public RenderUnit(ActorInitializer init, RenderUnitInfo info)
: base(self) { } : base(init, info) { }
public void PlayCustomAnimation(Actor self, string newAnim, Action after) public void PlayCustomAnimation(Actor self, string newAnim, Action after)
{ {

View File

@@ -15,7 +15,7 @@ namespace OpenRA.Mods.RA.Traits
{ {
class RenderDisguiseInfo : RenderInfantryInfo, Requires<DisguiseInfo> class RenderDisguiseInfo : RenderInfantryInfo, Requires<DisguiseInfo>
{ {
public override object Create(ActorInitializer init) { return new RenderDisguise(init.Self, this); } public override object Create(ActorInitializer init) { return new RenderDisguise(init, this); }
} }
class RenderDisguise : RenderInfantry class RenderDisguise : RenderInfantry
@@ -24,11 +24,11 @@ namespace OpenRA.Mods.RA.Traits
string intendedSprite; string intendedSprite;
Disguise disguise; Disguise disguise;
public RenderDisguise(Actor self, RenderDisguiseInfo info) public RenderDisguise(ActorInitializer init, RenderDisguiseInfo info)
: base(self, info) : base(init, info)
{ {
this.info = info; this.info = info;
disguise = self.Trait<Disguise>(); disguise = init.Self.Trait<Disguise>();
intendedSprite = disguise.AsSprite; intendedSprite = disguise.AsSprite;
} }

View File

@@ -20,7 +20,7 @@ namespace OpenRA.Mods.RA.Traits
public readonly string OpenAnim = "open"; public readonly string OpenAnim = "open";
public readonly string UnloadAnim = "unload"; public readonly string UnloadAnim = "unload";
public override object Create(ActorInitializer init) { return new RenderLandingCraft(init.Self, this); } public override object Create(ActorInitializer init) { return new RenderLandingCraft(init, this); }
} }
public class RenderLandingCraft : RenderUnit public class RenderLandingCraft : RenderUnit
@@ -31,11 +31,11 @@ namespace OpenRA.Mods.RA.Traits
readonly IMove move; readonly IMove move;
bool open; bool open;
public RenderLandingCraft(Actor self, RenderLandingCraftInfo info) public RenderLandingCraft(ActorInitializer init, RenderLandingCraftInfo info)
: base(self) : base(init, info)
{ {
this.info = info; this.info = info;
this.self = self; self = init.Self;
cargo = self.Trait<Cargo>(); cargo = self.Trait<Cargo>();
move = self.Trait<IMove>(); move = self.Trait<IMove>();
} }

View File

@@ -19,7 +19,7 @@ namespace OpenRA.Mods.RA.Traits
[Desc("Armament name")] [Desc("Armament name")]
public readonly string Armament = "primary"; public readonly string Armament = "primary";
public override object Create(ActorInitializer init) { return new RenderUnitReload(init.Self, this); } public override object Create(ActorInitializer init) { return new RenderUnitReload(init, this); }
} }
class RenderUnitReload : RenderUnit class RenderUnitReload : RenderUnit
@@ -27,11 +27,11 @@ namespace OpenRA.Mods.RA.Traits
readonly AttackBase attack; readonly AttackBase attack;
readonly Armament armament; readonly Armament armament;
public RenderUnitReload(Actor self, RenderUnitReloadInfo info) public RenderUnitReload(ActorInitializer init, RenderUnitReloadInfo info)
: base(self) : base(init, info)
{ {
attack = self.Trait<AttackBase>(); attack = init.Self.Trait<AttackBase>();
armament = self.TraitsImplementing<Armament>() armament = init.Self.TraitsImplementing<Armament>()
.Single(a => a.Info.Name == info.Armament); .Single(a => a.Info.Name == info.Armament);
} }