Beispiel #1
0
 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;
 }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }