Add a new INotifyCrushed interface
This commit is contained in:
@@ -20,24 +20,25 @@ namespace OpenRA.Mods.RA.Traits
|
||||
public readonly bool AvoidFriendly = true;
|
||||
public readonly HashSet<string> DetonateClasses = new HashSet<string>();
|
||||
|
||||
public object Create(ActorInitializer init) { return new Mine(init, this); }
|
||||
public object Create(ActorInitializer init) { return new Mine(this); }
|
||||
}
|
||||
|
||||
class Mine : ICrushable
|
||||
class Mine : ICrushable, INotifyCrushed
|
||||
{
|
||||
readonly Actor self;
|
||||
readonly MineInfo info;
|
||||
|
||||
public Mine(ActorInitializer init, MineInfo info)
|
||||
public Mine(MineInfo info)
|
||||
{
|
||||
self = init.Self;
|
||||
this.info = info;
|
||||
}
|
||||
|
||||
public void WarnCrush(Actor crusher) { }
|
||||
void INotifyCrushed.WarnCrush(Actor self, Actor crusher, HashSet<string> crushClasses) { }
|
||||
|
||||
public void OnCrush(Actor crusher)
|
||||
void INotifyCrushed.OnCrush(Actor self, Actor crusher, HashSet<string> crushClasses)
|
||||
{
|
||||
if (!CrushableBy(crushClasses, crusher.Owner))
|
||||
return;
|
||||
|
||||
if (crusher.Info.HasTraitInfo<MineImmuneInfo>() || (self.Owner.Stances[crusher.Owner] == Stance.Ally && info.AvoidFriendly))
|
||||
return;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user