示例#1
0
 /// <summary>
 /// Constructs a ModDownload instance with the type <value>ModDownloadType.Archive</value>.
 /// </summary>
 /// <param name="info">Metadata for the associated mod.</param>
 /// <param name="folder">The folder containing the mod.</param>
 /// <param name="url">URL of the mod download.</param>
 /// <param name="changes">List of changes for this update.</param>
 /// <param name="size">Size of the archive to download.</param>
 /// <seealso cref="ModDownloadType"/>
 public ModDownload(ModInfo info, string folder, string url, string changes, long size)
 {
     Info            = info;
     Type            = ModDownloadType.Archive;
     Url             = url;
     Folder          = folder;
     Changes         = changes;
     Size            = size;
     FilesToDownload = 1;
 }
示例#2
0
        /// <summary>
        /// Constructs a ModDownload instance with the type <value>ModDownloadType.Modular</value>.
        /// </summary>
        /// <param name="info">Metadata for the associated mod.</param>
        /// <param name="folder">The folder containing the mod.</param>
        /// <param name="url">URL of the mod download.</param>
        /// <param name="changes">List of changes for this update.</param>
        /// <param name="diff">A diff of the remote and local manifests.</param>
        /// <seealso cref="ModDownloadType"/>
        public ModDownload(ModInfo info, string folder, string url, string changes, List <ModManifestDiff> diff)
        {
            Info         = info;
            Type         = ModDownloadType.Modular;
            Url          = url;
            Folder       = folder;
            ChangedFiles = diff?.Where(x => x.State != ModManifestState.Unchanged).ToList()
                           ?? throw new ArgumentNullException(nameof(diff));

            List <ModManifestDiff> toDownload = ChangedFiles
                                                .Where(x => x.State == ModManifestState.Added || x.State == ModManifestState.Changed)
                                                .ToList();

            FilesToDownload = toDownload.Count;
            Size            = Math.Max(toDownload.Select(x => x.Current.FileSize).Sum(), toDownload.Count);

            Changes = !string.IsNullOrEmpty(changes) ? changes : string.Empty;
        }