Implement enter behaviour for building/bridge repair.
This commit is contained in:
@@ -17,8 +17,8 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
{
|
{
|
||||||
readonly BridgeHut hut;
|
readonly BridgeHut hut;
|
||||||
|
|
||||||
public RepairBridge(Actor self, Actor target)
|
public RepairBridge(Actor self, Actor target, EnterBehaviour enterBehaviour)
|
||||||
: base(self, target, EnterBehaviour.Dispose)
|
: base(self, target, enterBehaviour)
|
||||||
{
|
{
|
||||||
hut = target.Trait<BridgeHut>();
|
hut = target.Trait<BridgeHut>();
|
||||||
}
|
}
|
||||||
@@ -32,8 +32,8 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
{
|
{
|
||||||
if (hut.BridgeDamageState == DamageState.Undamaged || hut.Repairing || hut.Bridge.GetHut(0) == null || hut.Bridge.GetHut(1) == null)
|
if (hut.BridgeDamageState == DamageState.Undamaged || hut.Repairing || hut.Bridge.GetHut(0) == null || hut.Bridge.GetHut(1) == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
hut.Repair(self);
|
hut.Repair(self);
|
||||||
self.Dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
readonly Actor target;
|
readonly Actor target;
|
||||||
readonly Health health;
|
readonly Health health;
|
||||||
|
|
||||||
public RepairBuilding(Actor self, Actor target)
|
public RepairBuilding(Actor self, Actor target, EnterBehaviour enterBehaviour)
|
||||||
: base(self, target, EnterBehaviour.Dispose)
|
: base(self, target, enterBehaviour)
|
||||||
{
|
{
|
||||||
this.target = target;
|
this.target = target;
|
||||||
health = target.Trait<Health>();
|
health = target.Trait<Health>();
|
||||||
@@ -34,8 +34,8 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
{
|
{
|
||||||
if (health.DamageState == DamageState.Undamaged)
|
if (health.DamageState == DamageState.Undamaged)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
target.InflictDamage(self, -health.MaxHP, null);
|
target.InflictDamage(self, -health.MaxHP, null);
|
||||||
self.Dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
[VoiceReference] public readonly string Voice = "Action";
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
|
[Desc("Behaviour when entering the structure.",
|
||||||
|
"Possible values are Exit, Suicide, Dispose.")]
|
||||||
|
public readonly EnterBehaviour EnterBehaviour = EnterBehaviour.Dispose;
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new EngineerRepair(init, this); }
|
public object Create(ActorInitializer init) { return new EngineerRepair(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,7 +95,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
self.CancelActivity();
|
self.CancelActivity();
|
||||||
|
|
||||||
self.SetTargetLine(target, Color.Yellow);
|
self.SetTargetLine(target, Color.Yellow);
|
||||||
self.QueueActivity(new RepairBuilding(self, target.Actor));
|
self.QueueActivity(new RepairBuilding(self, target.Actor, info.EnterBehaviour));
|
||||||
}
|
}
|
||||||
|
|
||||||
class EngineerRepairOrderTargeter : UnitOrderTargeter
|
class EngineerRepairOrderTargeter : UnitOrderTargeter
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
[VoiceReference] public readonly string Voice = "Action";
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
|
[Desc("Behaviour when entering the structure.",
|
||||||
|
"Possible values are Exit, Suicide, Dispose.")]
|
||||||
|
public readonly EnterBehaviour EnterBehaviour = EnterBehaviour.Dispose;
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new RepairsBridges(this); }
|
public object Create(ActorInitializer init) { return new RepairsBridges(this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,7 +76,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
self.SetTargetLine(Target.FromOrder(self.World, order), Color.Yellow);
|
self.SetTargetLine(Target.FromOrder(self.World, order), Color.Yellow);
|
||||||
|
|
||||||
self.CancelActivity();
|
self.CancelActivity();
|
||||||
self.QueueActivity(new RepairBridge(self, order.TargetActor));
|
self.QueueActivity(new RepairBridge(self, order.TargetActor, info.EnterBehaviour));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user