示例#1
0
        /// <summary>
        ///     Rebuilds the bundle tree structure also rebuilds NOTE: Filelist,autocomplete,extensions
        /// </summary>
        private void RebuildRootNode()
        {
            RootNode      = new GameFileTreeNode(EArchiveType.Speech);
            RootNode.Name = EArchiveType.Speech.ToString();
            foreach (var item in Items)
            {
                var currentNode = RootNode;
                var parts       = item.Key.Split('\\');

                for (var i = 0; i < parts.Length - 1; i++)
                {
                    if (!currentNode.Directories.ContainsKey(parts[i]))
                    {
                        var newNode = new GameFileTreeNode
                        {
                            Parent = currentNode,
                            Name   = parts[i]
                        };
                        currentNode.Directories.Add(parts[i], newNode);
                        currentNode = newNode;
                    }
                    else
                    {
                        currentNode = currentNode.Directories[parts[i]];
                    }
                }

                currentNode.Files.Add(parts[parts.Length - 1], item.Value);
            }
            RebuildFileList();
            RebuildExtensions();
            RebuildAutoCompleteSource();
        }
示例#2
0
        /// <summary>
        /// Deep search for files
        /// </summary>
        /// <param name="mainnode">The rootnode to get the files from</param>
        /// <returns></returns>
        private List <IGameFile> GetFiles(GameFileTreeNode mainnode)
        {
            var bundfiles = new List <IGameFile>();

            if (mainnode?.Files != null)
            {
                foreach (var wfile in mainnode.Files)
                {
                    bundfiles.AddRange(wfile.Value);
                }
                bundfiles.AddRange(mainnode.Directories.Values.SelectMany(GetFiles));
            }
            return(bundfiles);
        }
        public void PerformSearch(string query)
        {
            var newnode = new GameFileTreeNode()
            {
                Name        = "",
                Parent      = CurrentNode,
                Directories = new Dictionary <string, GameFileTreeNode>(),
                Files       = new Dictionary <string, List <IGameFile> >()
            };

            newnode.Files = Managers.
                            SelectMany(_ => CollectFiles(query, _))
                            .GroupBy(x => x.Name)
                            .Select(x => x.First())
                            .Select(f => new KeyValuePair <string, List <IGameFile> >(f.Name, new List <IGameFile>()
            {
                f
            }))
                            .ToDictionary(x => x.Key, x => x.Value);
            this.CurrentNode = newnode;
            CurrentNodeFiles = CurrentNode.ToAssetBrowserData();
        }