Exemplo n.º 1
0
        public static void InitializeWithMods(string[] mods)
        {
            // Clear static state if we have switched mods
            LobbyInfoChanged       = () => {};
            AddChatLine            = (a, b, c) => {};
            ConnectionStateChanged = om => {};
            BeforeGameStart        = () => {};
            Ui.ResetAll();

            worldRenderer = null;
            if (server != null)
            {
                server.Shutdown();
            }
            if (orderManager != null)
            {
                orderManager.Dispose();
            }

            // Discard any invalid mods
            var mm = mods.Where(m => Mod.AllMods.ContainsKey(m)).ToArray();

            Console.WriteLine("Loading mods: {0}", mm.JoinWith(","));
            Settings.Game.Mods = mm;
            Settings.Save();

            Sound.StopMusic();
            Sound.StopVideo();
            Sound.Initialize();

            modData = new ModData(mm);
            Renderer.InitializeFonts(modData.Manifest);
            modData.LoadInitialAssets();


            PerfHistory.items["render"].hasNormalTick         = false;
            PerfHistory.items["batches"].hasNormalTick        = false;
            PerfHistory.items["render_widgets"].hasNormalTick = false;
            PerfHistory.items["render_flip"].hasNormalTick    = false;

            JoinLocal();
            viewport = new Viewport(new int2(Renderer.Resolution), Rectangle.Empty, Renderer);

            modData.LoadScreen.StartGame();
        }
Exemplo n.º 2
0
        public static void InitializeWithMods(string[] mods)
        {
            // Clear static state if we have switched mods
            LobbyInfoChanged       = () => {};
            AddChatLine            = (a, b, c) => {};
            ConnectionStateChanged = om => {};
            BeforeGameStart        = () => {};
            Ui.ResetAll();

            worldRenderer = null;
            if (server != null)
            {
                server.Shutdown();
            }
            if (orderManager != null)
            {
                orderManager.Dispose();
            }

            // Discard any invalid mods, set RA as default
            var mm = mods.Where(m => Mod.AllMods.ContainsKey(m)).ToArray();

            if (mm.Length == 0)
            {
                mm = new[] { "ra" }
            }
            ;
            Console.WriteLine("Loading mods: {0}", mm.JoinWith(","));
            Settings.Game.Mods = mm;

            Sound.StopMusic();
            Sound.StopVideo();
            Sound.Initialize();

            modData = new ModData(mm);
            Renderer.InitializeFonts(modData.Manifest);
            modData.LoadInitialAssets(true);


            PerfHistory.items["render"].hasNormalTick         = false;
            PerfHistory.items["batches"].hasNormalTick        = false;
            PerfHistory.items["render_widgets"].hasNormalTick = false;
            PerfHistory.items["render_flip"].hasNormalTick    = false;

            JoinLocal();
            viewport = new Viewport(new int2(Renderer.Resolution), Rectangle.Empty, Renderer);

            if (Game.Settings.Server.Dedicated)
            {
                while (true)
                {
                    Game.Settings.Server.Map = WidgetUtils.ChooseInitialMap(Game.Settings.Server.Map);
                    Game.Settings.Save();
                    Game.CreateServer(new ServerSettings(Game.Settings.Server));
                    while (true)
                    {
                        System.Threading.Thread.Sleep(100);

                        if ((server.State == Server.ServerState.GameStarted) &&
                            (server.conns.Count <= 1))
                        {
                            Console.WriteLine("No one is playing, shutting down...");
                            server.Shutdown();
                            break;
                        }
                    }
                    if (Game.Settings.Server.DedicatedLoop)
                    {
                        Console.WriteLine("Starting a new server instance...");
                        continue;
                    }
                    else
                    {
                        break;
                    }
                }
                System.Environment.Exit(0);
            }
            else
            {
                modData.LoadScreen.StartGame();
                Settings.Save();
            }
        }