This commit is contained in:
Booom3
2010-05-13 05:20:58 +02:00
parent e8b7e834d7
commit 00375b057d
2 changed files with 7 additions and 11 deletions

View File

@@ -32,7 +32,6 @@ namespace OpenRA.Traits
class Repairable : IIssueOrder, IResolveOrder class Repairable : IIssueOrder, IResolveOrder
{ {
IDisposable reservation;
public Repairable(Actor self) { } public Repairable(Actor self) { }
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor) public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
@@ -41,8 +40,7 @@ namespace OpenRA.Traits
if (underCursor == null) return null; if (underCursor == null) return null;
if (self.Info.Traits.Get<RepairableInfo>().RepairBuildings.Contains(underCursor.Info.Name) if (self.Info.Traits.Get<RepairableInfo>().RepairBuildings.Contains(underCursor.Info.Name)
&& underCursor.Owner == self.Owner && underCursor.Owner == self.Owner)
&& !Reservable.IsReserved(underCursor))
return new Order("Enter", self, underCursor); return new Order("Enter", self, underCursor);
return null; return null;
@@ -50,24 +48,21 @@ namespace OpenRA.Traits
public void ResolveOrder(Actor self, Order order) public void ResolveOrder(Actor self, Order order)
{ {
if (reservation != null)
{
reservation.Dispose();
reservation = null;
}
if (order.OrderString == "Enter") if (order.OrderString == "Enter")
{ {
if (Reservable.IsReserved(order.TargetActor))
return;
var res = order.TargetActor.traits.GetOrDefault<Reservable>(); var res = order.TargetActor.traits.GetOrDefault<Reservable>();
if (res != null) reservation = res.Reserve(self); var wp = order.TargetActor.traits.GetOrDefault<RallyPoint>().rallyPoint;
self.CancelActivity(); self.CancelActivity();
self.QueueActivity(new Move(((1 / 24f) * order.TargetActor.CenterLocation).ToInt2(), order.TargetActor)); self.QueueActivity(new Move(((1 / 24f) * order.TargetActor.CenterLocation).ToInt2(), order.TargetActor));
self.QueueActivity(new Rearm()); self.QueueActivity(new Rearm());
self.QueueActivity(new Repair()); self.QueueActivity(new Repair());
if (order.TargetActor.traits.Contains<RallyPoint>())
self.QueueActivity(new CallFunc(
() => self.QueueActivity(new Move(order.TargetActor.traits.Get<RallyPoint>().rallyPoint,
order.TargetActor))));
} }
} }
} }

View File

@@ -717,6 +717,7 @@ FIX:
Sight: 5 Sight: 5
BelowUnits: BelowUnits:
Reservable: Reservable:
RallyPoint:
IronCurtainable: IronCurtainable:
RepairsUnits: RepairsUnits: