unfail reservations for planes a bit
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user