diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 0157261181..b4af0f25d4 100755 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -29,6 +29,8 @@ namespace OpenRA { public static int CellSize { get { return modData.Manifest.TileSize; } } + public static MouseButtonPreference mouseButtonPreference = new MouseButtonPreference(); + public static ModData modData; static WorldRenderer worldRenderer; diff --git a/OpenRA.Game/InputHandler.cs b/OpenRA.Game/InputHandler.cs index 832757fd6e..fc76273f2c 100755 --- a/OpenRA.Game/InputHandler.cs +++ b/OpenRA.Game/InputHandler.cs @@ -1,6 +1,6 @@ #region Copyright & License Information /* - * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) + * Copyright 2007-2013 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made * available to you under the terms of the GNU General Public License * as published by the Free Software Foundation. For more information, @@ -15,32 +15,53 @@ namespace OpenRA public class NullInputHandler : IInputHandler { // ignore all input - public void ModifierKeys( Modifiers mods ) { } - public void OnKeyInput( KeyInput input ) { } - public void OnMouseInput( MouseInput input ) { } + public void ModifierKeys(Modifiers mods) { } + public void OnKeyInput(KeyInput input) { } + public void OnMouseInput(MouseInput input) { } } public class DefaultInputHandler : IInputHandler { readonly World world; - public DefaultInputHandler( World world ) + public DefaultInputHandler(World world) { this.world = world; } - public void ModifierKeys( Modifiers mods ) + public void ModifierKeys(Modifiers mods) { - Game.HandleModifierKeys( mods ); + Game.HandleModifierKeys(mods); } - public void OnKeyInput( KeyInput input ) + public void OnKeyInput(KeyInput input) { Sync.CheckSyncUnchanged(world, () => Ui.HandleKeyPress(input)); } - public void OnMouseInput( MouseInput input ) + public void OnMouseInput(MouseInput input) { Sync.CheckSyncUnchanged(world, () => Ui.HandleInput(input)); } } + + public class MouseButtonPreference + { + + public MouseButton Action + { + get + { + return Game.Settings.Game.UseClassicMouseStyle ? MouseButton.Left : MouseButton.Right; + } + } + + public MouseButton Cancel + { + get + { + return Game.Settings.Game.UseClassicMouseStyle ? MouseButton.Right : MouseButton.Left; + } + } + } + } diff --git a/OpenRA.Game/Orders/UnitOrderGenerator.cs b/OpenRA.Game/Orders/UnitOrderGenerator.cs index 59fa07bb8c..f24de9b9c3 100644 --- a/OpenRA.Game/Orders/UnitOrderGenerator.cs +++ b/OpenRA.Game/Orders/UnitOrderGenerator.cs @@ -69,15 +69,13 @@ namespace OpenRA.Orders static UnitOrderResult OrderForUnit(Actor self, CPos xy, MouseInput mi, Actor underCursor) { - var ActionMouseButton = (Game.Settings.Game.UseClassicMouseStyle) ? MouseButton.Left : MouseButton.Right; - if (self.Owner != self.World.LocalPlayer) return null; if (self.Destroyed) return null; - if (mi.Button == ActionMouseButton) + if (mi.Button == Game.mouseButtonPreference.Action) { foreach( var o in self.TraitsImplementing() .SelectMany(trait => trait.Orders diff --git a/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs b/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs index 85cfce62bc..de7dc03c7b 100644 --- a/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs +++ b/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs @@ -156,7 +156,7 @@ namespace OpenRA.Widgets var mi = new MouseInput { Location = pos, - Button = Game.Settings.Game.UseClassicMouseStyle ? MouseButton.Left : MouseButton.Right, + Button = Game.mouseButtonPreference.Action, Modifiers = Game.GetModifierKeys() }; diff --git a/OpenRA.Mods.RA/ChronoshiftDeploy.cs b/OpenRA.Mods.RA/ChronoshiftDeploy.cs index b16ee95697..dcb38027f3 100644 --- a/OpenRA.Mods.RA/ChronoshiftDeploy.cs +++ b/OpenRA.Mods.RA/ChronoshiftDeploy.cs @@ -112,7 +112,7 @@ namespace OpenRA.Mods.RA public IEnumerable Order(World world, CPos xy, MouseInput mi) { - if (mi.Button == (Game.Settings.Game.UseClassicMouseStyle ? MouseButton.Right : MouseButton.Left)) + if (mi.Button == Game.mouseButtonPreference.Cancel) { world.CancelInputMode(); yield break; diff --git a/OpenRA.Mods.RA/Minelayer.cs b/OpenRA.Mods.RA/Minelayer.cs index 88356f0031..7b76ec7f44 100644 --- a/OpenRA.Mods.RA/Minelayer.cs +++ b/OpenRA.Mods.RA/Minelayer.cs @@ -100,7 +100,7 @@ namespace OpenRA.Mods.RA public IEnumerable Order(World world, CPos xy, MouseInput mi) { - if (mi.Button == (Game.Settings.Game.UseClassicMouseStyle ? MouseButton.Right : MouseButton.Left)) + if (mi.Button == Game.mouseButtonPreference.Cancel) { world.CancelInputMode(); yield break; @@ -111,8 +111,7 @@ namespace OpenRA.Mods.RA ? a.Info.Traits.Get().Priority : int.MinValue) .FirstOrDefault(); - if (mi.Button == (Game.Settings.Game.UseClassicMouseStyle ? MouseButton.Left : MouseButton.Right) - && underCursor == null) + if (mi.Button == Game.mouseButtonPreference.Action && underCursor == null) { minelayer.World.CancelInputMode(); yield return new Order("PlaceMinefield", minelayer, false) { TargetLocation = xy }; diff --git a/OpenRA.Mods.RA/Widgets/WorldCommandWidget.cs b/OpenRA.Mods.RA/Widgets/WorldCommandWidget.cs index 30df3030cb..3c1262e4a6 100644 --- a/OpenRA.Mods.RA/Widgets/WorldCommandWidget.cs +++ b/OpenRA.Mods.RA/Widgets/WorldCommandWidget.cs @@ -86,11 +86,9 @@ namespace OpenRA.Mods.RA.Widgets var actors = World.Selection.Actors .Where(a => a.Owner == World.LocalPlayer).ToArray(); - var ActionMouseButton = (Game.Settings.Game.UseClassicMouseStyle) ? MouseButton.Left : MouseButton.Right; - if (actors.Length > 0) World.OrderGenerator = new GenericSelectTarget(actors, "AttackMove", - "attackmove", ActionMouseButton); + "attackmove", Game.mouseButtonPreference.Action); return true; }