//先読みかけておく
        void UpdatePreLoadFiles(string scenarioLabel, int page)
        {
            //直前までの先読みファイルリスト
            HashSet <AssetFile> lastPreloadFileSet = preloadFileSet;

            //今回の先読みファイルリスト
            preloadFileSet = Engine.DataManager.MakePreloadFileList(scenarioLabel, page, maxFilePreload);

            if (preloadFileSet == null)
            {
                preloadFileSet = new HashSet <AssetFile>();
            }

            //リストに従って先読み
            foreach (AssetFile file in preloadFileSet)
            {
                //先読み
                AssetFileManager.Preload(file, this);
            }

            //直前の先読みファイルのうち、今回の先読みファイルからなくなったものは使用状態を解除する
            foreach (AssetFile file in lastPreloadFileSet)
            {
                //もうプリロードされなくなったリストを作るために
                if (!(preloadFileSet.Contains(file)))
                {
                    file.Unuse(this);
                }
            }
        }
Пример #2
0
        //先読みかけておく
        void UpdatePreLoadFiles(int commandIndex, int fileCount)
        {
            HashSet <AssetFile> lastPreloadFileSet = preloadFileSet;

            preloadFileSet = new HashSet <AssetFile>();
            while (true)
            {
                ++commandIndex;
                AdvCommand command = scearioData.GetCommand(commandIndex);
                if (null == command)
                {
                    break;
                }

                if (command.LoadFileList != null)
                {
                    foreach (AssetFile file in command.LoadFileList)
                    {
                        preloadFileSet.Add(file);
                    }
                }
                if (preloadFileSet.Count > fileCount)
                {
                    break;
                }
            }
            ;

            //リストに従って先読み
            foreach (AssetFile file in preloadFileSet)
            {
                AssetFileManager.Preload(file, this);
                //もうプリロードされなくなったリストを作るために
                if (lastPreloadFileSet.Contains(file))
                {
                    lastPreloadFileSet.Remove(file);
                }
            }
            //直前の先読みファイルは参照を減算しておく
            foreach (AssetFile file in lastPreloadFileSet)
            {
                file.Unuse(this);
            }
        }