Use MakeAnimation activity for make animations
This commit is contained in:
@@ -19,13 +19,11 @@ namespace OpenRA.Mods.RA.Activities
|
|||||||
class MakeAnimation : CancelableActivity
|
class MakeAnimation : CancelableActivity
|
||||||
{
|
{
|
||||||
readonly bool Reversed;
|
readonly bool Reversed;
|
||||||
readonly RenderBuilding rb;
|
|
||||||
|
|
||||||
public MakeAnimation(Actor self) : this(self, false) {}
|
public MakeAnimation(Actor self) : this(self, false) {}
|
||||||
public MakeAnimation(Actor self, bool reversed)
|
public MakeAnimation(Actor self, bool reversed)
|
||||||
{
|
{
|
||||||
Reversed = reversed;
|
Reversed = reversed;
|
||||||
rb = self.Trait<RenderBuilding>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool complete = false;
|
bool complete = false;
|
||||||
@@ -35,6 +33,7 @@ namespace OpenRA.Mods.RA.Activities
|
|||||||
if (IsCanceled) return NextActivity;
|
if (IsCanceled) return NextActivity;
|
||||||
if (!started)
|
if (!started)
|
||||||
{
|
{
|
||||||
|
var rb = self.Trait<RenderBuilding>();
|
||||||
started = true;
|
started = true;
|
||||||
if (Reversed)
|
if (Reversed)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ using OpenRA.Graphics;
|
|||||||
using OpenRA.Mods.RA.Buildings;
|
using OpenRA.Mods.RA.Buildings;
|
||||||
using OpenRA.Mods.RA.Effects;
|
using OpenRA.Mods.RA.Effects;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
|
using OpenRA.Mods.RA.Activities;
|
||||||
|
|
||||||
namespace OpenRA.Mods.RA.Render
|
namespace OpenRA.Mods.RA.Render
|
||||||
{
|
{
|
||||||
@@ -58,10 +59,17 @@ namespace OpenRA.Mods.RA.Render
|
|||||||
: base(init.self, baseFacing)
|
: base(init.self, baseFacing)
|
||||||
{
|
{
|
||||||
var self = init.self;
|
var self = init.self;
|
||||||
if( init.Contains<SkipMakeAnimsInit>() || !self.Info.Traits.Get<RenderBuildingInfo>().HasMakeAnimation )
|
|
||||||
anim.PlayThen( "idle", () => self.World.AddFrameEndTask( _ => Complete( self ) ) );
|
// Work around a bogus crash
|
||||||
|
anim.PlayRepeating( NormalizeSequence(self, "idle") );
|
||||||
|
|
||||||
|
if (self.Info.Traits.Get<RenderBuildingInfo>().HasMakeAnimation && !init.Contains<SkipMakeAnimsInit>())
|
||||||
|
{
|
||||||
|
self.QueueActivity(new MakeAnimation(self));
|
||||||
|
self.QueueActivity(new CallFunc(() => self.World.AddFrameEndTask( _ => Complete( self ) )));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
anim.PlayThen( "make", () => self.World.AddFrameEndTask( _ => Complete( self ) ) );
|
Complete( self );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Complete( Actor self )
|
void Complete( Actor self )
|
||||||
|
|||||||
Reference in New Issue
Block a user