#region Copyright & License Information /* * Copyright 2007-2014 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made * available to you under the terms of the GNU General Public License * as published by the Free Software Foundation. For more information, * see COPYING. */ #endregion using System.Collections.Generic; using System.Linq; using OpenRA.FileSystem; using OpenRA.Mods.Common.Widgets.Logic; using OpenRA.Widgets; namespace OpenRA.Mods.Common.LoadScreens { public class BlankLoadScreen : ILoadScreen { public virtual void Init(Manifest m, Dictionary info) { } public virtual void Display() { if (Game.Renderer == null) return; // Draw a black screen Game.Renderer.BeginFrame(int2.Zero, 1f); Game.Renderer.EndFrame(new NullInputHandler()); } public void StartGame(Arguments args) { Ui.ResetAll(); Game.Settings.Save(); // Check whether the mod content is installed // TODO: The installation code has finally been beaten into shape, so we can // finally move it all into the planned "Manage Content" panel in the modchooser mod. var installData = Game.ModData.Manifest.ContentInstaller; var installModContent = !installData.TestFiles.All(f => GlobalFileSystem.Exists(f)); var installModMusic = args != null && args.Contains("Install.Music"); if (installModContent || installModMusic) { var widgetArgs = new WidgetArgs() { { "continueLoading", () => Game.InitializeMod(Game.Settings.Game.Mod, args) }, }; if (installData.BackgroundWidget != null) Ui.LoadWidget(installData.BackgroundWidget, Ui.Root, widgetArgs); var menu = installModContent ? installData.MenuWidget : installData.MusicMenuWidget; Ui.OpenWindow(menu, widgetArgs); return; } // Join a server directly var connect = args != null ? args.GetValue("Launch.Connect", null) : null; if (!string.IsNullOrEmpty(connect)) { var parts = connect.Split(':'); if (parts.Length == 2) { var host = parts[0]; var port = Exts.ParseIntegerInvariant(parts[1]); Game.LoadShellMap(); Game.RemoteDirectConnect(host, port); return; } } // Load a replay directly var replay = args != null ? args.GetValue("Launch.Replay", null) : null; if (!string.IsNullOrEmpty(replay)) { Game.JoinReplay(replay); return; } Game.LoadShellMap(); Game.Settings.Save(); } public virtual void Dispose() { } } }