Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        private bool IsOfficialPack(AddonPackage pPackage)
        {
            if (pPackage.Publisher.ToLower() != "shortfuze")
            {
                return(false);
            }

            return(!pPackage.Free || (pPackage.Name == "Core") || (pPackage.Name == "Base01"));
        }
Ejemplo n.º 6
0
        private void ListAddonContents()
        {
            AddonPackage addon = GetSelectedAddon();

            if (addon != null)
            {
                ShowAddonContents(addon);
            }
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
                }
            }
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        // ------------------------------------------------------------------------------------------------------------------------------

        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);
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
 public static bool OpenContainingFolder(AddonPackage pAddon, out string pErrorText)
 {
     return(OpenContainingFolder(pAddon?.Location, out pErrorText));
 }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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);
        }