priority-based selection
This commit is contained in:
@@ -65,12 +65,8 @@ namespace OpenRa.Game
|
||||
{
|
||||
if (!(orderGenerator is PlaceBuilding))
|
||||
{
|
||||
if (dragStart != xy)
|
||||
orderGenerator = new UnitOrderGenerator(
|
||||
Game.SelectUnitsInBox(Game.CellSize * dragStart, Game.CellSize * xy));
|
||||
else
|
||||
orderGenerator = new UnitOrderGenerator(
|
||||
Game.SelectUnitOrBuilding(Game.CellSize * xy));
|
||||
orderGenerator = new UnitOrderGenerator(
|
||||
Game.SelectActorsInBox(Game.CellSize * dragStart, Game.CellSize * xy));
|
||||
|
||||
var voicedUnit = ((UnitOrderGenerator)orderGenerator).selection
|
||||
.Select(a => a.traits.GetOrDefault<Mobile>())
|
||||
@@ -114,7 +110,7 @@ namespace OpenRa.Game
|
||||
.Select(a => CursorForOrderString( a.OrderString, a.Subject, a.TargetLocation ))
|
||||
.FirstOrDefault(a => a != null) : null;
|
||||
|
||||
return c ?? (Game.SelectUnitOrBuilding(Game.CellSize * dragEnd).Any() ? Cursor.Select : Cursor.Default);
|
||||
return c ?? (Game.SelectActorsInBox(Game.CellSize * dragEnd, Game.CellSize * dragEnd).Any() ? Cursor.Select : Cursor.Default);
|
||||
}
|
||||
|
||||
Cursor CursorForOrderString( string s, Actor a, int2 location )
|
||||
|
||||
@@ -262,15 +262,14 @@ namespace OpenRa.Game
|
||||
yield return new int2(i, j);
|
||||
}
|
||||
|
||||
public static IEnumerable<Actor> SelectUnitsInBox(float2 a, float2 b)
|
||||
public static IEnumerable<Actor> SelectActorsInBox(float2 a, float2 b)
|
||||
{
|
||||
return FindUnits(a, b).Where(x => x.Owner == LocalPlayer && x.traits.Contains<Traits.Unit>());
|
||||
}
|
||||
|
||||
public static IEnumerable<Actor> SelectUnitOrBuilding(float2 a)
|
||||
{
|
||||
var q = FindUnits(a, a);
|
||||
return q.Where(x => x.traits.Contains<Traits.Unit>()).Concat(q).Take(1);
|
||||
return FindUnits(a, b)
|
||||
.GroupBy(x => (x.Owner == LocalPlayer) ? x.unitInfo.SelectionPriority : 0)
|
||||
.OrderByDescending(g => g.Key)
|
||||
.Select( g => g.AsEnumerable() )
|
||||
.DefaultIfEmpty( new Actor[] {} )
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
public static int GetDistanceToBase(int2 b, Player p)
|
||||
|
||||
@@ -52,6 +52,7 @@ namespace OpenRa.Game.GameRules
|
||||
public readonly int Recoil = 0;
|
||||
public readonly string SecondaryAnim = null;
|
||||
public readonly bool MuzzleFlash = false;
|
||||
public readonly int SelectionPriority = 10;
|
||||
|
||||
public UnitInfo(string name) { Name = name; }
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ namespace OpenRa.Game.Graphics
|
||||
lineRenderer.DrawLine(a + b + c, a + c, Color.White, Color.White);
|
||||
lineRenderer.DrawLine(a, a + c, Color.White, Color.White);
|
||||
|
||||
foreach (var u in Game.SelectUnitsInBox(selbox.Value.First, selbox.Value.Second))
|
||||
foreach (var u in Game.SelectActorsInBox(selbox.Value.First, selbox.Value.Second))
|
||||
DrawSelectionBox(u, Color.Yellow, false);
|
||||
}
|
||||
|
||||
|
||||
@@ -46,127 +46,168 @@ Description=Forward Command Post
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
SelectionPriority=3
|
||||
|
||||
[V01]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V02]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V03]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V04]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V05]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V06]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V07]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V08]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V09]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V10]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V11]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V12]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V13]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V14]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V15]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V16]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V17]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V18]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V19]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V20]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V21]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V22]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V23]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V24]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V25]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V26]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V27]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V28]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V29]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V30]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V31]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V32]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V33]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V34]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V35]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V36]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[V37]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=3
|
||||
[BARL]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=0
|
||||
[BRL3]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=0
|
||||
[MISS]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
SelectionPriority=0
|
||||
|
||||
|
||||
|
||||
|
||||
40
units.ini
40
units.ini
@@ -35,19 +35,23 @@ Traits=Unit, Mobile, Turreted, AttackTurreted, RenderUnitTurreted
|
||||
Description=Radar Jammer
|
||||
Traits=Unit, Mobile, RenderUnitSpinner
|
||||
PrimaryOffset=0,4,0,-6
|
||||
SelectionPriority=3
|
||||
[MGG]
|
||||
Description=Mobile Gap Generator
|
||||
Traits=Unit, Mobile, RenderUnitSpinner
|
||||
PrimaryOffset=0,6,0,-3
|
||||
SelectionPriority=3
|
||||
[ARTY]
|
||||
Description=Artillery
|
||||
Traits=Unit, Mobile, AttackBase, RenderUnit
|
||||
[HARV]
|
||||
Description=Ore Truck
|
||||
Traits=Harvester, Unit, Mobile, RenderUnit
|
||||
SelectionPriority=7
|
||||
[MCV]
|
||||
Description=Mobile Construction Vehicle
|
||||
Traits=Unit, Mobile, McvDeploy, RenderUnit
|
||||
SelectionPriority=3
|
||||
[JEEP]
|
||||
Description=Ranger
|
||||
Traits=Unit, Mobile, Turreted, AttackTurreted, RenderUnitTurreted
|
||||
@@ -199,16 +203,19 @@ Description=Iron Curtain
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
SelectionPriority=3
|
||||
[ATEK]
|
||||
Description=Allied Tech Center
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
SelectionPriority=3
|
||||
[PDOX]
|
||||
Description=Chronosphere
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
SelectionPriority=3
|
||||
[WEAP]
|
||||
Description=War Factory
|
||||
Traits=Building, RenderWarFactory, RallyPoint, Production
|
||||
@@ -216,111 +223,132 @@ Dimensions=3,2
|
||||
Footprint=xxx xxx
|
||||
Produces=Vehicle
|
||||
RallyPoint=1,3
|
||||
SelectionPriority=3
|
||||
[SYRD]
|
||||
Description=Shipyard
|
||||
Traits=Building, RenderBuilding, ProductionSurround
|
||||
Dimensions=3,3
|
||||
Footprint=xxx xxx xxx
|
||||
Produces=Ship
|
||||
SelectionPriority=3
|
||||
[SPEN]
|
||||
Description=Sub Pen
|
||||
Traits=Building, RenderBuilding, ProductionSurround
|
||||
Dimensions=3,3
|
||||
Footprint=xxx xxx xxx
|
||||
Produces=Ship
|
||||
SelectionPriority=3
|
||||
[PBOX]
|
||||
Description=Pillbox
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=1,1
|
||||
Footprint=x
|
||||
SelectionPriority=3
|
||||
[HBOX]
|
||||
Description=Camo Pillbox
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=1,1
|
||||
Footprint=x
|
||||
SelectionPriority=3
|
||||
[TSLA]
|
||||
Description=Tesla Coil
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=1,2
|
||||
Footprint=_ x
|
||||
SelectionPriority=3
|
||||
[GUN]
|
||||
Description=Turret
|
||||
Traits=Building, Turreted, RenderBuildingTurreted
|
||||
Dimensions=1,1
|
||||
Footprint=x
|
||||
SelectionPriority=3
|
||||
[AGUN]
|
||||
Description=AA Gun
|
||||
Traits=Building, Turreted, RenderBuildingTurreted
|
||||
Dimensions=1,2
|
||||
Footprint=_ x
|
||||
SelectionPriority=3
|
||||
[FTUR]
|
||||
Description=Flame Turret
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=1,1
|
||||
Footprint=x
|
||||
SelectionPriority=3
|
||||
[FACT]
|
||||
Description=Construction Yard
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=xxx xxx xxx
|
||||
Produces=Building,Defense
|
||||
SelectionPriority=3
|
||||
[PROC]
|
||||
Description=Ore Refinery
|
||||
Traits=Building, RenderBuilding, AcceptsOre
|
||||
Dimensions=3,3
|
||||
Footprint=_x_ xxx x==
|
||||
SelectionPriority=3
|
||||
[SILO]
|
||||
Description=Silo
|
||||
Traits=Building, RenderBuildingOre
|
||||
Dimensions=1,1
|
||||
Footprint=x
|
||||
SelectionPriority=3
|
||||
[HPAD]
|
||||
Description=Helipad
|
||||
Traits=Building, RenderBuilding, Production
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
Produces=Plane
|
||||
SelectionPriority=3
|
||||
[DOME]
|
||||
Description=Radar Dome
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
SelectionPriority=3
|
||||
[GAP]
|
||||
Description=Gap Generator
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=1,2
|
||||
Footprint=_ x
|
||||
SelectionPriority=3
|
||||
[SAM]
|
||||
Description=SAM Site
|
||||
Traits=Building, Turreted, RenderBuildingTurreted
|
||||
Dimensions=2,1
|
||||
Footprint=xx
|
||||
SelectionPriority=3
|
||||
[MSLO]
|
||||
Description=Missile Silo
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,1
|
||||
Footprint=xx
|
||||
SelectionPriority=3
|
||||
[AFLD]
|
||||
Description=Airstrip
|
||||
Traits=Building, RenderBuilding, Production
|
||||
Dimensions=3,2
|
||||
Footprint=xxx xxx
|
||||
Produces=Plane
|
||||
SelectionPriority=3
|
||||
[POWR]
|
||||
Description=Power Plant
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
SelectionPriority=3
|
||||
[APWR]
|
||||
Description=Advanced Power Plant
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=___ xxx xxx
|
||||
SelectionPriority=3
|
||||
[STEK]
|
||||
Description=Soviet Tech Center
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,2
|
||||
Footprint=xxx xxx
|
||||
SelectionPriority=3
|
||||
[BARR]
|
||||
Description=Soviet Barracks
|
||||
Traits=Building, RenderBuilding, RallyPoint, Production
|
||||
@@ -328,6 +356,7 @@ Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
Produces=Infantry
|
||||
RallyPoint=1,3
|
||||
SelectionPriority=3
|
||||
[TENT]
|
||||
Description=Allied Barracks
|
||||
Traits=Building, RenderBuilding, RallyPoint, Production
|
||||
@@ -335,48 +364,59 @@ Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
Produces=Infantry
|
||||
RallyPoint=1,3
|
||||
SelectionPriority=3
|
||||
[KENN]
|
||||
Description=Kennel
|
||||
Traits=Building, RenderBuilding, RallyPoint, Production
|
||||
Dimensions=1,1
|
||||
Footprint=x
|
||||
RallyPoint=1,2
|
||||
SelectionPriority=3
|
||||
[FIX]
|
||||
Description=Service Depot
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=_x_ xxx _x_
|
||||
SelectionPriority=3
|
||||
[FACF]
|
||||
Description=Fake Construction Yard
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=xxx xxx xxx
|
||||
SelectionPriority=3
|
||||
[WEAF]
|
||||
Description=Fake War Factory
|
||||
Traits=Building, RenderWarFactory
|
||||
Dimensions=3,2
|
||||
Footprint=xxx xxx
|
||||
SelectionPriority=3
|
||||
[SYRF]
|
||||
Description=Fake Shipyard
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=xxx xxx xxx
|
||||
SelectionPriority=3
|
||||
[SPEF]
|
||||
Description=Fake Sub Pen
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=xxx xxx xxx
|
||||
SelectionPriority=3
|
||||
[DOMF]
|
||||
Description=Fake Radar Dome
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
SelectionPriority=3
|
||||
;[SBAG]
|
||||
;Description=Sandbags
|
||||
;SelectionPriority=3
|
||||
;[BRIK]
|
||||
;Description=Concrete Wall
|
||||
;SelectionPriority=3
|
||||
;[FENC]
|
||||
;Description=Wire Fence
|
||||
;SelectionPriority=3
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user