diff --git a/OpenRA.Mods.Cnc/Traits/Render/RenderGunboat.cs b/OpenRA.Mods.Cnc/Traits/Render/RenderGunboat.cs index 37fbe9916f..33fa9c7991 100644 --- a/OpenRA.Mods.Cnc/Traits/Render/RenderGunboat.cs +++ b/OpenRA.Mods.Cnc/Traits/Render/RenderGunboat.cs @@ -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(); - var turret = self.TraitsImplementing() + var name = GetImage(init.Self); + var facing = init.Self.Trait(); + var turret = init.Self.TraitsImplementing() .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)); } diff --git a/OpenRA.Mods.Common/Traits/Render/RenderBuilding.cs b/OpenRA.Mods.Common/Traits/Render/RenderBuilding.cs index a5f80ac3c4..cbaf620683 100644 --- a/OpenRA.Mods.Common/Traits/Render/RenderBuilding.cs +++ b/OpenRA.Mods.Common/Traits/Render/RenderBuilding.cs @@ -41,7 +41,7 @@ namespace OpenRA.Mods.Common.Traits : this(init, info, () => 0) { } public RenderBuilding(ActorInitializer init, RenderBuildingInfo info, Func baseFacing) - : base(init.Self, baseFacing) + : base(init, info, baseFacing) { var self = init.Self; this.info = info; diff --git a/OpenRA.Mods.Common/Traits/Render/RenderEditorOnly.cs b/OpenRA.Mods.Common/Traits/Render/RenderEditorOnly.cs index 643a73e3e1..90184db62c 100644 --- a/OpenRA.Mods.Common/Traits/Render/RenderEditorOnly.cs +++ b/OpenRA.Mods.Common/Traits/Render/RenderEditorOnly.cs @@ -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 Render(Actor self, WorldRenderer wr) { return SpriteRenderable.None; } } diff --git a/OpenRA.Mods.Common/Traits/Render/RenderFlare.cs b/OpenRA.Mods.Common/Traits/Render/RenderFlare.cs index 7c931dae8b..ca4b9f3de7 100644 --- a/OpenRA.Mods.Common/Traits/Render/RenderFlare.cs +++ b/OpenRA.Mods.Common/Traits/Render/RenderFlare.cs @@ -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")); } diff --git a/OpenRA.Mods.Common/Traits/Render/RenderHarvester.cs b/OpenRA.Mods.Common/Traits/Render/RenderHarvester.cs index 7cc6c85f49..5839f3baf9 100644 --- a/OpenRA.Mods.Common/Traits/Render/RenderHarvester.cs +++ b/OpenRA.Mods.Common/Traits/Render/RenderHarvester.cs @@ -17,7 +17,7 @@ namespace OpenRA.Mods.Common.Traits class RenderHarvesterInfo : RenderUnitInfo, Requires { 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(); + harv = init.Self.Trait(); // 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) diff --git a/OpenRA.Mods.Common/Traits/Render/RenderInfantry.cs b/OpenRA.Mods.Common/Traits/Render/RenderInfantry.cs index d4f2ac6f18..8d26f34c76 100644 --- a/OpenRA.Mods.Common/Traits/Render/RenderInfantry.cs +++ b/OpenRA.Mods.Common/Traits/Render/RenderInfantry.cs @@ -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 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(); - rsm = self.TraitOrDefault(); + move = init.Self.Trait(); + rsm = init.Self.TraitOrDefault(); } protected virtual string NormalizeInfantrySequence(Actor self, string baseSequence) diff --git a/OpenRA.Mods.Common/Traits/Render/RenderSimple.cs b/OpenRA.Mods.Common/Traits/Render/RenderSimple.cs index 72edba500c..ae58ea382a 100644 --- a/OpenRA.Mods.Common/Traits/Render/RenderSimple.cs +++ b/OpenRA.Mods.Common/Traits/Render/RenderSimple.cs @@ -18,7 +18,7 @@ namespace OpenRA.Mods.Common.Traits { public class RenderSimpleInfo : RenderSpritesInfo, IRenderActorPreviewSpritesInfo, IQuantizeBodyOrientationInfo, ILegacyEditorRenderInfo, Requires { - 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 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 baseFacing) - : base(self) + public RenderSimple(ActorInitializer init, RenderSimpleInfo info, Func 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); } diff --git a/OpenRA.Mods.Common/Traits/Render/RenderSprites.cs b/OpenRA.Mods.Common/Traits/Render/RenderSprites.cs index 4e6d209df2..1dc38c7677 100644 --- a/OpenRA.Mods.Common/Traits/Render/RenderSprites.cs +++ b/OpenRA.Mods.Common/Traits/Render/RenderSprites.cs @@ -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 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(); + this.info = info; } public static string GetImage(ActorInfo actor) diff --git a/OpenRA.Mods.Common/Traits/Render/RenderUnit.cs b/OpenRA.Mods.Common/Traits/Render/RenderUnit.cs index f420a432bd..566db3806f 100644 --- a/OpenRA.Mods.Common/Traits/Render/RenderUnit.cs +++ b/OpenRA.Mods.Common/Traits/Render/RenderUnit.cs @@ -15,13 +15,13 @@ namespace OpenRA.Mods.Common.Traits { public class RenderUnitInfo : RenderSimpleInfo, Requires { - 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) { diff --git a/OpenRA.Mods.RA/Traits/Render/RenderDisguise.cs b/OpenRA.Mods.RA/Traits/Render/RenderDisguise.cs index 7397855081..a0b36af8e2 100644 --- a/OpenRA.Mods.RA/Traits/Render/RenderDisguise.cs +++ b/OpenRA.Mods.RA/Traits/Render/RenderDisguise.cs @@ -15,7 +15,7 @@ namespace OpenRA.Mods.RA.Traits { class RenderDisguiseInfo : RenderInfantryInfo, Requires { - 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 = init.Self.Trait(); intendedSprite = disguise.AsSprite; } diff --git a/OpenRA.Mods.RA/Traits/Render/RenderLandingCraft.cs b/OpenRA.Mods.RA/Traits/Render/RenderLandingCraft.cs index 585b8d8adc..66814e8402 100644 --- a/OpenRA.Mods.RA/Traits/Render/RenderLandingCraft.cs +++ b/OpenRA.Mods.RA/Traits/Render/RenderLandingCraft.cs @@ -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(); move = self.Trait(); } diff --git a/OpenRA.Mods.RA/Traits/Render/RenderUnitReload.cs b/OpenRA.Mods.RA/Traits/Render/RenderUnitReload.cs index 9569eeee2e..be78d8c2b5 100644 --- a/OpenRA.Mods.RA/Traits/Render/RenderUnitReload.cs +++ b/OpenRA.Mods.RA/Traits/Render/RenderUnitReload.cs @@ -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(); - armament = self.TraitsImplementing() + attack = init.Self.Trait(); + armament = init.Self.TraitsImplementing() .Single(a => a.Info.Name == info.Armament); }