public bool Run(ulong initialConnectLobbyID, TextWriter writer) { Status = "Connecting to steam API"; using (var steam = new SteamClientHelper()) { steam.ConnectToSteam(); Status = "Starting"; var chobyl = new ChobbylaLocalListener(this, steam, initialConnectLobbyID); var loopbackPort = chobyl.StartListening(); var ret = LaunchChobby(paths, internalName, engine, loopbackPort, writer).Result; return(ret); } }
public bool Run(ulong initialConnectLobbyID, TextWriter writer) { Status = "Connecting to steam API"; using (var steam = new SteamClientHelper()) { steam.ConnectToSteam(); Status = "Starting"; var chobyl = new ChobbylaLocalListener(this, steam, initialConnectLobbyID); var loopbackPort = chobyl.StartListening(); var workshopItems = steam.GetWorkshopItems(); paths.AddDataDirectories(workshopItems.OrderByDescending(x => x.ItemID).Select(x => x.Folder).ToList()); var ret = LaunchChobby(paths, internalName, engine, loopbackPort, writer).Result; return(ret); } }
public async Task<bool> Prepare() { try { PackageDownloader.Version ver = null; internalName = null; if (!isDev) { if (!Debugger.IsAttached) { Status = "Checking for self-upgrade"; var selfUpdater = new SelfUpdater(); selfUpdater.ProgramUpdated += delegate { if (Environment.OSVersion.Platform == PlatformID.Unix) { Process.Start(Application.ExecutablePath); Environment.Exit(0); } else Application.Restart(); }; var task = new Task<bool>(() => selfUpdater.CheckForUpdate()); task.Start(); await task; } if (!await DownloadFile("Checking for chobby update", DownloadType.RAPID, chobbyTag)) return false; if (!await DownloadFile("Checking for game update", DownloadType.RAPID, "zk:stable")) return false; ver = downloader.PackageDownloader.GetByTag(chobbyTag); if (ver == null) { Status = "Rapid package appears to be corrupted, please clear the folder"; return false; } internalName = ver.InternalName; } else internalName = "Chobby $VERSION"; engine = engine ?? QueryDefaultEngine() ?? ExtractEngineFromLua(ver) ?? GlobalConst.DefaultEngineOverride; if (!await DownloadFile("Downloading engine", DownloadType.ENGINE, engine)) return false; if (!await UpdateMissions()) { Trace.TraceWarning("Mission update has failed"); Status = "Error updating missions"; } if (!isDev) { Status = "Reseting configs"; ConfigVersions.ResetConfigs(paths, ver); Status = "Extracting default configs"; ExtractDefaultConfigs(paths, ver); } Status = "Starting"; var chobyl = new ChobbylaLocalListener(this); loopbackPort = chobyl.StartListening(); return true; } catch (Exception ex) { Trace.TraceError("Unexpected error: {0}", ex); Status = "Unexpected error preparing chobby launch: " + ex.Message; return false; } }