unfail reservations for planes a bit

This commit is contained in:
Chris Forbes
2010-07-23 20:12:51 +12:00
parent c14f1aa996
commit 05d0e825fd

View File

@@ -55,16 +55,22 @@ namespace OpenRA.Mods.RA
return (order.OrderString == "Move" || order.OrderString == "Enter") ? "Move" : null; return (order.OrderString == "Move" || order.OrderString == "Enter") ? "Move" : null;
} }
public void ResolveOrder(Actor self, Order order) void UnReserve()
{ {
if (reservation != null) if (reservation != null)
{ {
Game.Debug("Disposing reservation.");
reservation.Dispose(); reservation.Dispose();
reservation = null; reservation = null;
} }
}
public void ResolveOrder(Actor self, Order order)
{
if (order.OrderString == "Move") if (order.OrderString == "Move")
{ {
UnReserve();
if (self.Owner == self.World.LocalPlayer) if (self.Owner == self.World.LocalPlayer)
self.World.AddFrameEndTask(w => w.Add(new MoveFlash(self.World, order.TargetLocation))); self.World.AddFrameEndTask(w => w.Add(new MoveFlash(self.World, order.TargetLocation)));
@@ -72,9 +78,12 @@ namespace OpenRA.Mods.RA
self.QueueActivity(new Fly(Util.CenterOfCell(order.TargetLocation))); self.QueueActivity(new Fly(Util.CenterOfCell(order.TargetLocation)));
} }
if (order.OrderString == "Enter") else if (order.OrderString == "Enter")
{ {
if (Reservable.IsReserved(order.TargetActor)) return; if (Reservable.IsReserved(order.TargetActor)) return;
UnReserve();
var res = order.TargetActor.traits.GetOrDefault<Reservable>(); var res = order.TargetActor.traits.GetOrDefault<Reservable>();
if (res != null) if (res != null)
reservation = res.Reserve(self); reservation = res.Reserve(self);
@@ -90,6 +99,8 @@ namespace OpenRA.Mods.RA
info.RearmBuildings.Contains(order.TargetActor.Info.Name) info.RearmBuildings.Contains(order.TargetActor.Info.Name)
? (IActivity)new Rearm() : new Repair(order.TargetActor)); ? (IActivity)new Rearm() : new Repair(order.TargetActor));
} }
else
UnReserve();
} }
} }
} }