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 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)
{
@@ -38,27 +38,27 @@ namespace OpenRA.Mods.Cnc.Traits
{
Animation left, right;
public RenderGunboat(Actor self, RenderGunboatInfo info)
: base(self)
public RenderGunboat(ActorInitializer init, RenderGunboatInfo info)
: base(init, info)
{
var name = GetImage(self);
var facing = self.Trait<IFacing>();
var turret = self.TraitsImplementing<Turreted>()
var name = GetImage(init.Self);
var facing = init.Self.Trait<IFacing>();
var turret = init.Self.TraitsImplementing<Turreted>()
.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);
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);
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);
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);
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) { }
public RenderBuilding(ActorInitializer init, RenderBuildingInfo info, Func<int> baseFacing)
: base(init.Self, baseFacing)
: base(init, info, baseFacing)
{
var self = init.Self;
this.info = info;

View File

@@ -16,12 +16,13 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Invisible during games.")]
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
{
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; }
}

View File

@@ -12,13 +12,13 @@ namespace OpenRA.Mods.Common.Traits
{
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
{
public RenderFlare(Actor self)
: base(self, () => 0)
public RenderFlare(ActorInitializer init, RenderFlareInfo info)
: base(init, info, () => 0)
{
DefaultAnimation.PlayThen("open", () => DefaultAnimation.PlayRepeating("idle"));
}

View File

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

View File

@@ -25,7 +25,7 @@ namespace OpenRA.Mods.Common.Traits
public readonly string[] IdleAnimations = { };
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)
{
@@ -58,14 +58,14 @@ namespace OpenRA.Mods.Common.Traits
bool IsModifyingSequence { get { return rsm != null && rsm.IsModifyingSequence; } }
bool wasModifying;
public RenderInfantry(Actor self, RenderInfantryInfo info)
: base(self, MakeFacingFunc(self))
public RenderInfantry(ActorInitializer init, RenderInfantryInfo info)
: base(init, info, MakeFacingFunc(init.Self))
{
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;
move = self.Trait<IMove>();
rsm = self.TraitOrDefault<IRenderInfantrySequenceModifier>();
move = init.Self.Trait<IMove>();
rsm = init.Self.TraitOrDefault<IRenderInfantrySequenceModifier>();
}
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 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)
{
@@ -43,17 +43,17 @@ namespace OpenRA.Mods.Common.Traits
{
public readonly Animation DefaultAnimation;
public RenderSimple(Actor self, Func<int> baseFacing)
: base(self)
public RenderSimple(ActorInitializer init, RenderSimpleInfo info, Func<int> baseFacing)
: base(init, info)
{
DefaultAnimation = new Animation(self.World, GetImage(self), baseFacing);
DefaultAnimation = new Animation(init.World, GetImage(init.Self), baseFacing);
Add("", DefaultAnimation);
}
public RenderSimple(Actor self)
: this(self, MakeFacingFunc(self))
public RenderSimple(ActorInitializer init, RenderSimpleInfo info)
: 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); }

View File

@@ -32,7 +32,7 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Change the sprite image size.")]
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)
{
@@ -99,9 +99,9 @@ namespace OpenRA.Mods.Common.Traits
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)

View File

@@ -15,13 +15,13 @@ namespace OpenRA.Mods.Common.Traits
{
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 RenderUnit(Actor self)
: base(self) { }
public RenderUnit(ActorInitializer init, RenderUnitInfo info)
: base(init, info) { }
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>
{
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
@@ -24,11 +24,11 @@ namespace OpenRA.Mods.RA.Traits
string intendedSprite;
Disguise disguise;
public RenderDisguise(Actor self, RenderDisguiseInfo info)
: base(self, info)
public RenderDisguise(ActorInitializer init, RenderDisguiseInfo info)
: base(init, info)
{
this.info = info;
disguise = self.Trait<Disguise>();
disguise = init.Self.Trait<Disguise>();
intendedSprite = disguise.AsSprite;
}

View File

@@ -20,7 +20,7 @@ namespace OpenRA.Mods.RA.Traits
public readonly string OpenAnim = "open";
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
@@ -31,11 +31,11 @@ namespace OpenRA.Mods.RA.Traits
readonly IMove move;
bool open;
public RenderLandingCraft(Actor self, RenderLandingCraftInfo info)
: base(self)
public RenderLandingCraft(ActorInitializer init, RenderLandingCraftInfo info)
: base(init, info)
{
this.info = info;
this.self = self;
self = init.Self;
cargo = self.Trait<Cargo>();
move = self.Trait<IMove>();
}

View File

@@ -19,7 +19,7 @@ namespace OpenRA.Mods.RA.Traits
[Desc("Armament name")]
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
@@ -27,11 +27,11 @@ namespace OpenRA.Mods.RA.Traits
readonly AttackBase attack;
readonly Armament armament;
public RenderUnitReload(Actor self, RenderUnitReloadInfo info)
: base(self)
public RenderUnitReload(ActorInitializer init, RenderUnitReloadInfo info)
: base(init, info)
{
attack = self.Trait<AttackBase>();
armament = self.TraitsImplementing<Armament>()
attack = init.Self.Trait<AttackBase>();
armament = init.Self.TraitsImplementing<Armament>()
.Single(a => a.Info.Name == info.Armament);
}