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); }
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(); } }
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); }
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); }