diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 219a2b099f..6bca989e9f 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -263,20 +263,20 @@ namespace OpenRA Log.AddChannel("debug", "debug.log"); Log.AddChannel("sync", "syncreport.log"); + FileSystem.Mount("."); // Needed to access shaders + Renderer.Initialize( Game.Settings.Graphics.Mode ); + Renderer.SheetSize = Settings.Game.SheetSize; + Renderer = new Renderer(); + LobbyInfo.GlobalSettings.Mods = Settings.Game.Mods; modData = new ModData( LobbyInfo.GlobalSettings.Mods ); - - Renderer.SheetSize = Settings.Game.SheetSize; - Renderer.Initialize( Game.Settings.Graphics.Mode ); - + Sound.Initialize(); PerfHistory.items["render"].hasNormalTick = false; PerfHistory.items["batches"].hasNormalTick = false; PerfHistory.items["text"].hasNormalTick = false; - PerfHistory.items["cursor"].hasNormalTick = false; - - Renderer = new Renderer(); - + PerfHistory.items["cursor"].hasNormalTick = false; + JoinLocal(); StartGame(modData.Manifest.ShellmapUid); diff --git a/OpenRA.Game/Graphics/Viewport.cs b/OpenRA.Game/Graphics/Viewport.cs index 08bf870ace..852d04c2a1 100644 --- a/OpenRA.Game/Graphics/Viewport.cs +++ b/OpenRA.Game/Graphics/Viewport.cs @@ -70,6 +70,16 @@ namespace OpenRA.Graphics Timer.Time( "endFrame: {0}" ); } + public static void DrawLoadScreen( Renderer r, float loadFraction ) + { + r.BeginFrame(float2.Zero); + + // Do stuff + + r.RgbaSpriteRenderer.Flush(); + r.EndFrame(); + } + public void RefreshPalette() { Game.world.WorldRenderer.palette.Update( diff --git a/OpenRA.Game/ModData.cs b/OpenRA.Game/ModData.cs index 68ca868273..a5f430e9ed 100755 --- a/OpenRA.Game/ModData.cs +++ b/OpenRA.Game/ModData.cs @@ -28,13 +28,14 @@ namespace OpenRA public ModData( params string[] mods ) { Manifest = new Manifest( mods ); - ObjectCreator = new ObjectCreator( Manifest ); FileSystem.LoadFromManifest( Manifest ); - SheetBuilder = new SheetBuilder( TextureChannel.Red ); - CursorSheetBuilder = new CursorSheetBuilder( this ); - ChromeProvider.Initialize( Manifest.Chrome ); + Viewport.DrawLoadScreen(Game.Renderer, 0f); + + ObjectCreator = new ObjectCreator( Manifest ); + SheetBuilder = new SheetBuilder( TextureChannel.Red ); + CursorSheetBuilder = new CursorSheetBuilder( this ); AvailableMaps = FindMaps( mods ); } @@ -51,6 +52,8 @@ namespace OpenRA string cachedTheatre = null; public Map PrepareMap(string uid) { + Viewport.DrawLoadScreen(Game.Renderer, 0f); + if (!AvailableMaps.ContainsKey(uid)) throw new InvalidDataException("Invalid map uid: {0}".F(uid));