some improvement to alfd/plane interaction
This commit is contained in:
@@ -35,10 +35,17 @@ namespace OpenRA.Mods.RA.Activities
|
||||
|
||||
void Calculate(Actor self)
|
||||
{
|
||||
if (dest == null) dest = ChooseAirfield(self);
|
||||
if (dest == null)
|
||||
{
|
||||
dest = ChooseAirfield(self);
|
||||
var res = dest.traits.GetOrDefault<Reservable>();
|
||||
if (res != null)
|
||||
self.traits.Get<Plane>().reservation = res.Reserve(self);
|
||||
{
|
||||
var plane = self.traits.Get<Plane>();
|
||||
plane.UnReserve();
|
||||
plane.reservation = res.Reserve(self);
|
||||
}
|
||||
}
|
||||
|
||||
var landPos = dest.CenterLocation;
|
||||
var aircraft = self.traits.Get<Aircraft>();
|
||||
|
||||
@@ -74,7 +74,7 @@ namespace OpenRA.Mods.RA
|
||||
return (order.OrderString == "Move" || order.OrderString == "Enter") ? "Move" : null;
|
||||
}
|
||||
|
||||
void UnReserve()
|
||||
public void UnReserve()
|
||||
{
|
||||
if (reservation != null)
|
||||
{
|
||||
@@ -130,7 +130,10 @@ namespace OpenRA.Mods.RA
|
||||
? (IActivity)new Rearm() : new Repair(order.TargetActor));
|
||||
}
|
||||
else
|
||||
{
|
||||
Game.Debug("Unreserve due to unhandled order: {0}".F(order.OrderString));
|
||||
UnReserve();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,10 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
public IDisposable Reserve(Actor forActor)
|
||||
{
|
||||
if (reservedFor != null)
|
||||
Game.Debug("BUG: #{0} {1} was already reserved (by #{2} {3})".F(
|
||||
self.ActorID, self.Info.Name, reservedFor.ActorID, reservedFor.Info.Name));
|
||||
|
||||
reservedFor = forActor;
|
||||
Game.Debug("#{0} {1} reserved by #{2} {3}".F(
|
||||
self.ActorID, self.Info.Name, forActor.ActorID, forActor.Info.Name));
|
||||
|
||||
Reference in New Issue
Block a user