made all orders queuable
This commit is contained in:
@@ -51,13 +51,13 @@ namespace OpenRA.Mods.RA.Air
|
||||
}
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "Enter" )
|
||||
return new Order( order.OrderID, self, target.Actor );
|
||||
return new Order( order.OrderID, self, target.Actor, queued );
|
||||
|
||||
if( order.OrderID == "Move" )
|
||||
return new Order( order.OrderID, self, Util.CellContaining( target.CenterLocation ) );
|
||||
return new Order( order.OrderID, self, Util.CellContaining( target.CenterLocation ), queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -60,13 +60,13 @@ namespace OpenRA.Mods.RA.Air
|
||||
}
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "Enter" )
|
||||
return new Order( order.OrderID, self, target.Actor );
|
||||
return new Order( order.OrderID, self, target.Actor, queued );
|
||||
|
||||
if( order.OrderID == "Move" )
|
||||
return new Order( order.OrderID, self, Util.CellContaining( target.CenterLocation ) );
|
||||
return new Order( order.OrderID, self, Util.CellContaining( target.CenterLocation ), queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -133,14 +133,14 @@ namespace OpenRA.Mods.RA
|
||||
get { yield return new AttackOrderTargeter( "Attack", 6, IsHeal ); }
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order is AttackOrderTargeter )
|
||||
{
|
||||
if( target.IsActor )
|
||||
return new Order( "Attack", self, target.Actor );
|
||||
return new Order( "Attack", self, target.Actor, queued );
|
||||
else
|
||||
return new Order( "Attack", self, Util.CellContaining( target.CenterLocation ) );
|
||||
return new Order( "Attack", self, Util.CellContaining( target.CenterLocation ), queued );
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -194,7 +194,7 @@ namespace OpenRA.Mods.RA
|
||||
if (target != null)
|
||||
{
|
||||
if (allowMovement)
|
||||
attack.ResolveOrder(self, new Order("Attack", self, target));
|
||||
attack.ResolveOrder(self, new Order("Attack", self, target, false));
|
||||
else
|
||||
attack.target = Target.FromActor(target); // for turreted things on rails.
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace OpenRA.Mods.RA
|
||||
{
|
||||
var attack = self.Trait<AttackBase>();
|
||||
if (target != null)
|
||||
attack.ResolveOrder(self, new Order("Attack", self, target));
|
||||
attack.ResolveOrder(self, new Order("Attack", self, target, false));
|
||||
else
|
||||
if (attack.IsAttacking)
|
||||
self.CancelActivity();
|
||||
|
||||
@@ -31,10 +31,10 @@ namespace OpenRA.Mods.RA
|
||||
get { yield return new UnitTraitOrderTargeter<Building>( "C4", 6, "c4", true, false ); }
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "C4" )
|
||||
return new Order( "C4", self, target.Actor );
|
||||
return new Order( "C4", self, target.Actor, queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -44,13 +44,13 @@ namespace OpenRA.Mods.RA
|
||||
}
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "Unload" )
|
||||
return new Order( order.OrderID, self );
|
||||
return new Order( order.OrderID, self, queued );
|
||||
|
||||
if( order.OrderID == "ReverseEnterTransport" )
|
||||
return new Order( order.OrderID, self, target.Actor );
|
||||
return new Order( order.OrderID, self, target.Actor, queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
@@ -71,7 +71,7 @@ namespace OpenRA.Mods.RA
|
||||
if( order.TargetActor != null && order.Subject.Owner == order.TargetActor.Owner )
|
||||
{
|
||||
var passenger = order.TargetActor.Trait<Passenger>();
|
||||
passenger.ResolveOrder( order.TargetActor, new Order( "EnterTransport", order.TargetActor, self ) );
|
||||
passenger.ResolveOrder( order.TargetActor, new Order( "EnterTransport", order.TargetActor, self, false ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA
|
||||
get { yield return new DeployOrderTargeter( "ChronoshiftDeploy", 5, () => chargeTick <= 0 ); }
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "ChronoshiftDeploy" )
|
||||
if (chargeTick <= 0)
|
||||
|
||||
@@ -30,10 +30,10 @@ namespace OpenRA.Mods.RA
|
||||
}
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "CaptureBuilding" )
|
||||
return new Order( order.OrderID, self, target.Actor );
|
||||
return new Order( order.OrderID, self, target.Actor, queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -27,10 +27,10 @@ namespace OpenRA.Mods.RA
|
||||
get { yield return new EngineerRepairOrderTargeter(); }
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "EngineerRepair" )
|
||||
return new Order( order.OrderID, self, target.Actor );
|
||||
return new Order( order.OrderID, self, target.Actor, queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -302,7 +302,7 @@ namespace OpenRA.Mods.RA
|
||||
int2 newRallyPoint = ChooseRallyLocationNear(a.Location);
|
||||
newRallyPoint.X += 4;
|
||||
newRallyPoint.Y += 4;
|
||||
world.IssueOrder(new Order("SetRallyPoint", a, newRallyPoint));
|
||||
world.IssueOrder(new Order("SetRallyPoint", a, newRallyPoint, false));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -335,7 +335,7 @@ namespace OpenRA.Mods.RA
|
||||
range = Math.Max(range, loopCount / 2);
|
||||
if (loopCount > 10) return false;
|
||||
} while (!a.Trait<IMove>().CanEnterCell(xy) && xy != a.Location);
|
||||
world.IssueOrder(new Order("Move", a, xy));
|
||||
world.IssueOrder(new Order("Move", a, xy, false));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -348,7 +348,7 @@ namespace OpenRA.Mods.RA
|
||||
if (mcv != null)
|
||||
{
|
||||
baseCenter = mcv.Location;
|
||||
world.IssueOrder(new Order("DeployTransform", mcv));
|
||||
world.IssueOrder(new Order("DeployTransform", mcv, false));
|
||||
}
|
||||
else
|
||||
BotDebug("AI: Can't find the MCV.");
|
||||
@@ -454,7 +454,7 @@ namespace OpenRA.Mods.RA
|
||||
else
|
||||
{
|
||||
ai.world.IssueOrder(new Order("PlaceBuilding", ai.p.PlayerActor,
|
||||
location.Value, currentBuilding.Item));
|
||||
location.Value, currentBuilding.Item, false));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -104,13 +104,13 @@ namespace OpenRA.Mods.RA
|
||||
}
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "Deliver" )
|
||||
return new Order( order.OrderID, self, target.Actor );
|
||||
return new Order( order.OrderID, self, target.Actor, queued );
|
||||
|
||||
if( order.OrderID == "Harvest" )
|
||||
return new Order( order.OrderID, self, Util.CellContaining( target.CenterLocation ) );
|
||||
return new Order( order.OrderID, self, Util.CellContaining( target.CenterLocation ), queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -38,13 +38,13 @@ namespace OpenRA.Mods.RA
|
||||
get { yield return new BeginMinefieldOrderTargeter(); }
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order is BeginMinefieldOrderTargeter )
|
||||
{
|
||||
var start = Traits.Util.CellContaining( target.CenterLocation );
|
||||
self.World.OrderGenerator = new MinefieldOrderGenerator( self, start );
|
||||
return new Order( "BeginMinefield", self, start );
|
||||
return new Order( "BeginMinefield", self, start, false );
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -110,7 +110,7 @@ namespace OpenRA.Mods.RA
|
||||
if( mi.Button == MouseButton.Right && underCursor == null )
|
||||
{
|
||||
minelayer.World.CancelInputMode();
|
||||
yield return new Order( "PlaceMinefield", minelayer, xy );
|
||||
yield return new Order( "PlaceMinefield", minelayer, xy, false );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -140,12 +140,12 @@ namespace OpenRA.Mods.RA.Move
|
||||
public IEnumerable<IOrderTargeter> Orders { get { yield return new MoveOrderTargeter( Info ); } }
|
||||
|
||||
// Note: Returns a valid order even if the unit can't move to the target
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order is MoveOrderTargeter )
|
||||
{
|
||||
if( Info.OnRails ) return null;
|
||||
return new Order( "Move", self, Util.CellContaining( target.CenterLocation ), false );
|
||||
return new Order( "Move", self, Util.CellContaining( target.CenterLocation ), queued );
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -54,9 +54,9 @@ namespace OpenRA.Mods.RA.Orders
|
||||
}
|
||||
|
||||
if (Rules.Info[ Building ].Traits.Contains<LineBuildInfo>())
|
||||
yield return new Order("LineBuild", Producer.Owner.PlayerActor, topLeft, Building);
|
||||
yield return new Order("LineBuild", Producer.Owner.PlayerActor, topLeft, Building, false);
|
||||
else
|
||||
yield return new Order("PlaceBuilding", Producer.Owner.PlayerActor, topLeft, Building);
|
||||
yield return new Order("PlaceBuilding", Producer.Owner.PlayerActor, topLeft, Building, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace OpenRA.Mods.RA.Orders
|
||||
.FirstOrDefault();
|
||||
|
||||
if (underCursor != null)
|
||||
yield return new Order("PowerDown", underCursor);
|
||||
yield return new Order("PowerDown", underCursor, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA.Orders
|
||||
|
||||
if (underCursor.Info.Traits.Contains<RepairableBuildingInfo>()
|
||||
&& underCursor.GetDamageState() > DamageState.Undamaged)
|
||||
yield return new Order("Repair", underCursor);
|
||||
yield return new Order("Repair", underCursor, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA.Orders
|
||||
var building = underCursor != null ? underCursor.Info.Traits.Get<BuildingInfo>() : null;
|
||||
|
||||
if (building != null && !building.Unsellable)
|
||||
yield return new Order("Sell", underCursor);
|
||||
yield return new Order("Sell", underCursor, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace OpenRA.Mods.RA.Orders
|
||||
}
|
||||
|
||||
if (world.LocalPlayer.Shroud.IsExplored(xy))
|
||||
yield return new Order("ChronoshiftSelf", self, xy);
|
||||
yield return new Order("ChronoshiftSelf", self, xy, mi.Modifiers.HasModifier(Modifiers.Shift));
|
||||
}
|
||||
|
||||
public void Tick( World world ) { }
|
||||
|
||||
@@ -42,10 +42,10 @@ namespace OpenRA.Mods.RA
|
||||
}
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "EnterTransport" )
|
||||
return new Order( order.OrderID, self, target.Actor );
|
||||
return new Order( order.OrderID, self, target.Actor, queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace OpenRA.Mods.RA
|
||||
if (client.State == Session.ClientState.Disconnected)
|
||||
{
|
||||
Disconnected = true; /* dont call this multiple times! */
|
||||
self.World.IssueOrder(new Order("Surrender", self));
|
||||
self.World.IssueOrder(new Order("Surrender", self, false));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,10 +32,10 @@ namespace OpenRA.Mods.RA
|
||||
get { yield return new DeployOrderTargeter( "PrimaryProducer", 1 ); }
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "PrimaryProducer" )
|
||||
return new Order( order.OrderID, self );
|
||||
return new Order( order.OrderID, self, false );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -48,10 +48,10 @@ namespace OpenRA.Mods.RA
|
||||
get { yield return new RallyPointOrderTargeter(); }
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "SetRallyPoint" )
|
||||
return new Order( order.OrderID, self, Traits.Util.CellContaining( target.CenterLocation ) );
|
||||
return new Order( order.OrderID, self, Traits.Util.CellContaining( target.CenterLocation ), false );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -62,10 +62,10 @@ namespace OpenRA.Mods.RA.Render
|
||||
get { yield return new UnitTraitOrderTargeter<RenderInfantry>( "Disguise", 5, "ability", true, true ); }
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "Disguise" )
|
||||
return new Order( order.OrderID, self, target.Actor );
|
||||
return new Order( order.OrderID, self, target.Actor, queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -42,10 +42,10 @@ namespace OpenRA.Mods.RA
|
||||
get { yield return new EnterOrderTargeter<Building>( "Repair", 5, false, true, target => CanRepairAt( target ), _ => CanRepair() ); }
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "Repair" )
|
||||
return new Order( order.OrderID, self, target.Actor );
|
||||
return new Order( order.OrderID, self, target.Actor, queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -42,10 +42,10 @@ namespace OpenRA.Mods.RA
|
||||
}
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "RepairNear" )
|
||||
return new Order( order.OrderID, self, target.Actor );
|
||||
return new Order( order.OrderID, self, target.Actor, queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -26,10 +26,10 @@ namespace OpenRA.Mods.RA
|
||||
get { yield return new UnitTraitOrderTargeter<IAcceptSpy>( "SpyInfiltrate", 5, "enter", true, false ); }
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "SpyInfiltrate" )
|
||||
return new Order( order.OrderID, self, target.Actor );
|
||||
return new Order( order.OrderID, self, target.Actor, queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ namespace OpenRA.Mods.RA
|
||||
&& a.HasTrait<Selectable>()).FirstOrDefault();
|
||||
|
||||
if (underCursor != null)
|
||||
yield return new Order("ChronosphereSelect", world.LocalPlayer.PlayerActor, underCursor);
|
||||
yield return new Order("ChronosphereSelect", world.LocalPlayer.PlayerActor, underCursor, false);
|
||||
}
|
||||
|
||||
yield break;
|
||||
@@ -128,7 +128,7 @@ namespace OpenRA.Mods.RA
|
||||
{
|
||||
// Cannot chronoshift into unexplored location
|
||||
if (world.LocalPlayer.Shroud.IsExplored(xy))
|
||||
yield return new Order("ChronosphereActivate", world.LocalPlayer.PlayerActor, self, xy);
|
||||
yield return new Order("ChronosphereActivate", world.LocalPlayer.PlayerActor, self, xy, false);
|
||||
}
|
||||
|
||||
public void Tick(World world)
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace OpenRA.Mods.RA
|
||||
&& a.HasTrait<Selectable>()).FirstOrDefault();
|
||||
|
||||
if( underCursor != null )
|
||||
yield return new Order( "IronCurtain", underCursor.Owner.PlayerActor, underCursor );
|
||||
yield return new Order( "IronCurtain", underCursor.Owner.PlayerActor, underCursor, false );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
protected override void OnActivate()
|
||||
{
|
||||
Self.World.IssueOrder(new Order("SonarPulse", Owner.PlayerActor));
|
||||
Self.World.IssueOrder(new Order("SonarPulse", Owner.PlayerActor, false));
|
||||
}
|
||||
|
||||
public void ResolveOrder(Actor self, Order order)
|
||||
|
||||
@@ -56,10 +56,10 @@ namespace OpenRA.Mods.RA
|
||||
get { yield return new DeployOrderTargeter( "DeployTransform", 5, () => CanDeploy() ); }
|
||||
}
|
||||
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target )
|
||||
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
|
||||
{
|
||||
if( order.OrderID == "DeployTransform" )
|
||||
return new Order( order.OrderID, self );
|
||||
return new Order( order.OrderID, self, queued );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
|
||||
|
||||
optionsBG.GetWidget("SURRENDER").OnMouseUp = mi =>
|
||||
{
|
||||
world.IssueOrder(new Order("Surrender", world.LocalPlayer.PlayerActor));
|
||||
world.IssueOrder(new Order("Surrender", world.LocalPlayer.PlayerActor, false));
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user