made all orders queuable

This commit is contained in:
Bob
2010-11-13 15:52:27 +13:00
parent 04e05d9aed
commit 10ed3db71d
37 changed files with 94 additions and 96 deletions

View File

@@ -37,22 +37,20 @@ namespace OpenRA
this.Queued = queued; this.Queued = queued;
} }
public Order(string orderString, Actor subject) public Order(string orderString, Actor subject, bool queued)
: this(orderString, subject, null, int2.Zero, null, false) { } : this(orderString, subject, null, int2.Zero, null, queued) { }
public Order(string orderString, Actor subject, Actor targetActor) public Order(string orderString, Actor subject, Actor targetActor, bool queued)
: this(orderString, subject, targetActor, int2.Zero, null, false) { } : this(orderString, subject, targetActor, int2.Zero, null, queued) { }
public Order(string orderString, Actor subject, int2 targetLocation)
: this(orderString, subject, null, targetLocation, null, false) { }
public Order(string orderString, Actor subject, int2 targetLocation, bool queued) public Order(string orderString, Actor subject, int2 targetLocation, bool queued)
: this(orderString, subject, null, targetLocation, null, queued) { } : this(orderString, subject, null, targetLocation, null, queued) { }
public Order(string orderString, Actor subject, string targetString) public Order(string orderString, Actor subject, string targetString, bool queued)
: this(orderString, subject, null, int2.Zero, targetString, false) { } : this(orderString, subject, null, int2.Zero, targetString, queued) { }
public Order(string orderString, Actor subject, Actor targetActor, int2 targetLocation) public Order(string orderString, Actor subject, Actor targetActor, int2 targetLocation, bool queued)
: this(orderString, subject, targetActor, targetLocation, null, false) { } : this(orderString, subject, targetActor, targetLocation, null, queued) { }
public Order(string orderString, Actor subject, Actor targetActor, string targetString) public Order(string orderString, Actor subject, Actor targetActor, string targetString, bool queued)
: this(orderString, subject, targetActor, int2.Zero, targetString, false) { } : this(orderString, subject, targetActor, int2.Zero, targetString, queued) { }
public Order(string orderString, Actor subject, int2 targetLocation, string targetString) public Order(string orderString, Actor subject, int2 targetLocation, string targetString, bool queued)
: this(orderString, subject, null, targetLocation, targetString, false) { } : this(orderString, subject, null, targetLocation, targetString, queued) { }
public byte[] Serialize() public byte[] Serialize()
{ {
@@ -120,7 +118,7 @@ namespace OpenRA
var name = r.ReadString(); var name = r.ReadString();
var data = r.ReadString(); var data = r.ReadString();
return new Order( name, null, data ) { IsImmediate = true }; return new Order( name, null, data, false ) { IsImmediate = true };
} }
default: default:
@@ -164,32 +162,32 @@ namespace OpenRA
// Now that Orders are resolved by individual Actors, these are weird; you unpack orders manually, but not pack them. // Now that Orders are resolved by individual Actors, these are weird; you unpack orders manually, but not pack them.
public static Order Chat(string text) public static Order Chat(string text)
{ {
return new Order("Chat", null, text) { IsImmediate = true }; return new Order("Chat", null, text, false) { IsImmediate = true };
} }
public static Order TeamChat(string text) public static Order TeamChat(string text)
{ {
return new Order("TeamChat", null, text) { IsImmediate = true }; return new Order("TeamChat", null, text, false) { IsImmediate = true };
} }
public static Order Command(string text) public static Order Command(string text)
{ {
return new Order("Command", null, text) { IsImmediate = true }; return new Order("Command", null, text, false) { IsImmediate = true };
} }
public static Order StartProduction(Actor subject, string item, int count) public static Order StartProduction(Actor subject, string item, int count)
{ {
return new Order("StartProduction", subject, new int2( count, 0 ), item ); return new Order("StartProduction", subject, new int2( count, 0 ), item, false );
} }
public static Order PauseProduction(Actor subject, string item, bool pause) public static Order PauseProduction(Actor subject, string item, bool pause)
{ {
return new Order("PauseProduction", subject, new int2( pause ? 1 : 0, 0 ), item); return new Order("PauseProduction", subject, new int2( pause ? 1 : 0, 0 ), item, false);
} }
public static Order CancelProduction(Actor subject, string item, int count) public static Order CancelProduction(Actor subject, string item, int count)
{ {
return new Order("CancelProduction", subject, new int2( count, 0 ), item); return new Order("CancelProduction", subject, new int2( count, 0 ), item, false);
} }
} }
} }

View File

@@ -48,7 +48,7 @@ namespace OpenRA.Orders
{ {
world.CancelInputMode(); world.CancelInputMode();
foreach (var subject in subjects) foreach (var subject in subjects)
yield return new Order(order, subject, xy); yield return new Order(order, subject, xy, false);
} }
} }

View File

@@ -46,11 +46,11 @@ namespace OpenRA.Orders
var actorsInvolved = orders.Select(o => o.self).Distinct(); var actorsInvolved = orders.Select(o => o.self).Distinct();
if (actorsInvolved.Any()) if (actorsInvolved.Any())
yield return new Order("CreateGroup", actorsInvolved.First().Owner.PlayerActor, yield return new Order("CreateGroup", actorsInvolved.First().Owner.PlayerActor,
string.Join(",", actorsInvolved.Select(a => a.ActorID.ToString()).ToArray())) string.Join(",", actorsInvolved.Select(a => a.ActorID.ToString()).ToArray()), false)
; ;
foreach (var o in orders) foreach (var o in orders)
yield return CheckSameOrder(o.iot, o.trait.IssueOrder(o.self, o.iot, o.target)); yield return CheckSameOrder(o.iot, o.trait.IssueOrder(o.self, o.iot, o.target, mi.Modifiers.HasModifier(Modifiers.Shift)));
} }
} }

View File

@@ -39,7 +39,7 @@ namespace OpenRA.Traits
public interface IIssueOrder public interface IIssueOrder
{ {
IEnumerable<IOrderTargeter> Orders { get; } IEnumerable<IOrderTargeter> Orders { get; }
Order IssueOrder( Actor self, IOrderTargeter order, Target target ); Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued );
} }
public interface IOrderTargeter public interface IOrderTargeter
{ {

View File

@@ -43,7 +43,7 @@ namespace OpenRA.Widgets.Delegates
() => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().DisableShroud; () => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().DisableShroud;
devmodeBG.GetWidget<CheckboxWidget>("CHECKBOX_SHROUD").OnMouseDown = mi => devmodeBG.GetWidget<CheckboxWidget>("CHECKBOX_SHROUD").OnMouseDown = mi =>
{ {
world.IssueOrder(new Order("DevShroud", world.LocalPlayer.PlayerActor)); world.IssueOrder(new Order("DevShroud", world.LocalPlayer.PlayerActor, false));
return true; return true;
}; };
@@ -51,7 +51,7 @@ namespace OpenRA.Widgets.Delegates
() => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().UnitInfluenceDebug; () => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().UnitInfluenceDebug;
devmodeBG.GetWidget("CHECKBOX_UNITDEBUG").OnMouseDown = mi => devmodeBG.GetWidget("CHECKBOX_UNITDEBUG").OnMouseDown = mi =>
{ {
world.IssueOrder(new Order("DevUnitDebug", world.LocalPlayer.PlayerActor)); world.IssueOrder(new Order("DevUnitDebug", world.LocalPlayer.PlayerActor, false));
return true; return true;
}; };
@@ -59,13 +59,13 @@ namespace OpenRA.Widgets.Delegates
() => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().PathDebug; () => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().PathDebug;
devmodeBG.GetWidget("CHECKBOX_PATHDEBUG").OnMouseDown = mi => devmodeBG.GetWidget("CHECKBOX_PATHDEBUG").OnMouseDown = mi =>
{ {
world.IssueOrder(new Order("DevPathDebug", world.LocalPlayer.PlayerActor)); world.IssueOrder(new Order("DevPathDebug", world.LocalPlayer.PlayerActor, false));
return true; return true;
}; };
devmodeBG.GetWidget<ButtonWidget>("GIVE_CASH").OnMouseUp = mi => devmodeBG.GetWidget<ButtonWidget>("GIVE_CASH").OnMouseUp = mi =>
{ {
world.IssueOrder(new Order("DevGiveCash", world.LocalPlayer.PlayerActor)); world.IssueOrder(new Order("DevGiveCash", world.LocalPlayer.PlayerActor, false));
return true; return true;
}; };
@@ -73,7 +73,7 @@ namespace OpenRA.Widgets.Delegates
() => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().FastBuild; () => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().FastBuild;
devmodeBG.GetWidget<CheckboxWidget>("INSTANT_BUILD").OnMouseDown = mi => devmodeBG.GetWidget<CheckboxWidget>("INSTANT_BUILD").OnMouseDown = mi =>
{ {
world.IssueOrder(new Order("DevFastBuild", world.LocalPlayer.PlayerActor)); world.IssueOrder(new Order("DevFastBuild", world.LocalPlayer.PlayerActor, false));
return true; return true;
}; };
@@ -81,7 +81,7 @@ namespace OpenRA.Widgets.Delegates
() => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().FastCharge; () => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().FastCharge;
devmodeBG.GetWidget<CheckboxWidget>("INSTANT_CHARGE").OnMouseDown = mi => devmodeBG.GetWidget<CheckboxWidget>("INSTANT_CHARGE").OnMouseDown = mi =>
{ {
world.IssueOrder(new Order("DevFastCharge", world.LocalPlayer.PlayerActor)); world.IssueOrder(new Order("DevFastCharge", world.LocalPlayer.PlayerActor, false));
return true; return true;
}; };
@@ -89,13 +89,13 @@ namespace OpenRA.Widgets.Delegates
() => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().AllTech; () => world.LocalPlayer.PlayerActor.Trait<DeveloperMode>().AllTech;
devmodeBG.GetWidget<CheckboxWidget>("ENABLE_TECH").OnMouseDown = mi => devmodeBG.GetWidget<CheckboxWidget>("ENABLE_TECH").OnMouseDown = mi =>
{ {
world.IssueOrder(new Order("DevEnableTech", world.LocalPlayer.PlayerActor)); world.IssueOrder(new Order("DevEnableTech", world.LocalPlayer.PlayerActor, false));
return true; return true;
}; };
devmodeBG.GetWidget<ButtonWidget>("GIVE_EXPLORATION").OnMouseUp = mi => devmodeBG.GetWidget<ButtonWidget>("GIVE_EXPLORATION").OnMouseUp = mi =>
{ {
world.IssueOrder(new Order("DevGiveExploration", world.LocalPlayer.PlayerActor)); world.IssueOrder(new Order("DevGiveExploration", world.LocalPlayer.PlayerActor, false));
return true; return true;
}; };

View File

@@ -139,7 +139,7 @@ namespace OpenRA.Widgets.Delegates
var nextStance = GetNextStance((Stance)Enum.Parse(typeof(Stance), bw.Text)); var nextStance = GetNextStance((Stance)Enum.Parse(typeof(Stance), bw.Text));
world.IssueOrder(new Order("SetStance", world.LocalPlayer.PlayerActor, world.IssueOrder(new Order("SetStance", world.LocalPlayer.PlayerActor,
new int2(p.Index, (int)nextStance))); new int2(p.Index, (int)nextStance), false));
bw.Text = nextStance.ToString(); bw.Text = nextStance.ToString();
} }

View File

@@ -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" ) 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" ) 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; return null;
} }

View File

@@ -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" ) 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" ) 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; return null;
} }

View File

@@ -133,14 +133,14 @@ namespace OpenRA.Mods.RA
get { yield return new AttackOrderTargeter( "Attack", 6, IsHeal ); } 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( order is AttackOrderTargeter )
{ {
if( target.IsActor ) if( target.IsActor )
return new Order( "Attack", self, target.Actor ); return new Order( "Attack", self, target.Actor, queued );
else else
return new Order( "Attack", self, Util.CellContaining( target.CenterLocation ) ); return new Order( "Attack", self, Util.CellContaining( target.CenterLocation ), queued );
} }
return null; return null;
} }
@@ -194,7 +194,7 @@ namespace OpenRA.Mods.RA
if (target != null) if (target != null)
{ {
if (allowMovement) if (allowMovement)
attack.ResolveOrder(self, new Order("Attack", self, target)); attack.ResolveOrder(self, new Order("Attack", self, target, false));
else else
attack.target = Target.FromActor(target); // for turreted things on rails. attack.target = Target.FromActor(target); // for turreted things on rails.
} }

View File

@@ -22,7 +22,7 @@ namespace OpenRA.Mods.RA
{ {
var attack = self.Trait<AttackBase>(); var attack = self.Trait<AttackBase>();
if (target != null) if (target != null)
attack.ResolveOrder(self, new Order("Attack", self, target)); attack.ResolveOrder(self, new Order("Attack", self, target, false));
else else
if (attack.IsAttacking) if (attack.IsAttacking)
self.CancelActivity(); self.CancelActivity();

View File

@@ -31,10 +31,10 @@ namespace OpenRA.Mods.RA
get { yield return new UnitTraitOrderTargeter<Building>( "C4", 6, "c4", true, false ); } 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" ) if( order.OrderID == "C4" )
return new Order( "C4", self, target.Actor ); return new Order( "C4", self, target.Actor, queued );
return null; return null;
} }

View File

@@ -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" ) if( order.OrderID == "Unload" )
return new Order( order.OrderID, self ); return new Order( order.OrderID, self, queued );
if( order.OrderID == "ReverseEnterTransport" ) if( order.OrderID == "ReverseEnterTransport" )
return new Order( order.OrderID, self, target.Actor ); return new Order( order.OrderID, self, target.Actor, queued );
return null; return null;
} }
@@ -71,7 +71,7 @@ namespace OpenRA.Mods.RA
if( order.TargetActor != null && order.Subject.Owner == order.TargetActor.Owner ) if( order.TargetActor != null && order.Subject.Owner == order.TargetActor.Owner )
{ {
var passenger = order.TargetActor.Trait<Passenger>(); 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 ) );
} }
} }
} }

View File

@@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA
get { yield return new DeployOrderTargeter( "ChronoshiftDeploy", 5, () => chargeTick <= 0 ); } 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( order.OrderID == "ChronoshiftDeploy" )
if (chargeTick <= 0) if (chargeTick <= 0)

View File

@@ -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" ) if( order.OrderID == "CaptureBuilding" )
return new Order( order.OrderID, self, target.Actor ); return new Order( order.OrderID, self, target.Actor, queued );
return null; return null;
} }

View File

@@ -27,10 +27,10 @@ namespace OpenRA.Mods.RA
get { yield return new EngineerRepairOrderTargeter(); } 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" ) if( order.OrderID == "EngineerRepair" )
return new Order( order.OrderID, self, target.Actor ); return new Order( order.OrderID, self, target.Actor, queued );
return null; return null;
} }

View File

@@ -302,7 +302,7 @@ namespace OpenRA.Mods.RA
int2 newRallyPoint = ChooseRallyLocationNear(a.Location); int2 newRallyPoint = ChooseRallyLocationNear(a.Location);
newRallyPoint.X += 4; newRallyPoint.X += 4;
newRallyPoint.Y += 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); range = Math.Max(range, loopCount / 2);
if (loopCount > 10) return false; if (loopCount > 10) return false;
} while (!a.Trait<IMove>().CanEnterCell(xy) && xy != a.Location); } 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; return true;
} }
@@ -348,7 +348,7 @@ namespace OpenRA.Mods.RA
if (mcv != null) if (mcv != null)
{ {
baseCenter = mcv.Location; baseCenter = mcv.Location;
world.IssueOrder(new Order("DeployTransform", mcv)); world.IssueOrder(new Order("DeployTransform", mcv, false));
} }
else else
BotDebug("AI: Can't find the MCV."); BotDebug("AI: Can't find the MCV.");
@@ -454,7 +454,7 @@ namespace OpenRA.Mods.RA
else else
{ {
ai.world.IssueOrder(new Order("PlaceBuilding", ai.p.PlayerActor, ai.world.IssueOrder(new Order("PlaceBuilding", ai.p.PlayerActor,
location.Value, currentBuilding.Item)); location.Value, currentBuilding.Item, false));
} }
} }
break; break;

View File

@@ -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" ) 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" ) 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; return null;
} }

View File

@@ -38,13 +38,13 @@ namespace OpenRA.Mods.RA
get { yield return new BeginMinefieldOrderTargeter(); } 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 ) if( order is BeginMinefieldOrderTargeter )
{ {
var start = Traits.Util.CellContaining( target.CenterLocation ); var start = Traits.Util.CellContaining( target.CenterLocation );
self.World.OrderGenerator = new MinefieldOrderGenerator( self, start ); self.World.OrderGenerator = new MinefieldOrderGenerator( self, start );
return new Order( "BeginMinefield", self, start ); return new Order( "BeginMinefield", self, start, false );
} }
return null; return null;
} }
@@ -110,7 +110,7 @@ namespace OpenRA.Mods.RA
if( mi.Button == MouseButton.Right && underCursor == null ) if( mi.Button == MouseButton.Right && underCursor == null )
{ {
minelayer.World.CancelInputMode(); minelayer.World.CancelInputMode();
yield return new Order( "PlaceMinefield", minelayer, xy ); yield return new Order( "PlaceMinefield", minelayer, xy, false );
} }
} }

View File

@@ -140,12 +140,12 @@ namespace OpenRA.Mods.RA.Move
public IEnumerable<IOrderTargeter> Orders { get { yield return new MoveOrderTargeter( Info ); } } 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 // 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( order is MoveOrderTargeter )
{ {
if( Info.OnRails ) return null; 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; return null;
} }

View File

@@ -54,9 +54,9 @@ namespace OpenRA.Mods.RA.Orders
} }
if (Rules.Info[ Building ].Traits.Contains<LineBuildInfo>()) 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 else
yield return new Order("PlaceBuilding", Producer.Owner.PlayerActor, topLeft, Building); yield return new Order("PlaceBuilding", Producer.Owner.PlayerActor, topLeft, Building, false);
} }
} }

View File

@@ -35,7 +35,7 @@ namespace OpenRA.Mods.RA.Orders
.FirstOrDefault(); .FirstOrDefault();
if (underCursor != null) if (underCursor != null)
yield return new Order("PowerDown", underCursor); yield return new Order("PowerDown", underCursor, false);
} }
} }

View File

@@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA.Orders
if (underCursor.Info.Traits.Contains<RepairableBuildingInfo>() if (underCursor.Info.Traits.Contains<RepairableBuildingInfo>()
&& underCursor.GetDamageState() > DamageState.Undamaged) && underCursor.GetDamageState() > DamageState.Undamaged)
yield return new Order("Repair", underCursor); yield return new Order("Repair", underCursor, false);
} }
} }

View File

@@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA.Orders
var building = underCursor != null ? underCursor.Info.Traits.Get<BuildingInfo>() : null; var building = underCursor != null ? underCursor.Info.Traits.Get<BuildingInfo>() : null;
if (building != null && !building.Unsellable) if (building != null && !building.Unsellable)
yield return new Order("Sell", underCursor); yield return new Order("Sell", underCursor, false);
} }
} }

View File

@@ -33,7 +33,7 @@ namespace OpenRA.Mods.RA.Orders
} }
if (world.LocalPlayer.Shroud.IsExplored(xy)) 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 ) { } public void Tick( World world ) { }

View File

@@ -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" ) if( order.OrderID == "EnterTransport" )
return new Order( order.OrderID, self, target.Actor ); return new Order( order.OrderID, self, target.Actor, queued );
return null; return null;
} }

View File

@@ -37,7 +37,7 @@ namespace OpenRA.Mods.RA
if (client.State == Session.ClientState.Disconnected) if (client.State == Session.ClientState.Disconnected)
{ {
Disconnected = true; /* dont call this multiple times! */ Disconnected = true; /* dont call this multiple times! */
self.World.IssueOrder(new Order("Surrender", self)); self.World.IssueOrder(new Order("Surrender", self, false));
} }
} }
} }

View File

@@ -32,10 +32,10 @@ namespace OpenRA.Mods.RA
get { yield return new DeployOrderTargeter( "PrimaryProducer", 1 ); } 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" ) if( order.OrderID == "PrimaryProducer" )
return new Order( order.OrderID, self ); return new Order( order.OrderID, self, false );
return null; return null;
} }

View File

@@ -48,10 +48,10 @@ namespace OpenRA.Mods.RA
get { yield return new RallyPointOrderTargeter(); } 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" ) 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; return null;
} }

View File

@@ -62,10 +62,10 @@ namespace OpenRA.Mods.RA.Render
get { yield return new UnitTraitOrderTargeter<RenderInfantry>( "Disguise", 5, "ability", true, true ); } 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" ) if( order.OrderID == "Disguise" )
return new Order( order.OrderID, self, target.Actor ); return new Order( order.OrderID, self, target.Actor, queued );
return null; return null;
} }

View File

@@ -42,10 +42,10 @@ namespace OpenRA.Mods.RA
get { yield return new EnterOrderTargeter<Building>( "Repair", 5, false, true, target => CanRepairAt( target ), _ => CanRepair() ); } 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" ) if( order.OrderID == "Repair" )
return new Order( order.OrderID, self, target.Actor ); return new Order( order.OrderID, self, target.Actor, queued );
return null; return null;
} }

View File

@@ -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" ) if( order.OrderID == "RepairNear" )
return new Order( order.OrderID, self, target.Actor ); return new Order( order.OrderID, self, target.Actor, queued );
return null; return null;
} }

View File

@@ -26,10 +26,10 @@ namespace OpenRA.Mods.RA
get { yield return new UnitTraitOrderTargeter<IAcceptSpy>( "SpyInfiltrate", 5, "enter", true, false ); } 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" ) if( order.OrderID == "SpyInfiltrate" )
return new Order( order.OrderID, self, target.Actor ); return new Order( order.OrderID, self, target.Actor, queued );
return null; return null;
} }

View File

@@ -79,7 +79,7 @@ namespace OpenRA.Mods.RA
&& a.HasTrait<Selectable>()).FirstOrDefault(); && a.HasTrait<Selectable>()).FirstOrDefault();
if (underCursor != null) if (underCursor != null)
yield return new Order("ChronosphereSelect", world.LocalPlayer.PlayerActor, underCursor); yield return new Order("ChronosphereSelect", world.LocalPlayer.PlayerActor, underCursor, false);
} }
yield break; yield break;
@@ -128,7 +128,7 @@ namespace OpenRA.Mods.RA
{ {
// Cannot chronoshift into unexplored location // Cannot chronoshift into unexplored location
if (world.LocalPlayer.Shroud.IsExplored(xy)) 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) public void Tick(World world)

View File

@@ -77,7 +77,7 @@ namespace OpenRA.Mods.RA
&& a.HasTrait<Selectable>()).FirstOrDefault(); && a.HasTrait<Selectable>()).FirstOrDefault();
if( underCursor != null ) if( underCursor != null )
yield return new Order( "IronCurtain", underCursor.Owner.PlayerActor, underCursor ); yield return new Order( "IronCurtain", underCursor.Owner.PlayerActor, underCursor, false );
} }
} }

View File

@@ -26,7 +26,7 @@ namespace OpenRA.Mods.RA
protected override void OnActivate() 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) public void ResolveOrder(Actor self, Order order)

View File

@@ -56,10 +56,10 @@ namespace OpenRA.Mods.RA
get { yield return new DeployOrderTargeter( "DeployTransform", 5, () => CanDeploy() ); } 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" ) if( order.OrderID == "DeployTransform" )
return new Order( order.OrderID, self ); return new Order( order.OrderID, self, queued );
return null; return null;
} }

View File

@@ -51,7 +51,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
optionsBG.GetWidget("SURRENDER").OnMouseUp = mi => optionsBG.GetWidget("SURRENDER").OnMouseUp = mi =>
{ {
world.IssueOrder(new Order("Surrender", world.LocalPlayer.PlayerActor)); world.IssueOrder(new Order("Surrender", world.LocalPlayer.PlayerActor, false));
return true; return true;
}; };