private static void DoSerializeAddonPackage() { AddonPackage package = new AddonPackage(@"C:\Program Files (x86)\Moviestorm\AddOn\1AD", ProcessingFlags.ListCompactDupVerbsByName); /* * if (pProcessingFlags.HasFlag(ProcessingFlags.AppendToAddonPackageSet) && (AddonPackageSet != null) && * (package != null) && (!package.HasIssues)) * AddonPackageSet.Append(package, true); */ string errorText = null; StringBuilder writerStringBuilder = new StringBuilder(); try { XmlSerializer serializer = new XmlSerializer(package.GetType()); using (StringWriter writer = new StringWriter(writerStringBuilder)) { serializer.Serialize(writer, package); writer.Close(); } } catch (Exception exception) { errorText = Utils.GetExceptionFullMessage(exception); } string serializedPackage = writerStringBuilder.ToString(); }
public AddonBasicInfo(AddonPackage pPackage) { Name = pPackage.Name; Publisher = pPackage.Publisher; Installed = pPackage.AddonFormat == AddonPackageFormat.InstalledFolder; Free = pPackage.Free; Recompilable = pPackage.Recompilable; Description = pPackage.Description; BodyPartCount = GetCountValue(pPackage.AssetSummary?.Bodyparts); DecalCount = GetCountValue(pPackage.AssetSummary?.Decals); PropCount = GetCountValue(pPackage.AssetSummary?.Props); AnimationCount = GetCountValue(pPackage.AssetSummary?.Animations); VerbCount = GetCountValue(pPackage.AssetSummary?.Verbs); SoundCount = GetCountValue(pPackage.AssetSummary?.Sounds); CuttingRoomAssetCount = GetCountValue(pPackage.AssetSummary?.CuttingRoomAssets); SpecialEffectCount = GetCountValue(pPackage.AssetSummary?.SpecialEffects); MaterialCount = GetCountValue(pPackage.AssetSummary?.Materials); SkyTextureCount = GetCountValue(pPackage.AssetSummary?.SkyTextures); OtherAssetsCount = GetCountValue(pPackage.AssetSummary?.OtherAssets); StockCount = GetCountValue(pPackage.AssetSummary?.Stocks); DemoMovieCount = GetCountValue(pPackage.AssetSummary?.StartMovies); Location = pPackage.Location; ContentPack = IsOfficialPack(pPackage); // if (MoviestormContentPackPath != null) // ContentPack = Location.ToLower().StartsWith(MoviestormContentPackPath.ToLower()); AddonPackage = pPackage; }
public bool Append(AddonPackage pPackage, bool pRefresh = true) { if (Addons == null) { Addons = new List <AddonPackage>(); Addons.Add(pPackage); LastUpdate = DateTime.Now; return(true); } int index = GetIndexByLocation(pPackage.Location); if (index >= 0) { if (!pRefresh) { return(false); } Addons.RemoveAt(index); } Addons.Add(pPackage); LastUpdate = DateTime.Now; return(true); }
private void ShowAddonContents() { string publisher; string name = GetSelectedAddonNamePublisher(out publisher); AddonPackage package = _addonPackageSet.FindByName(name, publisher); if (package == null) { return; } AssetSearchCriteria criteria = null; if (!_listAlwaysAnimations && (package.AssetSummary.Verbs > 0)) { AddonAssetType types = AddonAssetType.Any ^ AddonAssetType.Animation; criteria = new AssetSearchCriteria(null, types, null, null, null); } List <AssetSearchResultItem> assets = _addonPackageSet.SearchAsset(new List <AddonPackage>() { package }, criteria); AddonContentForm contentForm = new AddonContentForm($"{publisher}.{name}", assets); contentForm.Show(this); }
private bool IsOfficialPack(AddonPackage pPackage) { if (pPackage.Publisher.ToLower() != "shortfuze") { return(false); } return(!pPackage.Free || (pPackage.Name == "Core") || (pPackage.Name == "Base01")); }
private void ListAddonContents() { AddonPackage addon = GetSelectedAddon(); if (addon != null) { ShowAddonContents(addon); } }
private void ShowAddonContents(AddonPackage pAddon) { List <AssetSearchResultItem> assets = _addonPackageSet.SearchAsset(new List <AddonPackage>() { pAddon }, null); AddonContentForm contentForm = new AddonContentForm($"{pAddon.Publisher}.{pAddon.Name}", assets); contentForm.Show(this); }
private void cmiDisplayAddonReport_Click(object sender, EventArgs e) { AddonPackage addon = GetSelectedAddon(); if (addon == null) { return; } AddonReportForm reportForm = new AddonReportForm(addon.QualifiedName, addon.ToString()); reportForm.Show(this); }
private void cmiOpenContainingFolder_Click(object sender, EventArgs e) { AddonPackage addon = GetSelectedAddon(); if (addon == null) { return; } string errorText; if (!MiscUtils.OpenContainingFolder(addon, out errorText)) { if (!string.IsNullOrEmpty(errorText)) { MessageBox.Show(errorText, "Error while opening folder", MessageBoxButtons.OK); } } }
private bool CheckEntity(ProcessingFlags pProcessingFlags, out string pReport) { pReport = null; bool showDetailedContents = pProcessingFlags.HasFlag(ProcessingFlags.ShowAddonContents); bool appendToPackageSet = pProcessingFlags.HasFlag(ProcessingFlags.AppendToAddonPackageSet); if (!showDetailedContents) { pReport = BriefReport(); if (!appendToPackageSet) { return(true); } } string tempPath = Utils.GetTempDirectory(); AddonPackage package = new AddonPackage(AbsolutePath, pProcessingFlags, tempPath); if (showDetailedContents) { pReport = package?.ToString(); } if (appendToPackageSet && (AddonPackageSet != null) && (package != null)) { if (package.HasIssues) { pReport += " >>> NOT inserted/updated into Catalogue (has problems!)"; } else { if (AddonPackageSet.Append(package, pProcessingFlags.HasFlag(ProcessingFlags.AppendToAddonPackageSetForceRefresh))) { pReport += " >>> Inserted/updated into Catalogue"; } } } return(true); }
// ------------------------------------------------------------------------------------------------------------------------------ private void cmiDisplayAddonReport_Click(object sender, EventArgs e) { if (GetAssetSelectedRowIndex() < 0) { return; } string publisher; string name = GetSelectedAddonNamePublisher(out publisher); AddonPackage package = _addonPackageSet.FindByName(name, publisher); if (package == null) { return; } AddonReportForm reportForm = new AddonReportForm(name, package.ToString()); reportForm.Show(this); }
public bool IsMatch(AddonPackage pPackage) { if ((_nameRegex != null) && !_nameRegex.IsMatch(pPackage.Name)) { return(false); } if ((_publisherRegex != null) && !_publisherRegex.IsMatch(pPackage.Publisher)) { return(false); } if (Installed.HasValue) { if (((pPackage.AddonFormat == AddonPackageFormat.InstalledFolder) && !Installed.Value) || ((pPackage.AddonFormat == AddonPackageFormat.PackageFile && Installed.Value))) { return(false); } } if (ContentPack.HasValue) { bool isContentPack = pPackage.Location.ToLower().StartsWith(ContentPacksPath); if (isContentPack != ContentPack.Value) { return(false); } } if ((_locationRegex != null) && !_locationRegex.IsMatch(pPackage.Location)) { return(false); } return(true); }
public static bool OpenContainingFolder(AddonPackage pAddon, out string pErrorText) { return(OpenContainingFolder(pAddon?.Location, out pErrorText)); }
private bool CheckEntity(ProcessingFlags pProcessingFlags, out string pReport) { bool reportOnlyIssues = pProcessingFlags.HasFlag(ProcessingFlags.JustReportIssues); bool showAddonContents = pProcessingFlags.HasFlag(ProcessingFlags.ShowAddonContents); bool appendToPackageSet = pProcessingFlags.HasFlag(ProcessingFlags.AppendToAddonPackageSet); List <ArchiveFileInfo> entryList; SevenZipArchiver archiver = new SevenZipArchiver(AbsolutePath); archiver.ArchivedFileList(out entryList); if ((entryList?.Count ?? -1) <= 0) { pReport = $"{ErrorTokenString} Invalid file or format"; if (showAddonContents) { pReport += "\n"; } return(false); } List <string> demoMovies, stockAssets; bool hasMeshes, hasData; AddonSignatureFile addonSignature; bool formatOk = CheckFormat(archiver, entryList, out hasMeshes, out hasData, out demoMovies, out stockAssets, out addonSignature); if (!formatOk) { pReport = $"{ErrorTokenString} Invalid/obsolete addon format"; if (showAddonContents) { pReport += "\n"; } return(false); } // Addon good format pReport = null; if (reportOnlyIssues) { return(true); } if (!showAddonContents) { pReport = (hasMeshes ? "OK" : "OK, no meshes"); if (demoMovies != null) { pReport += " (incl. Movies)"; } if (stockAssets != null) { pReport += " (incl. Stock assets)"; } string freeText = addonSignature.Free ? "" : " NOT FREE!"; pReport += $" [{addonSignature.Publisher}{freeText}]"; if (!appendToPackageSet) { return(true); } } string tempPath = Utils.GetTempDirectory(); AddonPackage package = new AddonPackage(archiver, pProcessingFlags, tempPath, ArchivedPath); if (showAddonContents) { pReport = package?.ToString(); } if (appendToPackageSet && (AddonPackageSet != null) && (package != null)) { if (package.HasIssues) { pReport += " >>> Not inserted/updated into Catalogue (has problems!)"; } else { if (AddonPackageSet.Append(package, pProcessingFlags.HasFlag(ProcessingFlags.AppendToAddonPackageSetForceRefresh))) { pReport += " >>> Inserted/updated into Catalogue"; } } } return(true); }
public List <AssetSearchResultItem> SearchAsset(AddonPackage pPackage) { List <AssetSearchResultItem> found = new List <AssetSearchResultItem>(); AssetSearchResultItem baseResultItem = new AssetSearchResultItem() { AddonName = pPackage.Name, AddonPublisher = pPackage.Publisher, Free = pPackage.Free, Location = pPackage.Location }; baseResultItem.Installed = (pPackage.AddonFormat == AddonPackageFormat.InstalledFolder); baseResultItem.ContentPack = pPackage.Location.ToLower().StartsWith(ContentPacksPath); if ((pPackage.BodyModelsSummary?.Puppets?.Puppets.Count ?? 0) > 0) { if (AssetType.HasFlag(AddonAssetType.BodyPart)) { SearchBodyParts(pPackage.BodyModelsSummary.Puppets.Puppets, baseResultItem, found); } if (AssetType.HasFlag(AddonAssetType.Decal)) { SearchDecals(pPackage.BodyModelsSummary.Puppets.Puppets, baseResultItem, found); } } if (AssetType.HasFlag(AddonAssetType.Prop) && ((pPackage.PropModelsSummary.Props?.Props.Count ?? 0) > 0)) { SearchProps(pPackage.PropModelsSummary.Props.Props, baseResultItem, found); } if (AssetType.HasFlag(AddonAssetType.Verb) && (pPackage.VerbsSummary?.Verbs.HasData ?? false)) { SearchVerbs(pPackage.VerbsSummary.Verbs, baseResultItem, found); } if (AssetType.HasFlag(AddonAssetType.Animation)) { SearchAnimations(pPackage.AssetManifest, baseResultItem, found); } if (AssetType.HasFlag(AddonAssetType.CuttingRoomAsset)) { SearchCuttingRoomAssets(pPackage.CuttingRoomAssetsSummary, baseResultItem, found); } if (AssetType.HasFlag(AddonAssetType.Material) && (((pPackage.Materials?.Count ?? 0) > 0))) { SearchCommon(pPackage.Materials, AddonAssetType.Material, baseResultItem, found); } if (AssetType.HasFlag(AddonAssetType.Sound) && (((pPackage.Sounds?.Count ?? 0) > 0))) { SearchCommon(pPackage.Sounds, AddonAssetType.Sound, baseResultItem, found); } if (AssetType.HasFlag(AddonAssetType.SpecialEffect) && (((pPackage.SpecialEffects?.Count ?? 0) > 0))) { SearchCommon(pPackage.SpecialEffects, AddonAssetType.SpecialEffect, baseResultItem, found); } /* * if (AssetType.HasFlag(AddonAssetType.CuttingRoomAsset) && (((pPackage.Filters?.Count ?? 0) > 0))) * { * SearchCommon(pPackage.Filters, AddonAssetType.CuttingRoomAsset, baseResultItem, found); * } */ if (AssetType.HasFlag(AddonAssetType.SkyTexture) && (((pPackage.SkyTextures?.Count ?? 0) > 0))) { SearchCommon(pPackage.SkyTextures, AddonAssetType.SkyTexture, baseResultItem, found); } if (AssetType.HasFlag(AddonAssetType.OtherAsset) && (((pPackage.OtherAssets?.Count ?? 0) > 0))) { SearchCommon(pPackage.OtherAssets, AddonAssetType.OtherAsset, baseResultItem, found); } if (AssetType.HasFlag(AddonAssetType.Stock) && (((pPackage.StockAssets?.Count ?? 0) > 0))) { SearchCommon(pPackage.StockAssets, AddonAssetType.Stock, baseResultItem, found); } if (AssetType.HasFlag(AddonAssetType.StartMovie) && (((pPackage.DemoMovies?.Count ?? 0) > 0))) { SearchCommon2(pPackage.DemoMovies, AddonAssetType.StartMovie, baseResultItem, found); } return(found.Count > 0 ? found : null); }