Ejemplo n.º 1
0
        private bool HasCategory()
        {
            if (CategoryOptionsCBL != null)
            {
                return(CategoryOptionsCBL.GetSelectedItems().OfType <FileCategory>().Any());
            }

            return(false);
        }
Ejemplo n.º 2
0
        private void PerformSearch()
        {
            Results.ClearEx();
            var categories  = CategoryOptionsCBL.GetSelectedItems().OfType <FileCategory>().ToList();
            var searchGames = new List <string>();

            if (SearchME1)
            {
                searchGames.Add(@"masseffect");
            }
            if (SearchME2)
            {
                searchGames.Add(@"masseffect2");
            }
            if (SearchME3)
            {
                searchGames.Add(@"masseffect3");
            }
            QueryInProgress = true;
            Task.Run(() =>
            {
                try
                {
                    foreach (var domain in searchGames)
                    {
                        var db = LoadedDatabases[domain];
                        // Check if the name exists in filenames. If it doesn't, it will never find it
#if DEBUG
                        /*
                         * var ignoredItems = new List<string>()
                         * {
                         *  @"DLC_MOD_FMRM_Patches",
                         *  @"DLC_MOD_FJRM_Patches",
                         *  @"DLC_ASH_MiniSkirt_Mods",
                         *  @"DLC_Explorer",
                         *  @"DLC_LIA_RA4_MeshOnly",
                         *  @"DLC_ASH_Shorts_Mod",
                         *  @"DLC_ASH_Alt_Mods",
                         *  @"DLC_ASH_Socks_Mod",
                         *  @"DLC_ASH_Topless_Mod",
                         *  @"DLC_GAR_FRM_Altered_Face_Legs_Mod",
                         *  @"DLC_GAR_GFC_Altered_Face_Legs_Mod",
                         *  @"DLC_LIA_NKDSlippers_Mod",
                         *  @"DLC_LIA_NKDSnickers_Mod",
                         *  @"DLC_GAR_GFC_New_Version",
                         *  @"DLC_GAR_GFC_Old_Version",
                         *  @"DLC_GAR_FRM_Textures",
                         *  @"DLC_MIR_Shorts_Mod",
                         *  @"DLC_MOD_IT_RUS",
                         *
                         * };
                         * var dlcNames = db.NameTable.Values.Where(x => !ignoredItems.Contains(x) && x.StartsWith(@"DLC_") && Path.GetExtension(x) == string.Empty && !x.Contains(" ") && ThirdPartyServices.GetThirdPartyModInfo(x, MEGame.ME3) == null).Select(x => x.Trim()).Distinct().ToList();
                         * var xx = new List<string>();
                         * foreach (var i in db.FileInstances.Values)
                         * {
                         *  foreach (var f in i)
                         *  {
                         *      if (f.ParentPathID > 0)
                         *      {
                         *          var path = db.Paths[f.ParentPathID].GetFullPath(db);
                         *          if (path.ContainsAny(dlcNames, StringComparison.Ordinal))
                         *          {
                         *              var finfo = $@"https://nexusmods.com/masseffect/mods/{f.ModID}";
                         *              xx.Add(db.NameTable[db.ModFileInfos[f.FileID].NameID] + " " + finfo);
                         *          }
                         *
                         *      }
                         *  }
                         * }
                         * File.WriteAllLines(@"D:\dlcNames.txt", dlcNames);
                         * File.WriteAllLines(@"D:\mods.txt", xx);*/
#endif
                        var match = db.NameTable.FirstOrDefault(x =>
                                                                x.Value.Equals(SearchTerm, StringComparison.InvariantCultureIgnoreCase));

                        if (match.Key != 0)
                        {
                            // Found
                            var instances = db.FileInstances[match.Key].Where(x => categories.Contains(db.ModFileInfos[x.FileID].Category));
                            //Application.Current.Dispatcher.Invoke(() =>
                            //{
                            Results.AddRange(instances.Select(x => new SearchedItemResult()
                            {
                                Instance     = x,
                                Domain       = domain,
                                Filename     = db.NameTable[x.FilenameId],
                                AssociatedDB = db
                            }));
                            //});
                        }
                    }

                    StatusText      = M3L.GetString(M3L.string_interp_resultsCount, Results.Count);
                    QueryInProgress = false;
                }
                catch (Exception e)
                {
                    Log.Error($@"Could not perform search: {e.Message}");
                    QueryInProgress = false;
                }
            });
        }