use CenterLocation, not Location, to determine facing during attack

This commit is contained in:
Bob
2010-11-04 00:40:42 +13:00
committed by Chris Forbes
parent a77b7af5fd
commit 8129d5d7dc

View File

@@ -42,22 +42,16 @@ namespace OpenRA.Mods.RA.Activities
if (!Target.IsValid) if (!Target.IsValid)
return NextActivity; return NextActivity;
var mobile = self.Trait<Mobile>();
var targetCell = Util.CellContaining(Target.CenterLocation);
if (!Combat.IsInRange( self.CenterLocation, Range, Target)) if (!Combat.IsInRange( self.CenterLocation, Range, Target))
return Util.SequenceActivities( mobile.MoveTo( Target, Range ), this ); return Util.SequenceActivities( self.Trait<Mobile>().MoveTo( Target, Range ), this );
var desiredFacing = Util.GetFacing((targetCell - self.Location).ToFloat2(), 0); var desiredFacing = Util.GetFacing(Target.CenterLocation - self.CenterLocation, 0);
var renderUnit = self.TraitOrDefault<RenderUnit>(); var renderUnit = self.TraitOrDefault<RenderUnit>();
var numDirs = (renderUnit != null) var numDirs = (renderUnit != null)
? renderUnit.anim.CurrentSequence.Facings : 8; ? renderUnit.anim.CurrentSequence.Facings : 8;
if (Util.QuantizeFacing(facing.Facing, numDirs) if (facing.Facing != desiredFacing)
!= Util.QuantizeFacing(desiredFacing, numDirs))
{
return Util.SequenceActivities( new Turn( desiredFacing ), this ); return Util.SequenceActivities( new Turn( desiredFacing ), this );
}
attack.target = Target; attack.target = Target;
attack.DoAttack(self, Target); attack.DoAttack(self, Target);