diff --git a/OpenRA.Mods.RA/Buildings/Building.cs b/OpenRA.Mods.RA/Buildings/Building.cs index 839fad50f0..83a7e30512 100644 --- a/OpenRA.Mods.RA/Buildings/Building.cs +++ b/OpenRA.Mods.RA/Buildings/Building.cs @@ -101,13 +101,13 @@ namespace OpenRA.Mods.RA.Buildings } } - public class Building : INotifyDamage, IOccupySpace, INotifyCapture, ITick, INotifySold, INotifyTransform, ISync, ITechTreePrerequisite, INotifyAddedToWorld, INotifyRemovedFromWorld + public class Building : INotifyDamage, IOccupySpace, INotifyCapture, INotifySold, INotifyTransform, ISync, ITechTreePrerequisite, INotifyCreated, INotifyAddedToWorld, INotifyRemovedFromWorld { public readonly BuildingInfo Info; public bool BuildComplete { get; private set; } [Sync] readonly CPos topLeft; readonly Actor self; - readonly bool skipMakeAnimation; + public readonly bool UseMakeAnimation; PowerManager PlayerPower; @@ -141,7 +141,7 @@ namespace OpenRA.Mods.RA.Buildings .Select(c => Pair.New(c, SubCell.FullCell)).ToArray(); CenterPosition = init.world.Map.CenterOfCell(topLeft) + FootprintUtils.CenterOffset(init.world, Info); - skipMakeAnimation = init.Contains(); + UseMakeAnimation = !init.Contains(); } public int GetPowerUsage() @@ -168,6 +168,12 @@ namespace OpenRA.Mods.RA.Buildings PlayerPower = newOwner.PlayerActor.Trait(); } + public void Created(Actor self) + { + if (!UseMakeAnimation) + NotifyBuildingComplete(self); + } + public void AddedToWorld(Actor self) { self.World.ActorMap.AddInfluence(self, this); @@ -182,12 +188,6 @@ namespace OpenRA.Mods.RA.Buildings self.World.ScreenMap.Remove(self); } - public void Tick(Actor self) - { - if (!BuildComplete && (skipMakeAnimation || !self.HasTrait())) - NotifyBuildingComplete(self); - } - public void NotifyBuildingComplete(Actor self) { if (BuildComplete) diff --git a/OpenRA.Mods.RA/Render/WithMakeAnimation.cs b/OpenRA.Mods.RA/Render/WithMakeAnimation.cs index d53d1ca9a4..484918f1c4 100644 --- a/OpenRA.Mods.RA/Render/WithMakeAnimation.cs +++ b/OpenRA.Mods.RA/Render/WithMakeAnimation.cs @@ -38,15 +38,13 @@ namespace OpenRA.Mods.RA.Render renderBuilding = self.Trait(); var building = self.Trait(); - if (!init.Contains()) + if (building.UseMakeAnimation) { renderBuilding.PlayCustomAnimThen(self, info.Sequence, () => { building.NotifyBuildingComplete(self); }); } - else - building.NotifyBuildingComplete(self); } public void Reverse(Actor self, Activity activity)