Implemented: Stances

Added: Basic stances (Aggressive, Guard (Hold Ground), Hold Fire, None (dummy), Return Fire)
Added: WorldCommandWidget (to be able to set said stances)
Added: WorldCommandWidget to ra (cnc will follow, later on)
Changed: Added support to AttackBase for firing with movement disabled + utility method ScanForTarget (used by stances)
Added: AssignUnitStance (attach this to unit-producing actors, together with what stances can be picked as 'default')
This commit is contained in:
geckosoft
2010-11-11 04:28:11 +01:00
committed by Bob
parent 6d67ab2240
commit 6b40abb58c
18 changed files with 640 additions and 29 deletions

View File

@@ -20,16 +20,24 @@ namespace OpenRA.Mods.RA.Activities
{
Target Target;
int Range;
bool AllowMovement;
public Attack(Target target, int range)
public Attack(Target target, int range, bool allowMovement)
{
Target = target;
Range = range;
AllowMovement = allowMovement;
}
public Attack(Target target, int range) : this(target, range, true)
{
}
public override IActivity Tick( Actor self )
{
var attack = self.Trait<AttackBase>();
var ret = InnerTick( self, attack );
attack.IsAttacking = ( ret == this );
return ret;
@@ -42,8 +50,8 @@ namespace OpenRA.Mods.RA.Activities
if (!Target.IsValid)
return NextActivity;
if (!Combat.IsInRange( self.CenterLocation, Range, Target))
return Util.SequenceActivities( self.Trait<Mobile>().MoveWithinRange( Target, Range ), this );
if (!Combat.IsInRange(self.CenterLocation, Range, Target))
return (AllowMovement) ? Util.SequenceActivities(self.Trait<Mobile>().MoveWithinRange(Target, Range), this) : NextActivity;
var desiredFacing = Util.GetFacing(Target.CenterLocation - self.CenterLocation, 0);
var renderUnit = self.TraitOrDefault<RenderUnit>();