RepairBuilding & RepairBridge as Enter subclasses

This commit is contained in:
atlimit8
2014-10-04 15:53:09 -05:00
parent 6d0feb9fbf
commit 41452dcfeb
4 changed files with 29 additions and 26 deletions

View File

@@ -12,25 +12,24 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA.Activities
{
class RepairBridge : Activity
class RepairBridge : Enter
{
Target target;
readonly BridgeHut hut;
public RepairBridge(Actor target) { this.target = Target.FromActor(target); }
public RepairBridge(Actor self, Actor target)
: base(self, target) { hut = target.Trait<BridgeHut>(); }
public override Activity Tick(Actor self)
protected override bool CanReserve(Actor self)
{
if (IsCanceled || target.Type != TargetType.Actor)
return NextActivity;
return hut.BridgeDamageState != DamageState.Undamaged;
}
var hut = target.Actor.Trait<BridgeHut>();
protected override void OnInside(Actor self)
{
if (hut.BridgeDamageState == DamageState.Undamaged)
return NextActivity;
return;
hut.Repair(self);
self.Destroy();
return this;
}
}
}

View File

@@ -12,25 +12,29 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA.Activities
{
class RepairBuilding : Activity
class RepairBuilding : Enter
{
Target target;
readonly Actor target;
readonly Health health;
public RepairBuilding(Actor target) { this.target = Target.FromActor(target); }
public override Activity Tick(Actor self)
public RepairBuilding(Actor self, Actor target)
: base(self, target)
{
if (IsCanceled || target.Type != TargetType.Actor)
return NextActivity;
this.target = target;
health = target.Trait<Health>();
}
var health = target.Actor.Trait<Health>();
protected override bool CanReserve(Actor self)
{
return health.DamageState != DamageState.Undamaged;
}
protected override void OnInside(Actor self)
{
if (health.DamageState == DamageState.Undamaged)
return NextActivity;
target.Actor.InflictDamage(self, -health.MaxHP, null);
return;
target.InflictDamage(self, -health.MaxHP, null);
self.Destroy();
return this;
}
}
}

View File

@@ -78,7 +78,7 @@ namespace OpenRA.Mods.RA
self.CancelActivity();
self.SetTargetLine(target, Color.Yellow);
self.QueueActivity(new Enter(self, target.Actor, new RepairBuilding(target.Actor)));
self.QueueActivity(new RepairBuilding(self, target.Actor));
}
class EngineerRepairOrderTargeter : UnitOrderTargeter

View File

@@ -59,7 +59,7 @@ namespace OpenRA.Mods.RA
self.SetTargetLine(Target.FromOrder(self.World, order), Color.Yellow);
self.CancelActivity();
self.QueueActivity(new Enter(self, order.TargetActor, new RepairBridge(order.TargetActor)));
self.QueueActivity(new RepairBridge(self, order.TargetActor));
}
}