Esempio n. 1
0
        private void DownloadUpdate(object sender, ExtendedMod e)
        {
            if (e.CurrentDownloadProgress == 100)
            {
                _installBase.ModpackMods.Where(x => x.Md5 == e.Md5).ToList()
                .ForEach(x => x.FilePath = e.FilePath);

                var matchingMods = MissingMods.Where(x => x.Md5 == e.Md5).ToList();

                foreach (var matchingMod in matchingMods)
                {
                    Application.Current.Dispatcher.BeginInvoke((Action) delegate
                    {
                        _missingModsLocked = true;

                        if (MissingMods.IndexOf(matchingMod) != -1)
                        {
                            MissingMods.RemoveAt(MissingMods.IndexOf(matchingMod));
                            RemainingMissingModCount--;
                        }

                        _missingModsLocked = false;
                    });
                }
            }

            else
            {
                var missingMods = MissingMods.ToList();
                foreach (var matchingMissingMod in missingMods.Where(x => x.Md5 == e.Md5).ToList())
                {
                    Application.Current.Dispatcher.BeginInvoke((Action) delegate
                    {
                        _missingModsLocked = true;

                        var index = MissingMods.IndexOf(matchingMissingMod);
                        if (index == -1)
                        {
                            return;
                        }

                        MissingMods[MissingMods.IndexOf(matchingMissingMod)].CurrentDownloadProgress = e.CurrentDownloadProgress;
                        _missingModsLocked = false;
                    });
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Initializes the NXMWorker pipe listener.
        /// </summary>
        private void InitializeDownloadHandle()
        {
            if (NoMissingMods)
            {
                return;
            }

            var nexusProtocol = new NexusProtocol();

            // Start capturing piped messages from the NXMWorker, handle any progress reports.
            nexusProtocol.StartRecievingProtocolValues(new Progress <CaptureProtocolValuesProgress>(async x =>
            {
                var matchingMods = MissingMods.Where(y => y.NexusModId == x.ModId);

                if (!matchingMods.Any())
                {
                    return;
                }

                var matchingMod = matchingMods.First();

                if (matchingMod != null)
                {
                    WindowNotificationControls.MoveToFront();

                    // Start downloading the mod file.
                    await NexusMod.DownloadModFile(matchingMod, x.FileId, new Progress <DownloadModFileProgress>(downloadProgress =>
                    {
                        MissingMods[MissingMods.IndexOf(matchingMod)].CurrentDownloadPercentage = downloadProgress.CurrentDownloadPercentage;

                        if (downloadProgress.IsDownloadComplete)
                        {
                            Modpack.UpdateModArchivePaths(matchingMod, downloadProgress.DownloadLocation);
                            MissingMods.Remove(matchingMod);

                            NoMissingMods = MissingMods.Count == 0;
                        }
                    }));
                }
            }));
        }