Add frontend code for issuing assault move orders.

This commit is contained in:
Paul Chote
2017-09-09 16:23:28 +01:00
committed by reaperrr
parent ffee45cd76
commit a81749e102
10 changed files with 107 additions and 5 deletions

View File

@@ -56,8 +56,7 @@ namespace OpenRA.Mods.Common.Widgets
BindButtonIcon(attackMoveButton);
attackMoveButton.IsDisabled = () => { UpdateStateIfNecessary(); return attackMoveDisabled; };
attackMoveButton.IsHighlighted = () => world.OrderGenerator is GenericSelectTarget
&& ((GenericSelectTarget)world.OrderGenerator).OrderName == "AttackMove";
attackMoveButton.IsHighlighted = () => world.OrderGenerator is AttackMoveOrderGenerator;
Action<bool> toggle = allowCancel =>
{
@@ -67,8 +66,7 @@ namespace OpenRA.Mods.Common.Widgets
world.CancelInputMode();
}
else
world.OrderGenerator = new GenericSelectTarget(selectedActors,
"AttackMove", "attackmove", Game.Settings.Game.MouseButtonPreference.Action);
world.OrderGenerator = new AttackMoveOrderGenerator(selectedActors, Game.Settings.Game.MouseButtonPreference.Action);
};
attackMoveButton.OnClick = () => toggle(true);
@@ -97,7 +95,9 @@ namespace OpenRA.Mods.Common.Widgets
BindButtonIcon(forceAttackButton);
forceAttackButton.IsDisabled = () => { UpdateStateIfNecessary(); return forceAttackDisabled; };
forceAttackButton.IsHighlighted = () => !forceAttackButton.IsDisabled() && IsForceModifiersActive(Modifiers.Ctrl);
forceAttackButton.IsHighlighted = () => !forceAttackButton.IsDisabled() && IsForceModifiersActive(Modifiers.Ctrl)
&& !(world.OrderGenerator is AttackMoveOrderGenerator);
forceAttackButton.OnClick = () =>
{
if (forceAttackButton.IsHighlighted())
@@ -201,6 +201,23 @@ namespace OpenRA.Mods.Common.Widgets
world.OrderGenerator = new ForceModifiersOrderGenerator(Modifiers.Shift, false);
};
}
var keyOverrides = widget.GetOrNull<LogicKeyListenerWidget>("MODIFIER_OVERRIDES");
if (keyOverrides != null)
{
keyOverrides.OnKeyPress = ki =>
{
// HACK: enable attack move to be triggered if the ctrl key is pressed
var modified = new Hotkey(ki.Key, ki.Modifiers & ~Modifiers.Ctrl);
if (attackMoveButton.Key.GetValue() == modified)
{
attackMoveButton.OnKeyPress(ki);
return true;
}
return false;
};
}
}
public override void Tick()