From 4567bad25144b422a623ea0d144929d856a54bd2 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 1 Aug 2010 14:57:07 +1200 Subject: [PATCH] make Activities.Land work with Targets. --- OpenRA.Mods.Cnc/ProductionAirdrop.cs | 4 ++-- OpenRA.Mods.RA/Activities/Land.cs | 17 ++++++----------- OpenRA.Mods.RA/Activities/ReturnToBase.cs | 4 +--- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/OpenRA.Mods.Cnc/ProductionAirdrop.cs b/OpenRA.Mods.Cnc/ProductionAirdrop.cs index 46de5f4075..e8a55892d3 100644 --- a/OpenRA.Mods.Cnc/ProductionAirdrop.cs +++ b/OpenRA.Mods.Cnc/ProductionAirdrop.cs @@ -47,8 +47,8 @@ namespace OpenRA.Mods.Cnc cargo.Load(a, newUnit); a.CancelActivity(); - - a.QueueActivity(new Land(self)); + + a.QueueActivity(new Land(Target.FromActor(self))); a.QueueActivity(new CallFunc(() => { if (self.IsDead()) diff --git a/OpenRA.Mods.RA/Activities/Land.cs b/OpenRA.Mods.RA/Activities/Land.cs index daaba94011..406882be72 100644 --- a/OpenRA.Mods.RA/Activities/Land.cs +++ b/OpenRA.Mods.RA/Activities/Land.cs @@ -16,26 +16,21 @@ namespace OpenRA.Mods.RA.Activities { public class Land : IActivity { - readonly float2 Pos; bool isCanceled; - Actor Structure; - - public Land(float2 pos) { Pos = pos; } - public Land(Actor structure) { Structure = structure; Pos = Structure.CenterLocation; } + Target Target; + + public Land(Target t) { Target = t; } public IActivity NextActivity { get; set; } public IActivity Tick(Actor self) { - if (Structure != null && Structure.IsDead()) - { - Structure = null; - isCanceled = true; - } + if (!Target.IsValid) + Cancel(self); if (isCanceled) return NextActivity; - var d = Pos - self.CenterLocation; + var d = Target.CenterLocation - self.CenterLocation; if (d.LengthSquared < 50) /* close enough */ return NextActivity; diff --git a/OpenRA.Mods.RA/Activities/ReturnToBase.cs b/OpenRA.Mods.RA/Activities/ReturnToBase.cs index fde8c44ef7..471cf521c3 100644 --- a/OpenRA.Mods.RA/Activities/ReturnToBase.cs +++ b/OpenRA.Mods.RA/Activities/ReturnToBase.cs @@ -23,7 +23,6 @@ namespace OpenRA.Mods.RA.Activities Actor dest; float2 w1, w2, w3; /* tangent points to turn circles */ - float2 landPoint; public static Actor ChooseAirfield(Actor self) { @@ -79,7 +78,6 @@ namespace OpenRA.Mods.RA.Activities w1 = c1 + f; w2 = c2 + f; w3 = approachStart; - landPoint = landPos; isCalculated = true; } @@ -99,7 +97,7 @@ namespace OpenRA.Mods.RA.Activities new Fly(w1), new Fly(w2), new Fly(w3), - new Land(landPoint), + new Land(Target.FromActor(dest)), NextActivity); }