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:
38
OpenRA.Mods.RA/UnitStances/UnitStanceHoldFire.cs
Normal file
38
OpenRA.Mods.RA/UnitStances/UnitStanceHoldFire.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using OpenRA.Traits;
|
||||
|
||||
namespace OpenRA.Mods.RA
|
||||
{
|
||||
public class UnitStanceHoldFireInfo : UnitStanceInfo
|
||||
{
|
||||
public override object Create(ActorInitializer init) { return new UnitStanceHoldFire(init.self, this); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hold Fire
|
||||
///
|
||||
/// Will not perform any attacks automaticly
|
||||
/// </summary>
|
||||
public class UnitStanceHoldFire : UnitStance, ISelectionColorModifier
|
||||
{
|
||||
public UnitStanceHoldFire(Actor self, UnitStanceHoldFireInfo info)
|
||||
{
|
||||
Info = info;
|
||||
Active = (self.World.LocalPlayer == self.Owner || (self.Owner.IsBot && Game.IsHost)) ? Info.Default : false;
|
||||
}
|
||||
|
||||
protected override void OnFirstTick(Actor self)
|
||||
{
|
||||
if (!self.HasTrait<AttackBase>()) return;
|
||||
|
||||
if (self.Trait<AttackBase>().IsAttacking)
|
||||
StopAttack(self);
|
||||
}
|
||||
|
||||
public Color GetSelectionColorModifier(Actor self, Color defaultColor)
|
||||
{
|
||||
return Active ? Color.SpringGreen : defaultColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user