From ae751ace98d03da05ae8360694c7732112bff823 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 1 Feb 2010 12:16:55 +1300 Subject: [PATCH] Fix animation continuity regression --- OpenRa.Game/Traits/Activities/DeliverOre.cs | 8 +------- OpenRa.Game/Traits/OreRefinery.cs | 15 +++++++++++---- OpenRa.Game/Traits/TiberiumRefinery.cs | 16 ++++++++-------- mods/cnc/sequences-vehicles.xml | 1 - 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/OpenRa.Game/Traits/Activities/DeliverOre.cs b/OpenRa.Game/Traits/Activities/DeliverOre.cs index 784a78d8df..d950e0e526 100644 --- a/OpenRa.Game/Traits/Activities/DeliverOre.cs +++ b/OpenRa.Game/Traits/Activities/DeliverOre.cs @@ -6,7 +6,6 @@ namespace OpenRa.Traits.Activities { public IActivity NextActivity { get; set; } - bool isDone; bool isDocking; Actor refinery; @@ -61,12 +60,7 @@ namespace OpenRa.Traits.Activities isDocking = true; refinery.traits.Get().OnDock(self, this); } - - var renderUnit = self.traits.Get(); - if( renderUnit.anim.CurrentSequence.Name != "empty" ) - renderUnit.PlayCustomAnimation( self, "empty", - () => isDone = true ); - + return this; } diff --git a/OpenRa.Game/Traits/OreRefinery.cs b/OpenRa.Game/Traits/OreRefinery.cs index 19b5e00693..2dbce1510c 100644 --- a/OpenRa.Game/Traits/OreRefinery.cs +++ b/OpenRa.Game/Traits/OreRefinery.cs @@ -29,10 +29,17 @@ namespace OpenRa.Traits var unit = harv.traits.Get(); if (unit.Facing != 64) harv.QueueActivity(new Turn(64)); - - // TODO: This should be delayed until the turn order is complete - harv.traits.Get().Deliver(harv, self); - harv.QueueActivity(new Harvest()); + + harv.QueueActivity( new CallFunc( () => { + var renderUnit = harv.traits.Get(); + if (renderUnit.anim.CurrentSequence.Name != "empty") + renderUnit.PlayCustomAnimation(harv, "empty", () => + { + harv.traits.Get().Deliver(harv, self); + harv.QueueActivity(new Harvest()); + }); + } + )); } } } diff --git a/OpenRa.Game/Traits/TiberiumRefinery.cs b/OpenRa.Game/Traits/TiberiumRefinery.cs index 7e9aa45d2c..f2654f2644 100644 --- a/OpenRa.Game/Traits/TiberiumRefinery.cs +++ b/OpenRa.Game/Traits/TiberiumRefinery.cs @@ -27,16 +27,16 @@ namespace OpenRa.Traits public int2 DeliverOffset { get { return new int2(0, 2); } } public void OnDock(Actor harv, DeliverOre dockOrder) { + // Todo: need to be careful about cancellation and multiple harvs var unit = harv.traits.Get(); - harv.QueueActivity(new Move(self.Location + DeliverOffset, self)); + harv.QueueActivity(new Move(self.Location + new int2(1,1), self)); harv.QueueActivity(new Turn(96)); - - // TODO: This should be delayed until the turn order is complete - self.traits.Get().PlayCustomAnimThen(self, "active", () => { - harv.traits.Get().Deliver(harv, self); - harv.QueueActivity(new Move(self.Location + DeliverOffset, self)); - harv.QueueActivity(new Harvest()); - }); + harv.QueueActivity( new CallFunc( () => + self.traits.Get().PlayCustomAnimThen(self, "active", () => { + harv.traits.Get().Deliver(harv, self); + harv.QueueActivity(new Move(self.Location + DeliverOffset, self)); + harv.QueueActivity(new Harvest()); + }))); } } } diff --git a/mods/cnc/sequences-vehicles.xml b/mods/cnc/sequences-vehicles.xml index 1fca642c9f..a5a55ba58c 100644 --- a/mods/cnc/sequences-vehicles.xml +++ b/mods/cnc/sequences-vehicles.xml @@ -13,7 +13,6 @@ -