diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index c3b170274d..249a82fece 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -281,14 +281,30 @@ namespace OpenRA Sound.Initialize(); ModData = new ModData(mod, !Settings.Server.Dedicated); - ModData.MountFiles(); - ModData.InitializeLoaders(); - if (!Settings.Server.Dedicated) - Renderer.InitializeFonts(ModData.Manifest); using (new PerfTimer("LoadMaps")) ModData.MapCache.LoadMaps(); + if (Settings.Server.Dedicated) + { + RunDedicatedServer(); + Environment.Exit(0); + } + + var installData = ModData.Manifest.Get(); + var isModContentInstalled = installData.TestFiles.All(f => File.Exists(Platform.ResolvePath(f))); + + // Mod assets are missing! + if (!isModContentInstalled) + { + InitializeMod("modchooser", new Arguments()); + return; + } + + ModData.MountFiles(); + ModData.InitializeLoaders(); + Renderer.InitializeFonts(ModData.Manifest); + if (Cursor != null) Cursor.Dispose(); @@ -320,39 +336,38 @@ namespace OpenRA JoinLocal(); - if (Settings.Server.Dedicated) + ModData.LoadScreen.StartGame(args); + } + + public static void RunDedicatedServer() + { + while (true) { + Settings.Server.Map = WidgetUtils.ChooseInitialMap(Settings.Server.Map); + Settings.Save(); + CreateServer(new ServerSettings(Settings.Server)); + while (true) { - Settings.Server.Map = WidgetUtils.ChooseInitialMap(Settings.Server.Map); - Settings.Save(); - CreateServer(new ServerSettings(Settings.Server)); - while (true) + Thread.Sleep(100); + + if (server.State == Server.ServerState.GameStarted && server.Conns.Count < 1) { - Thread.Sleep(100); - - if (server.State == Server.ServerState.GameStarted && server.Conns.Count < 1) - { - Console.WriteLine("No one is playing, shutting down..."); - server.Shutdown(); - break; - } + Console.WriteLine("No one is playing, shutting down..."); + server.Shutdown(); + break; } - - if (Settings.Server.DedicatedLoop) - { - Console.WriteLine("Starting a new server instance..."); - ModData.MapCache.LoadMaps(); - continue; - } - - break; } - Environment.Exit(0); + if (Settings.Server.DedicatedLoop) + { + Console.WriteLine("Starting a new server instance..."); + ModData.MapCache.LoadMaps(); + continue; + } + + break; } - else - ModData.LoadScreen.StartGame(args); } public static void LoadEditor(string mapUid) diff --git a/OpenRA.Mods.Common/LoadScreens/BlankLoadScreen.cs b/OpenRA.Mods.Common/LoadScreens/BlankLoadScreen.cs index a2c17d1f5f..2ffed1422e 100644 --- a/OpenRA.Mods.Common/LoadScreens/BlankLoadScreen.cs +++ b/OpenRA.Mods.Common/LoadScreens/BlankLoadScreen.cs @@ -41,16 +41,6 @@ namespace OpenRA.Mods.Common.LoadScreens Ui.ResetAll(); Game.Settings.Save(); - var installData = Game.ModData.Manifest.Get(); - var isModContentInstalled = installData.TestFiles.All(f => GlobalFileSystem.Exists(Path.GetFileName(f))); - - // Mod assets are missing! - if (!isModContentInstalled) - { - Game.InitializeMod("modchooser", new Arguments()); - return; - } - // Join a server directly var connect = Launch.GetConnectAddress(); if (!string.IsNullOrEmpty(connect))