Merge pull request #9786 from RoosterDragon/reserve-fixes
Reserve fixes
This commit is contained in:
@@ -52,13 +52,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
return Util.SequenceActivities(new HeliFly(self, Target.FromActor(nearestHpad)));
|
||||
}
|
||||
|
||||
var res = dest.TraitOrDefault<Reservable>();
|
||||
|
||||
if (res != null)
|
||||
{
|
||||
heli.UnReserve();
|
||||
heli.Reservation = res.Reserve(dest, self, heli);
|
||||
}
|
||||
heli.MakeReservation(dest);
|
||||
|
||||
var exit = dest.Info.TraitInfos<ExitInfo>().FirstOrDefault();
|
||||
var offset = (exit != null) ? exit.SpawnOffset : WVec.Zero;
|
||||
|
||||
@@ -49,12 +49,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
if (dest == null)
|
||||
return;
|
||||
|
||||
var res = dest.TraitOrDefault<Reservable>();
|
||||
if (res != null)
|
||||
{
|
||||
plane.UnReserve();
|
||||
plane.Reservation = res.Reserve(dest, self, plane);
|
||||
}
|
||||
plane.MakeReservation(dest);
|
||||
|
||||
var landPos = dest.CenterPosition;
|
||||
var altitude = planeInfo.CruiseAltitude.Length;
|
||||
|
||||
@@ -30,12 +30,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
if (NextActivity == null)
|
||||
self.CancelActivity();
|
||||
|
||||
var reservation = aircraft.Reservation;
|
||||
if (reservation != null)
|
||||
{
|
||||
reservation.Dispose();
|
||||
reservation = null;
|
||||
}
|
||||
aircraft.UnReserve();
|
||||
|
||||
var host = aircraft.GetActorBelow();
|
||||
var hasHost = host != null;
|
||||
|
||||
@@ -92,11 +92,11 @@ namespace OpenRA.Mods.Common.Traits
|
||||
readonly Actor self;
|
||||
|
||||
UpgradeManager um;
|
||||
IDisposable reservation;
|
||||
|
||||
[Sync] public int Facing { get; set; }
|
||||
[Sync] public WPos CenterPosition { get; private set; }
|
||||
public CPos TopLeft { get { return self.World.Map.CellContaining(CenterPosition); } }
|
||||
public IDisposable Reservation;
|
||||
public int ROT { get { return Info.ROT; } }
|
||||
|
||||
bool airborne;
|
||||
@@ -257,22 +257,24 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (afld == null)
|
||||
return;
|
||||
|
||||
var res = afld.TraitOrDefault<Reservable>();
|
||||
MakeReservation(afld);
|
||||
}
|
||||
|
||||
if (res != null)
|
||||
{
|
||||
UnReserve();
|
||||
Reservation = res.Reserve(afld, self, this);
|
||||
}
|
||||
public void MakeReservation(Actor target)
|
||||
{
|
||||
UnReserve();
|
||||
var reservable = target.TraitOrDefault<Reservable>();
|
||||
if (reservable != null)
|
||||
reservation = reservable.Reserve(target, self, this);
|
||||
}
|
||||
|
||||
public void UnReserve()
|
||||
{
|
||||
if (Reservation != null)
|
||||
{
|
||||
Reservation.Dispose();
|
||||
Reservation = null;
|
||||
}
|
||||
if (reservation == null)
|
||||
return;
|
||||
|
||||
reservation.Dispose();
|
||||
reservation = null;
|
||||
}
|
||||
|
||||
public bool AircraftCanEnter(Actor a)
|
||||
@@ -453,12 +455,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (target.Positions.Any(p => self.World.ActorMap.GetActorsAt(self.World.Map.CellContaining(p)).Any(a => a != self && a != target.Actor)))
|
||||
return false;
|
||||
|
||||
var res = target.Actor.TraitOrDefault<Reservable>();
|
||||
if (res == null)
|
||||
return true;
|
||||
|
||||
UnReserve();
|
||||
Reservation = res.Reserve(target.Actor, self, this);
|
||||
MakeReservation(target.Actor);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -546,9 +543,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
}
|
||||
else
|
||||
{
|
||||
var res = order.TargetActor.TraitOrDefault<Reservable>();
|
||||
if (res != null)
|
||||
Reservation = res.Reserve(order.TargetActor, self, this);
|
||||
MakeReservation(order.TargetActor);
|
||||
|
||||
Action enter = () =>
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user