コード例 #1
0
ファイル: ValidateMods.cs プロジェクト: spbennett/Automaton
        private async void NexusLogIn()
        {
            await NexusConnection.StartNewConnectionAsync(new Progress <NewConnectionProgress>(x =>
            {
                if (!x.IsComplete)
                {
                    LogInButtonText = "Logging In";
                }

                if (x.HasError)
                {
                    LogInButtonText = "Nexus Login";
                }

                if (x.IsComplete)
                {
                    if (!x.HasError)
                    {
                        IsLoggedIn = true;
                        IsLoginVisible = false;

                        WindowNotificationControls.MoveToFront();

                        InitializeDownloadHandle();
                    }
                    else
                    {
                        IsLoggedIn = false;
                        IsLoginVisible = true;
                    }
                }
            }));
        }
コード例 #2
0
ファイル: ValidateMods.cs プロジェクト: spbennett/Automaton
        /// <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;
                        }
                    }));
                }
            }));
        }