Begin imposing sanity on order ordering

This commit is contained in:
Paul Chote
2010-09-12 18:10:34 +12:00
parent 1bc2136771
commit 2b6328f0ee
21 changed files with 108 additions and 14 deletions

View File

@@ -174,6 +174,11 @@ namespace OpenRA.Mods.RA
return info.FireDelay;
}
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return mi.Modifiers.HasModifier(Modifiers.Ctrl) ? int.MaxValue : 1;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button == MouseButton.Left) return null;

View File

@@ -23,6 +23,11 @@ namespace OpenRA.Mods.RA
class C4Demolition : IIssueOrder, IResolveOrder, IOrderCursor, IOrderVoice
{
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button != MouseButton.Right) return null;

View File

@@ -26,6 +26,11 @@ namespace OpenRA.Mods.RA
List<Actor> cargo = new List<Actor>();
public IEnumerable<Actor> Passengers { get { return cargo; } }
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button == MouseButton.Right && underCursor == self)

View File

@@ -33,6 +33,11 @@ namespace OpenRA.Mods.RA
chargeTick--;
}
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button == MouseButton.Right && xy == self.Location)

View File

@@ -19,6 +19,11 @@ namespace OpenRA.Mods.RA
class EngineerCaptureInfo : TraitInfo<EngineerCapture> {}
class EngineerCapture : IIssueOrder, IResolveOrder, IOrderCursor, IOrderVoice
{
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button != MouseButton.Right) return null;

View File

@@ -20,6 +20,11 @@ namespace OpenRA.Mods.RA
class EngineerRepair : IIssueOrder, IResolveOrder, IOrderCursor, IOrderVoice
{
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button != MouseButton.Right) return null;

View File

@@ -91,6 +91,11 @@ namespace OpenRA.Mods.RA
proc.Trait<IAcceptOre>().GiveOre(contents.Sum(kv => kv.Key.ValuePerUnit * kv.Value));
contents.Clear();
}
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)

View File

@@ -39,10 +39,15 @@ namespace OpenRA.Mods.RA
Info = info;
}
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
// Force move takes precidence
return mi.Modifiers.HasModifier(Modifiers.Alt) ? int.MaxValue : 0;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button == MouseButton.Left) return null;
if (mi.Modifiers.HasModifier(Modifiers.Ctrl)) return null;
if (underCursor == null)
if (self.TraitOrDefault<IMove>().CanEnterCell(xy))

View File

@@ -32,6 +32,11 @@ namespace OpenRA.Mods.RA
public int2[] minefield = null;
[Sync] int2 minefieldStart;
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button == MouseButton.Right && underCursor == null && mi.Modifiers.HasModifier(Modifiers.Ctrl))

View File

@@ -25,6 +25,11 @@ namespace OpenRA.Mods.RA
class Passenger : IIssueOrder, IResolveOrder, IOrderCursor, IOrderVoice
{
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button != MouseButton.Right)

View File

@@ -46,6 +46,12 @@ namespace OpenRA.Mods.RA
}
}
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
// Force move takes precidence
return mi.Modifiers.HasModifier(Modifiers.Alt) ? int.MaxValue : 0;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button == MouseButton.Left) return null;

View File

@@ -45,6 +45,11 @@ namespace OpenRA.Mods.RA.Render
if (order.OrderString == "Disguise")
disguisedAs = order.TargetActor == self ? null : order.TargetActor;
}
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{

View File

@@ -31,11 +31,15 @@ namespace OpenRA.Mods.RA
Health = self.Trait<Health>();
}
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button != MouseButton.Right) return null;
if (underCursor == null) return null;
if (mi.Modifiers.HasModifier(Modifiers.Ctrl)) return null; // force-fire, so don't do this.
if (self.Info.Traits.Get<RepairableInfo>().RepairBuildings.Contains(underCursor.Info.Name)
&& underCursor.Owner == self.Owner)

View File

@@ -24,6 +24,11 @@ namespace OpenRA.Mods.RA
class RepairableNear : IIssueOrder, IResolveOrder, IOrderCursor
{
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button != MouseButton.Right) return null;

View File

@@ -19,6 +19,11 @@ namespace OpenRA.Mods.RA
class Spy : IIssueOrder, IResolveOrder, IOrderCursor
{
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button != MouseButton.Right) return null;

View File

@@ -38,6 +38,11 @@ namespace OpenRA.Mods.RA
bi = Rules.Info[info.IntoActor].Traits.GetOrDefault<BuildingInfo>();
}
public int OrderPriority(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
return 5;
}
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button == MouseButton.Right && self == underCursor)