/// <summary> /// Create an instance of the Dependency class and over-ride DatabasePackage default values, while using values provided for copy objects /// </summary> /// <param name="packageToCopyFrom">The package to copy the information from</param> /// <param name="deep">Set to true to copy list objects, false to use new lists</param> public Dependency(DatabasePackage packageToCopyFrom, bool deep) : base(packageToCopyFrom, deep) { InstallGroup = 2; PatchGroup = 2; if (packageToCopyFrom is Dependency dep) { this.DatabasePackageLogic = new List <DatabaseLogic>(); this.Dependencies = new List <DatabaseLogic>(); if (deep) { foreach (DatabaseLogic logic in dep.Dependencies) { this.Dependencies.Add(DatabaseLogic.Copy(logic)); } } } else if (packageToCopyFrom is SelectablePackage sp) { this.Dependencies = new List <DatabaseLogic>(); if (deep) { foreach (DatabaseLogic logic in sp.Dependencies) { this.Dependencies.Add(DatabaseLogic.Copy(logic)); } } } }
/// <summary> /// Create an instance of the SelectablePackage class and over-ride DatabasePackage default values, while using values provided for copy objects /// </summary> /// <param name="packageToCopyFrom">The package to copy the information from</param> /// <param name="deep">Set to true to copy list objects, false to use new lists</param> public SelectablePackage(DatabasePackage packageToCopyFrom, bool deep) : base(packageToCopyFrom, deep) { InstallGroup = 4; PatchGroup = 4; if (packageToCopyFrom is Dependency dep) { if (deep) { foreach (DatabaseLogic file in dep.Dependencies) { this.Dependencies.Add(DatabaseLogic.Copy(file)); } } } else if (packageToCopyFrom is SelectablePackage sp) { this.Type = sp.Type; this.Name = "WRITE_NEW_NAME"; this.Visible = sp.Visible; this.Size = 0; this.UpdateComment = string.Empty; this.Description = string.Empty; this.PopularMod = false; this._Checked = false; this.Level = -2; this.UserFiles = new List <UserFile>(); this.Packages = new List <SelectablePackage>(); this.Medias = new List <Media>(); this.Dependencies = new List <DatabaseLogic>(); this.ConflictingPackages = string.Empty; this.ShowInSearchList = sp.ShowInSearchList; if (deep) { this.UpdateComment = sp.UpdateComment; this.Description = sp.Description; this.PopularMod = sp.PopularMod; this._Checked = sp._Checked; foreach (UserFile file in this.UserFiles) { this.UserFiles.Add(UserFile.DeepCopy(file)); } foreach (Media file in this.Medias) { this.Medias.Add(Media.Copy(file)); } foreach (DatabaseLogic file in this.Dependencies) { this.Dependencies.Add(DatabaseLogic.Copy(file)); } } } }
/// <summary> /// Create a copy of the given DatabaseLogic object /// </summary> /// <param name="databaseLogicToCopy">The object to copy</param> /// <returns>A new DatabaseLogic object with the same values</returns> public static DatabaseLogic Copy(DatabaseLogic databaseLogicToCopy) { return(new DatabaseLogic() { PackageName = databaseLogicToCopy.PackageName, PackageUID = databaseLogicToCopy.PackageUID, WillBeInstalled = databaseLogicToCopy.WillBeInstalled, NotFlag = databaseLogicToCopy.NotFlag, Logic = databaseLogicToCopy.Logic, RefrenceLinked = databaseLogicToCopy.RefrenceLinked, DependencyPackageRefrence = databaseLogicToCopy.DependencyPackageRefrence, ParentPackageRefrence = databaseLogicToCopy.ParentPackageRefrence }); }