From cd64d62b7e83d686a0dfb3f88975849411df9e9b Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 11 Apr 2011 10:16:23 +1200 Subject: [PATCH] Fix bogus silo/wall rendering --- OpenRA.Mods.RA/Render/RenderBuilding.cs | 8 +++----- OpenRA.Mods.RA/Render/RenderBuildingWall.cs | 8 ++++++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/OpenRA.Mods.RA/Render/RenderBuilding.cs b/OpenRA.Mods.RA/Render/RenderBuilding.cs index b6f09484d0..6fd143ea12 100755 --- a/OpenRA.Mods.RA/Render/RenderBuilding.cs +++ b/OpenRA.Mods.RA/Render/RenderBuilding.cs @@ -64,12 +64,10 @@ namespace OpenRA.Mods.RA.Render anim.PlayRepeating( NormalizeSequence(self, "idle") ); if (self.Info.Traits.Get().HasMakeAnimation && !init.Contains()) - { self.QueueActivity(new MakeAnimation(self)); - self.QueueActivity(new CallFunc(() => self.World.AddFrameEndTask( _ => Complete( self ) ))); - } - else - Complete( self ); + + // Can't call Complete() from ctor because other traits haven't been inited yet + self.QueueActivity(new CallFunc(() => self.World.AddFrameEndTask( _ => Complete( self ) ))); } void Complete( Actor self ) diff --git a/OpenRA.Mods.RA/Render/RenderBuildingWall.cs b/OpenRA.Mods.RA/Render/RenderBuildingWall.cs index b8996c8250..4634679320 100644 --- a/OpenRA.Mods.RA/Render/RenderBuildingWall.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingWall.cs @@ -19,7 +19,7 @@ namespace OpenRA.Mods.RA.Render public override object Create(ActorInitializer init) { return new RenderBuildingWall(init); } } - class RenderBuildingWall : RenderBuilding + class RenderBuildingWall : RenderBuilding, INotifyBuildComplete { string seqName; int adjacentWalls = 0; @@ -28,9 +28,13 @@ namespace OpenRA.Mods.RA.Render : base(init) { seqName = "idle"; + } + + public void BuildingComplete( Actor self ) + { anim.PlayFetchIndex(seqName, () => adjacentWalls); } - + public override void Damaged(Actor self, AttackInfo e) { if (!e.DamageStateChanged) return;