示例#1
0
        private void TryHost()
        {
            if (direct && !TryParseIp(addressBuffer, out settings.bindAddress, out settings.bindPort))
            {
                return;
            }

            if (!direct)
            {
                settings.bindAddress = null;
            }

            if (!lan)
            {
                settings.lanAddress = null;
            }

            if (file == null)
            {
                ClientUtil.HostServer(settings, false);
            }
            else if (file.replay)
            {
                HostFromReplay(settings);
            }
            else
            {
                HostFromSave(settings);
            }

            Close(true);
        }
示例#2
0
        private void HostFromReplay(ServerSettings settings)
        {
            TickPatch.disableSkipCancel = true;

            Replay.LoadReplay(file.fileName, true, () =>
            {
                ClientUtil.HostServer(settings, true);
            });
        }
        private void HostFromReplay(ServerSettings settings)
        {
            void ReplayLoaded() => ClientUtil.HostServer(settings, true, withSimulation, debugMode: debugMode);

            if (file != null)
            {
                Replay.LoadReplay(file.file, true, ReplayLoaded, cancel: GenScene.GoToMainMenu, simTextKey: "MpSimulatingServer");
            }
            else
            {
                ReplayLoaded();
            }
        }
示例#4
0
        private void HostFromSave(ServerSettings settings)
        {
            LongEventHandler.QueueLongEvent(() =>
            {
                MemoryUtility.ClearAllMapsAndWorld();
                Current.Game                     = new Game();
                Current.Game.InitData            = new GameInitData();
                Current.Game.InitData.gameToLoad = file.displayName;

                LongEventHandler.ExecuteWhenFinished(() =>
                {
                    LongEventHandler.QueueLongEvent(() => ClientUtil.HostServer(settings, false, debugMode: debugMode), "MpLoading", false, null);
                });
            }, "Play", "LoadingLongEvent", true, null);
        }
示例#5
0
        private void TryHost()
        {
            if (settings.direct && !TryParseIp(settings.directAddress, out settings.bindAddress4, out settings.bindAddress6, out settings.bindPort))
            {
                return;
            }

            if (settings.gameName.NullOrEmpty())
            {
                Messages.Message("MpInvalidGameName".Translate(), MessageTypeDefOf.RejectInput, false);
                return;
            }

            if (!settings.direct)
            {
                settings.bindAddress4 = null;
                settings.bindAddress6 = null;
            }

            if (!settings.lan)
            {
                settings.lanAddress = null;
            }

            if (file?.replay ?? Multiplayer.IsReplay)
            {
                HostFromReplay(settings);
            }
            else if (file == null)
            {
                ClientUtil.HostServer(settings, false, debugMode: debugMode, logDesyncTraces: logDesyncTraces);
            }
            else
            {
                HostFromSave(settings);
            }

            Close(true);
        }