public SinglePlayerBar(List <Download> neededDownloads, ScriptMissionData profile, string modInternalName) { InitializeComponent(); this.neededDownloads = neededDownloads; this.profile = profile; timer.Interval = 500; timer.Tick += timer_Tick; timer.Start(); this.modInternalName = modInternalName; }
public static void DownloadAndStartMission(ScriptMissionData profile) { var modVer = Program.Downloader.PackageDownloader.GetByTag(profile.ModTag); if (modVer == null) { Trace.TraceError("Cannot start mission - cannot find rapid tag: {0}", profile.ModTag); return; } var modName = modVer.InternalName; var neededDownloads = new List <Download>(); if (!Program.SpringScanner.HasResource(modName)) { neededDownloads.Add(Program.Downloader.GetResource(DownloadType.MOD, modName)); } if (!Program.SpringScanner.HasResource(profile.MapName)) { neededDownloads.Add(Program.Downloader.GetResource(DownloadType.MAP, profile.MapName)); } if (profile.ManualDependencies != null) { foreach (var entry in profile.ManualDependencies) { if (!string.IsNullOrEmpty(entry) && !Program.SpringScanner.HasResource(entry)) { neededDownloads.Add(Program.Downloader.GetResource(DownloadType.UNKNOWN, entry)); } } } var needEngine = Program.Downloader.GetAndSwitchEngine(Program.SpringPaths.SpringVersion); if (needEngine != null) { neededDownloads.Add(needEngine); } if (neededDownloads.Count > 0) { Program.NotifySection.AddBar(new SinglePlayerBar(neededDownloads, profile, modName)); } else { StartDownloadedMission(profile, modName); } }
public static void StartDownloadedMission(ScriptMissionData profile, string modInternalName) { var spring = new Spring(Program.SpringPaths); var name = Program.Conf.LobbyPlayerName; if (string.IsNullOrEmpty(name)) { name = "Player"; } if (Utils.VerifySpringInstalled()) { spring.StartGame(Program.TasClient, null, null, profile.StartScript.Replace("%MOD%", modInternalName).Replace("%MAP%", profile.MapName).Replace("%NAME%", name), Program.Conf.UseSafeMode, Program.Conf.UseMtEngine); var serv = GlobalConst.GetContentService(); serv.NotifyMissionRun(Program.Conf.LobbyPlayerName, profile.Name); } }