GotoNextBase dies in a fire; INotifyKeyPress dies
This commit is contained in:
@@ -229,7 +229,6 @@ namespace OpenRA.Traits
|
|||||||
bool TargetableBy(Actor self, Actor byActor);
|
bool TargetableBy(Actor self, Actor byActor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface INotifyKeyPress { bool KeyPressed(Actor self, KeyInput e); }
|
|
||||||
public interface INotifyStanceChanged { void StanceChanged(Actor self, Player a, Player b,
|
public interface INotifyStanceChanged { void StanceChanged(Actor self, Player a, Player b,
|
||||||
Stance oldStance, Stance newStance); }
|
Stance oldStance, Stance newStance); }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,9 +134,6 @@ namespace OpenRA.Widgets
|
|||||||
|
|
||||||
bool handled = false;
|
bool handled = false;
|
||||||
|
|
||||||
foreach (var t in world.WorldActor.TraitsImplementing<INotifyKeyPress>())
|
|
||||||
handled = (t.KeyPressed(world.WorldActor, e)) ? true : handled;
|
|
||||||
|
|
||||||
if (handled) return true;
|
if (handled) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -43,6 +43,9 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
|
|
||||||
if (e.Modifiers == Modifiers.None)
|
if (e.Modifiers == Modifiers.None)
|
||||||
{
|
{
|
||||||
|
if (e.KeyChar == '\b' || e.KeyChar == (char)127)
|
||||||
|
return CycleBases();
|
||||||
|
|
||||||
if (e.KeyChar == AttackMoveKey)
|
if (e.KeyChar == AttackMoveKey)
|
||||||
return PerformAttackMove();
|
return PerformAttackMove();
|
||||||
|
|
||||||
@@ -95,5 +98,24 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
PerformKeyboardOrderOnSelection(a => new Order("Unload", a, false));
|
PerformKeyboardOrderOnSelection(a => new Order("Unload", a, false));
|
||||||
return true;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
using System.Linq;
|
|
||||||
using OpenRA.Traits;
|
|
||||||
|
|
||||||
namespace OpenRA.Mods.RA
|
|
||||||
{
|
|
||||||
public class GotoNextBaseInfo : TraitInfo<GotoNextBase>
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class GotoNextBase : INotifyKeyPress
|
|
||||||
{
|
|
||||||
public bool KeyPressed(Actor self, KeyInput e)
|
|
||||||
{
|
|
||||||
if (self.World.LocalPlayer == null) return false;
|
|
||||||
|
|
||||||
if (e.KeyChar == '\b' || e.KeyChar == (char)127)
|
|
||||||
{
|
|
||||||
CycleBases(self.World);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void CycleBases(World world)
|
|
||||||
{
|
|
||||||
var bases = world.Queries.OwnedBy[world.LocalPlayer].WithTrait<BaseBuilding>().ToArray();
|
|
||||||
if (!bases.Any()) return;
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -151,7 +151,6 @@ World:
|
|||||||
WaterChance: 0
|
WaterChance: 0
|
||||||
PathFinder:
|
PathFinder:
|
||||||
ValidateOrder:
|
ValidateOrder:
|
||||||
GotoNextBase:
|
|
||||||
|
|
||||||
CRATE:
|
CRATE:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
|
|||||||
@@ -195,7 +195,6 @@ World:
|
|||||||
Shroud:
|
Shroud:
|
||||||
PathFinder:
|
PathFinder:
|
||||||
ValidateOrder:
|
ValidateOrder:
|
||||||
GotoNextBase:
|
|
||||||
|
|
||||||
MINP:
|
MINP:
|
||||||
Mine:
|
Mine:
|
||||||
|
|||||||
Reference in New Issue
Block a user