diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 22ae147fe4..934540ba4c 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -390,9 +390,11 @@ namespace OpenRA orderManager.StartGame(); } - public static event Action OnGameStart = () => { }; + public static event Action OnGameStart = () => {}; + public static event Action BeforeGameStart = () => {}; internal static void StartGame() { + BeforeGameStart(); LoadMap(LobbyInfo.GlobalSettings.Map); if (orderManager.GameStarted) return; Widget.SelectedWidget = null; diff --git a/OpenRA.Game/Widgets/VqaPlayerWidget.cs b/OpenRA.Game/Widgets/VqaPlayerWidget.cs index 25b233f730..8c89df33aa 100644 --- a/OpenRA.Game/Widgets/VqaPlayerWidget.cs +++ b/OpenRA.Game/Widgets/VqaPlayerWidget.cs @@ -97,6 +97,19 @@ namespace OpenRA.Widgets Game.Renderer.RgbaSpriteRenderer.DrawSprite(overlaySprite, videoOrigin, "chrome", videoSize); } + public override bool HandleKeyPressInner(KeyInput e) + { + if (e.Event == KeyInputEvent.Down) + { + if (e.KeyChar == 27) // Escape + { + Stop(); + return true; + } + } + return false; + } + public void Play() { PlayThen(() => {}); diff --git a/OpenRA.Mods.RA/Widgets/Delegates/IngameChromeDelegate.cs b/OpenRA.Mods.RA/Widgets/Delegates/IngameChromeDelegate.cs index 89f8a27ac4..01001cce1a 100755 --- a/OpenRA.Mods.RA/Widgets/Delegates/IngameChromeDelegate.cs +++ b/OpenRA.Mods.RA/Widgets/Delegates/IngameChromeDelegate.cs @@ -21,7 +21,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates var gameRoot = r.GetWidget("INGAME_ROOT"); var optionsBG = gameRoot.GetWidget("INGAME_OPTIONS_BG"); - Game.OnGameStart += () => r.OpenWindow("INGAME_ROOT"); + Game.BeforeGameStart += () => r.OpenWindow("INGAME_ROOT"); Game.OnGameStart += () => gameRoot.GetWidget("INGAME_RADAR_BIN").SetWorld(Game.world); r.GetWidget("INGAME_OPTIONS_BUTTON").OnMouseUp = mi => {