Infiltrate as Enter subclass

This commit is contained in:
atlimit8
2014-10-04 19:31:35 -05:00
parent c994ee4668
commit ad24a70235
2 changed files with 15 additions and 13 deletions

View File

@@ -13,25 +13,27 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA.Activities namespace OpenRA.Mods.RA.Activities
{ {
class Infiltrate : Activity class Infiltrate : Enter
{ {
Target target; readonly Actor target;
public Infiltrate(Actor target) { this.target = Target.FromActor(target); } public Infiltrate(Actor self, Actor target)
: base(self, target)
public override Activity Tick(Actor self)
{ {
if (IsCanceled || target.Type != TargetType.Actor || target.Actor.Owner == self.Owner) this.target = target;
return NextActivity; }
foreach (var t in target.Actor.TraitsImplementing<INotifyInfiltrated>()) protected override void OnInside(Actor self)
t.Infiltrated(target.Actor, self); {
if (target.IsDead() || target.Owner == self.Owner)
return;
foreach (var t in target.TraitsImplementing<INotifyInfiltrated>())
t.Infiltrated(target, self);
self.Destroy(); self.Destroy();
if (target.Actor.HasTrait<Building>()) if (target.HasTrait<Building>())
Sound.PlayToPlayer(self.Owner, "bldginf1.aud"); Sound.PlayToPlayer(self.Owner, "bldginf1.aud");
return this;
} }
} }
} }

View File

@@ -96,7 +96,7 @@ namespace OpenRA.Mods.RA.Infiltration
self.CancelActivity(); self.CancelActivity();
self.SetTargetLine(target, Color.Red); self.SetTargetLine(target, Color.Red);
self.QueueActivity(new Enter(self, target.Actor, new Infiltrate(target.Actor))); self.QueueActivity(new Infiltrate(self, target.Actor));
} }
} }
} }