diff --git a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs index 698f679156..c64aa3a0e7 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs @@ -217,17 +217,19 @@ namespace OpenRA.Mods.Common.Widgets.Logic } } - Game.OnRemoteDirectConnect += (host, port) => + Game.OnRemoteDirectConnect += OnRemoteDirectConnect; + } + + void OnRemoteDirectConnect(string host, int port) + { + menuType = MenuType.None; + Ui.OpenWindow("MULTIPLAYER_PANEL", new WidgetArgs { - menuType = MenuType.None; - Ui.OpenWindow("MULTIPLAYER_PANEL", new WidgetArgs - { - { "onStart", RemoveShellmapUI }, - { "onExit", () => menuType = MenuType.Main }, - { "directConnectHost", host }, - { "directConnectPort", port }, - }); - }; + { "onStart", RemoveShellmapUI }, + { "onExit", () => menuType = MenuType.Main }, + { "directConnectHost", host }, + { "directConnectPort", port }, + }); } void LoadMapIntoEditor(Map map) @@ -362,5 +364,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic OpenSkirmishLobbyPanel, () => { Game.CloseServer(); menuType = MenuType.Main; }); } + + protected override void Dispose(bool disposing) + { + if (disposing) + Game.OnRemoteDirectConnect -= OnRemoteDirectConnect; + base.Dispose(disposing); + } } }