From f0a2bf128c8df7a4c66171498c8708ea83ed0249 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Wed, 16 Jun 2010 19:22:59 +1200 Subject: [PATCH] Harvesters return to last used field --- OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs | 2 ++ OpenRA.Mods.RA/Activities/Harvest.cs | 1 + OpenRA.Mods.RA/Harvester.cs | 3 +++ OpenRA.Mods.RA/OreRefineryDockAction.cs | 9 +++++++-- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs b/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs index a8580f8015..59604bbbee 100644 --- a/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs +++ b/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs @@ -58,6 +58,8 @@ namespace OpenRA.Mods.Cnc harv.QueueActivity( new CallFunc( () => harvester.Visible = true, false ) ); harv.QueueActivity( new Drag(endDock, startDock, 12) ); harv.QueueActivity( new CallFunc( () => dockedHarv = null, false ) ); + if (harvester.LastHarvestedCell != int2.Zero) + harv.QueueActivity( new Move(harvester.LastHarvestedCell, 5) ); harv.QueueActivity( new Harvest() ); }) ); } diff --git a/OpenRA.Mods.RA/Activities/Harvest.cs b/OpenRA.Mods.RA/Activities/Harvest.cs index ce56ad4468..da14b8f1f6 100755 --- a/OpenRA.Mods.RA/Activities/Harvest.cs +++ b/OpenRA.Mods.RA/Activities/Harvest.cs @@ -36,6 +36,7 @@ namespace OpenRA.Mods.RA.Activities if( NextActivity != null ) return NextActivity; var harv = self.traits.Get(); + harv.LastHarvestedCell = self.Location; if( harv.IsFull ) return new DeliverResources { NextActivity = NextActivity }; diff --git a/OpenRA.Mods.RA/Harvester.cs b/OpenRA.Mods.RA/Harvester.cs index bb718fbd1c..348097eee1 100755 --- a/OpenRA.Mods.RA/Harvester.cs +++ b/OpenRA.Mods.RA/Harvester.cs @@ -47,6 +47,9 @@ namespace OpenRA.Mods.RA [Sync] public Actor LinkedProc = null; + [Sync] + public int2 LastHarvestedCell = int2.Zero; + readonly HarvesterInfo Info; public Harvester(Actor self, HarvesterInfo info) { diff --git a/OpenRA.Mods.RA/OreRefineryDockAction.cs b/OpenRA.Mods.RA/OreRefineryDockAction.cs index 0388f41b3f..1e10296f1c 100644 --- a/OpenRA.Mods.RA/OreRefineryDockAction.cs +++ b/OpenRA.Mods.RA/OreRefineryDockAction.cs @@ -34,6 +34,8 @@ namespace OpenRA.Mods.RA public void OnDock(Actor self, Actor harv, DeliverResources dockOrder) { var unit = harv.traits.Get(); + var harvester = harv.traits.Get(); + if (unit.Facing != 64) harv.QueueActivity (new Turn (64)); @@ -43,8 +45,11 @@ namespace OpenRA.Mods.RA if (renderUnit.anim.CurrentSequence.Name != "empty") renderUnit.PlayCustomAnimation (harv, "empty", () => { - harv.traits.Get().Deliver(harv, self); - harv.QueueActivity (new Harvest ()); + harvester.Deliver(harv, self); + if (harvester.LastHarvestedCell != int2.Zero) + harv.QueueActivity( new Move(harvester.LastHarvestedCell, 5) ); + + harv.QueueActivity( new Harvest() ); }); })); }