diff --git a/Subsurface/Source/GameMain.cs b/Subsurface/Source/GameMain.cs index f508d48c2..8b64febd1 100644 --- a/Subsurface/Source/GameMain.cs +++ b/Subsurface/Source/GameMain.cs @@ -69,6 +69,7 @@ namespace Barotrauma public static GameSettings Config; + private CoroutineHandle loadingCoroutine; private bool hasLoaded; private GameTime fixedTime; @@ -203,7 +204,7 @@ namespace Barotrauma loadingScreenOpen = true; TitleScreen = new LoadingScreen(GraphicsDevice); - CoroutineManager.StartCoroutine(Load()); + loadingCoroutine = CoroutineManager.StartCoroutine(Load()); } public IEnumerable Load() @@ -333,6 +334,14 @@ namespace Barotrauma { loadingScreenOpen = false; } + + if (!hasLoaded && !CoroutineManager.IsCoroutineRunning(loadingCoroutine)) + { + DebugConsole.ThrowError("Loading was interrupted due to an error"); + loadingScreenOpen = false; + loadingCoroutine = null; + hasLoaded = true; + } } else if (hasLoaded) {