Add AttackSource enum.
This commit is contained in:
@@ -72,7 +72,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
leapToken = conditionManager.RevokeCondition(self, leapToken);
|
leapToken = conditionManager.RevokeCondition(self, leapToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor)
|
public override Activity GetAttackActivity(Actor self, AttackSource source, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor)
|
||||||
{
|
{
|
||||||
return new LeapAttack(self, newTarget, allowMove, forceAttack, this, info, targetLineColor);
|
return new LeapAttack(self, newTarget, allowMove, forceAttack, this, info, targetLineColor);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
public AttackTDGunboatTurreted(Actor self, AttackTDGunboatTurretedInfo info)
|
public AttackTDGunboatTurreted(Actor self, AttackTDGunboatTurretedInfo info)
|
||||||
: base(self, info) { }
|
: base(self, info) { }
|
||||||
|
|
||||||
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor)
|
public override Activity GetAttackActivity(Actor self, AttackSource source, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor)
|
||||||
{
|
{
|
||||||
return new AttackTDGunboatTurretedActivity(self, newTarget, allowMove, forceAttack, targetLineColor);
|
return new AttackTDGunboatTurretedActivity(self, newTarget, allowMove, forceAttack, targetLineColor);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
|
|
||||||
void INotifyAttack.PreparingAttack(Actor self, Target target, Armament a, Barrel barrel) { }
|
void INotifyAttack.PreparingAttack(Actor self, Target target, Armament a, Barrel barrel) { }
|
||||||
|
|
||||||
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null)
|
public override Activity GetAttackActivity(Actor self, AttackSource source, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null)
|
||||||
{
|
{
|
||||||
return new ChargeAttack(this, newTarget, forceAttack, targetLineColor);
|
return new ChargeAttack(this, newTarget, forceAttack, targetLineColor);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
{
|
{
|
||||||
base.Activate(self, order, manager);
|
base.Activate(self, order, manager);
|
||||||
|
|
||||||
attack.AttackTarget(order.Target, false, false, true);
|
attack.AttackTarget(order.Target, AttackSource.Default, false, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Created(Actor self)
|
protected override void Created(Actor self)
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
ChildActivity.Cancel(self);
|
ChildActivity.Cancel(self);
|
||||||
var attackBases = autoTarget.ActiveAttackBases;
|
var attackBases = autoTarget.ActiveAttackBases;
|
||||||
foreach (var ab in attackBases)
|
foreach (var ab in attackBases)
|
||||||
QueueChild(ab.GetAttackActivity(self, target, false, false));
|
QueueChild(ab.GetAttackActivity(self, AttackSource.AttackMove, target, false, false));
|
||||||
|
|
||||||
// Make sure to continue moving when the attack activities have finished.
|
// Make sure to continue moving when the attack activities have finished.
|
||||||
QueueChild(getInner());
|
QueueChild(getInner());
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ namespace OpenRA.Mods.Common.Scripting
|
|||||||
Log.Write("lua", "{1} is not revealed for player {0}!", Self.Owner, targetActor);
|
Log.Write("lua", "{1} is not revealed for player {0}!", Self.Owner, targetActor);
|
||||||
|
|
||||||
foreach (var attack in attackBases)
|
foreach (var attack in attackBases)
|
||||||
attack.AttackTarget(target, true, allowMove, forceAttack);
|
attack.AttackTarget(target, AttackSource.Default, true, allowMove, forceAttack);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Desc("Checks if the targeted actor is a valid target for this actor.")]
|
[Desc("Checks if the targeted actor is a valid target for this actor.")]
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
aircraftInfo = self.Info.TraitInfo<AircraftInfo>();
|
aircraftInfo = self.Info.TraitInfo<AircraftInfo>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null)
|
public override Activity GetAttackActivity(Actor self, AttackSource source, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null)
|
||||||
{
|
{
|
||||||
return new FlyAttack(self, newTarget, forceAttack, targetLineColor);
|
return new FlyAttack(self, newTarget, forceAttack, targetLineColor);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
OnRemovedFromWorld(self);
|
OnRemovedFromWorld(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor)
|
public override Activity GetAttackActivity(Actor self, AttackSource source, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException("AttackBomber requires a scripted target");
|
throw new NotImplementedException("AttackBomber requires a scripted target");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ using OpenRA.Traits;
|
|||||||
|
|
||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
|
public enum AttackSource { Default, AutoTarget, AttackMove }
|
||||||
|
|
||||||
public abstract class AttackBaseInfo : PausableConditionalTraitInfo
|
public abstract class AttackBaseInfo : PausableConditionalTraitInfo
|
||||||
{
|
{
|
||||||
[Desc("Armament names")]
|
[Desc("Armament names")]
|
||||||
@@ -199,7 +201,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (!order.Target.IsValidFor(self))
|
if (!order.Target.IsValidFor(self))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
AttackTarget(order.Target, order.Queued, true, forceAttack, Info.TargetLineColor);
|
AttackTarget(order.Target, AttackSource.Default, order.Queued, true, forceAttack, Info.TargetLineColor);
|
||||||
self.ShowTargetLines();
|
self.ShowTargetLines();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -224,7 +226,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return order.OrderString == attackOrderName || order.OrderString == forceAttackOrderName ? Info.Voice : null;
|
return order.OrderString == attackOrderName || order.OrderString == forceAttackOrderName ? Info.Voice : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null);
|
public abstract Activity GetAttackActivity(Actor self, AttackSource source, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null);
|
||||||
|
|
||||||
public bool HasAnyValidWeapons(Target t, bool checkForCenterTargetingWeapons = false)
|
public bool HasAnyValidWeapons(Target t, bool checkForCenterTargetingWeapons = false)
|
||||||
{
|
{
|
||||||
@@ -391,7 +393,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
&& a.Weapon.IsValidAgainst(t, self.World, self));
|
&& a.Weapon.IsValidAgainst(t, self.World, self));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AttackTarget(Target target, bool queued, bool allowMove, bool forceAttack = false, Color? targetLineColor = null)
|
public void AttackTarget(Target target, AttackSource source, bool queued, bool allowMove, bool forceAttack = false, Color? targetLineColor = null)
|
||||||
{
|
{
|
||||||
if (IsTraitDisabled)
|
if (IsTraitDisabled)
|
||||||
return;
|
return;
|
||||||
@@ -399,7 +401,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (!target.IsValidFor(self))
|
if (!target.IsValidFor(self))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var activity = GetAttackActivity(self, target, allowMove, forceAttack, targetLineColor);
|
var activity = GetAttackActivity(self, source, target, allowMove, forceAttack, targetLineColor);
|
||||||
self.QueueActivity(queued, activity);
|
self.QueueActivity(queued, activity);
|
||||||
OnResolveAttackOrder(self, activity, target, queued, forceAttack);
|
OnResolveAttackOrder(self, activity, target, queued, forceAttack);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
base.Tick(self);
|
base.Tick(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null)
|
public override Activity GetAttackActivity(Actor self, AttackSource source, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null)
|
||||||
{
|
{
|
||||||
return new AttackActivity(self, newTarget, allowMove, forceAttack, targetLineColor);
|
return new AttackActivity(self, newTarget, allowMove, forceAttack, targetLineColor);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return TargetInFiringArc(self, target, Info.FacingTolerance);
|
return TargetInFiringArc(self, target, Info.FacingTolerance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null)
|
public override Activity GetAttackActivity(Actor self, AttackSource source, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null)
|
||||||
{
|
{
|
||||||
return new Activities.Attack(self, newTarget, allowMove, forceAttack, targetLineColor);
|
return new Activities.Attack(self, newTarget, allowMove, forceAttack, targetLineColor);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public AttackOmni(Actor self, AttackOmniInfo info)
|
public AttackOmni(Actor self, AttackOmniInfo info)
|
||||||
: base(self, info) { }
|
: base(self, info) { }
|
||||||
|
|
||||||
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null)
|
public override Activity GetAttackActivity(Actor self, AttackSource source, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null)
|
||||||
{
|
{
|
||||||
return new SetTarget(this, newTarget, allowMove, forceAttack, targetLineColor);
|
return new SetTarget(this, newTarget, allowMove, forceAttack, targetLineColor);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -321,7 +321,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
void Attack(Actor self, Target target, bool allowMove)
|
void Attack(Actor self, Target target, bool allowMove)
|
||||||
{
|
{
|
||||||
foreach (var ab in ActiveAttackBases)
|
foreach (var ab in ActiveAttackBases)
|
||||||
ab.AttackTarget(target, false, allowMove);
|
ab.AttackTarget(target, AttackSource.AutoTarget, false, allowMove);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasValidTargetPriority(Actor self, Player owner, BitSet<TargetableType> targetTypes)
|
public bool HasValidTargetPriority(Actor self, Player owner, BitSet<TargetableType> targetTypes)
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
self.QueueActivity(false, new SwallowActor(self, target, a, facing));
|
self.QueueActivity(false, new SwallowActor(self, target, a, facing));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor)
|
public override Activity GetAttackActivity(Actor self, AttackSource source, Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor)
|
||||||
{
|
{
|
||||||
return new SwallowTarget(self, newTarget, allowMove, forceAttack);
|
return new SwallowTarget(self, newTarget, allowMove, forceAttack);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
|
|
||||||
if (target.Type == TargetType.Actor)
|
if (target.Type == TargetType.Actor)
|
||||||
{
|
{
|
||||||
attackTrait.AttackTarget(target, false, true, false);
|
attackTrait.AttackTarget(target, AttackSource.AutoTarget, false, true, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user