public void LoadSprites() { LoadCatalogJson(); catalog.Sort((x, y) => x.FirstSpriteid.CompareTo(y.FirstSpriteid)); var options = new ParallelOptions() { MaxDegreeOfParallelism = Environment.ProcessorCount * 5 }; if (ToSpr.Checked) { version = new OpenTibia.Core.Version(1000, "Client 10.00", DatSignature, SprSignature, 0); Features = OpenTibia.Client.ClientFeatures.Extended; sprites = SpriteStorage.Create(version, Features); } progress = 0; Directory.CreateDirectory(_dumpToPath + @"//slices//"); Parallel.ForEach(catalog, options, (sheet, state) => { progress++; if (sheet.Type == "sprite") { DumpSpriteSheet(sheet); } worker.ReportProgress((int)(progress * 100 / catalog.Count)); }); if (ToSpr.Checked) { foreach (var tile in concurrentDictionary.OrderBy(tile => tile.Key)) { sprites.AddSprites(tile.Value); } sprites.Save(String.Format("{0}//Clients//Tibia.spr", _dumpToPath), version); } }