Пример #1
0
        private void loadFromFileNames(object sender, object arg)
        {
            BackgroundWorker     backgroundWorker = (BackgroundWorker)sender;
            IEnumerable <string> fileNames        = (IEnumerable <string>)arg;

            for (int i = 0; i < fileNames.Count(); ++i)
            {
                string fileName = fileNames.ElementAt(i);
                Pack   pack     = null;

                if (!Packs.TryGetValue(fileName.GetHashCode(), out pack))
                {
                    pack = Pack.Load(fileName);

                    if (pack != null)
                    {
                        Packs.Add(fileName.GetHashCode(), pack);

                        foreach (Asset asset in pack.Assets.Values)
                        {
                            if (!AssetsByType.ContainsKey(asset.Type))
                            {
                                AssetsByType.Add(asset.Type, new List <Asset>());
                            }

                            AssetsByType[asset.Type].Add(asset);
                        }
                    }
                }

                float percent = (Single)(i + 1) / (Single)fileNames.Count();
                backgroundWorker.ReportProgress((int)(percent * 100.0f), System.IO.Path.GetFileName(fileName));
            }
        }