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
{
class Infiltrate : Activity
class Infiltrate : Enter
{
Target target;
public Infiltrate(Actor target) { this.target = Target.FromActor(target); }
public override Activity Tick(Actor self)
readonly Actor target;
public Infiltrate(Actor self, Actor target)
: base(self, target)
{
if (IsCanceled || target.Type != TargetType.Actor || target.Actor.Owner == self.Owner)
return NextActivity;
this.target = target;
}
foreach (var t in target.Actor.TraitsImplementing<INotifyInfiltrated>())
t.Infiltrated(target.Actor, self);
protected override void OnInside(Actor self)
{
if (target.IsDead() || target.Owner == self.Owner)
return;
foreach (var t in target.TraitsImplementing<INotifyInfiltrated>())
t.Infiltrated(target, self);
self.Destroy();
if (target.Actor.HasTrait<Building>())
if (target.HasTrait<Building>())
Sound.PlayToPlayer(self.Owner, "bldginf1.aud");
return this;
}
}
}

View File

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