From b25eb81a4250a358bfa86adfaac94e37269635ba Mon Sep 17 00:00:00 2001 From: Oliver Brakmann Date: Mon, 11 Apr 2016 22:25:18 +0200 Subject: [PATCH] Fix ready checkbox in the lobby being unusable after installing a map --- OpenRA.Game/Map/MapPreview.cs | 5 +++++ OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs | 4 ++-- .../Widgets/Logic/Lobby/LobbyMapPreviewLogic.cs | 7 +++++-- OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/OpenRA.Game/Map/MapPreview.cs b/OpenRA.Game/Map/MapPreview.cs index 8559ebd923..21a4f77ffe 100644 --- a/OpenRA.Game/Map/MapPreview.cs +++ b/OpenRA.Game/Map/MapPreview.cs @@ -355,6 +355,11 @@ namespace OpenRA return true; } + public void PreloadRules() + { + var unused = Rules; + } + public void UpdateRemoteSearch(MapStatus status, MiniYaml yaml, Action parseMetadata = null) { var newData = innerData.Clone(); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs index ad4f177d31..14b6ead95e 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs @@ -781,7 +781,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic new Task(() => { // Force map rules to be loaded on this background thread - var unused = map.Rules; + map.PreloadRules(); }).Start(); } @@ -799,7 +799,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic new Task(() => { // Force map rules to be loaded on this background thread - var unused = currentMap.Rules; + currentMap.PreloadRules(); Game.RunAfterTick(() => { // Map may have changed in the meantime diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyMapPreviewLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyMapPreviewLogic.cs index 95d7c1c985..1df292adbc 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyMapPreviewLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyMapPreviewLogic.cs @@ -109,8 +109,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic var install = download.GetOrNull("MAP_INSTALL"); if (install != null) { - install.OnClick = () => lobby.Map.Install( - () => orderManager.IssueOrder(Order.Command("state {0}".F(Session.ClientState.NotReady)))); + install.OnClick = () => lobby.Map.Install(() => + { + lobby.Map.PreloadRules(); + Game.RunAfterTick(() => orderManager.IssueOrder(Order.Command("state {0}".F(Session.ClientState.NotReady)))); + }); install.IsHighlighted = () => installHighlighted; } } diff --git a/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs index efece12fb8..f084c991a8 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs @@ -134,7 +134,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic foreach (var p in allPreviews) { p.GetMinimap(); - var unused = p.Rules; + p.PreloadRules(); } }).Start();