Don’t switch mods from inside button click handlers.

Fixes screen flickering and desyncs when returning to the mod chooser.
This commit is contained in:
Paul Chote
2015-06-17 21:55:48 +01:00
parent f72a14faea
commit 75210b692e
5 changed files with 22 additions and 12 deletions

View File

@@ -54,8 +54,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
mainMenu.Get<ButtonWidget>("MODS_BUTTON").OnClick = () =>
{
Game.Settings.Game.PreviousMod = Game.ModData.Manifest.Mod.Id;
Game.InitializeMod("modchooser", null);
// Switching mods changes the world state (by disposing it),
// so we can't do this inside the input handler.
Game.RunAfterTick(() =>
{
Game.Settings.Game.PreviousMod = Game.ModData.Manifest.Mod.Id;
Game.InitializeMod("modchooser", null);
});
};
mainMenu.Get<ButtonWidget>("SETTINGS_BUTTON").OnClick = () =>