fix IdleAnimation. add IsAttacking to AttackBase

This commit is contained in:
Bob
2010-09-22 12:21:49 +12:00
parent 694fb6831a
commit d8de477edb
5 changed files with 12 additions and 6 deletions

View File

@@ -27,6 +27,14 @@ namespace OpenRA.Mods.RA.Activities
}
public override IActivity Tick( Actor self )
{
var attack = self.Trait<AttackBase>();
var ret = InnerTick( self, attack );
attack.IsAttacking = ( ret == this );
return ret;
}
IActivity InnerTick( Actor self, AttackBase attack )
{
if (IsCanceled) return NextActivity;
var facing = self.Trait<IFacing>();
@@ -49,7 +57,6 @@ namespace OpenRA.Mods.RA.Activities
return Util.SequenceActivities( new Turn( desiredFacing ), this );
}
var attack = self.Trait<AttackBase>();
attack.target = Target;
attack.DoAttack(self);
return this;

View File

@@ -41,6 +41,7 @@ namespace OpenRA.Mods.RA
public class AttackBase : IIssueOrder, IResolveOrder, ITick, IExplodeModifier, IOrderCursor, IOrderVoice
{
public bool IsAttacking { get; internal set; }
public Target target;
public List<Weapon> Weapons = new List<Weapon>();

View File

@@ -24,7 +24,7 @@ namespace OpenRA.Mods.RA
if (target != null)
attack.ResolveOrder(self, new Order("Attack", self, target));
else
if (self.GetCurrentActivity() is Attack)
if (attack.IsAttacking)
self.CancelActivity();
}

View File

@@ -31,7 +31,7 @@ namespace OpenRA.Mods.RA
public void Damaged(Actor self, AttackInfo e)
{
if (self.GetCurrentActivity() is IdleAnimation)
if (self.GetCurrentActivity() is Activities.IdleAnimation)
self.CancelActivity();
}

View File

@@ -24,13 +24,11 @@ namespace OpenRA.Mods.RA.Render
public override void Tick(Actor self)
{
var isAttacking = self.GetCurrentActivity() is Attack;
var attack = self.TraitOrDefault<AttackBase>();
if (attack != null)
anim.ReplaceAnim((attack.IsReloading() ? "empty-" : "")
+ (isAttacking ? "aim" : "idle"));
+ (attack.IsAttacking ? "aim" : "idle"));
base.Tick(self);
}
}