GotoNextBase dies in a fire; INotifyKeyPress dies

This commit is contained in:
Chris Forbes
2011-03-13 11:42:17 +13:00
parent 3c41efea04
commit 116ef15fdb
6 changed files with 22 additions and 50 deletions

View File

@@ -43,6 +43,9 @@ namespace OpenRA.Mods.RA.Widgets
if (e.Modifiers == Modifiers.None)
{
if (e.KeyChar == '\b' || e.KeyChar == (char)127)
return CycleBases();
if (e.KeyChar == AttackMoveKey)
return PerformAttackMove();
@@ -95,5 +98,24 @@ namespace OpenRA.Mods.RA.Widgets
PerformKeyboardOrderOnSelection(a => new Order("Unload", a, false));
return true;
}
bool CycleBases()
{
var bases = World.Queries.OwnedBy[World.LocalPlayer].WithTrait<BaseBuilding>().ToArray();
if (!bases.Any()) return true;
var next = bases
.Select(b => b.Actor)
.SkipWhile(b => !World.Selection.Actors.Contains(b))
.Skip(1)
.FirstOrDefault();
if (next == null)
next = bases.Select(b => b.Actor).First();
World.Selection.Combine(World, new Actor[] { next }, false, true);
Game.viewport.Center(World.Selection.Actors);
return true;
}
}
}