Exemple #1
0
        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);
            }
        }