priority-based selection

This commit is contained in:
Chris Forbes
2009-11-26 21:07:27 +13:00
parent 1948e16a3f
commit 54074de6cf
6 changed files with 94 additions and 17 deletions

View File

@@ -65,13 +65,9 @@ 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>())
.Where(m => m != null && m.self.Owner == Game.LocalPlayer)
@@ -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 )