Infiltrate as Enter subclass
This commit is contained in:
@@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user