Ejemplo n.º 1
0
 protected override void DisposeResource()
 {
     base.DisposeResource();
     if (resourceManager != null)
     {
         resourceManager.Dispose();
         resourceManager = null;
     }
     foreach (var vertex in createdVertices)
     {
         vertex.Dispose();
     }
     createdVertices.Clear();
 }
Ejemplo n.º 2
0
        private void UnPackAll(PackReader packReader, string spriteDirName, DateTime lastWriteTime)
        {
            var imageList       = new List <string>();
            var effectImageList = new Dictionary <string, List <string> >();

            foreach (var fileName in packReader.FileList)
            {
                if (!fileName.StartsWith("Effect", StringComparison.Ordinal))
                {
                    continue;
                }
                var split = fileName.Split('\\');
                if (split.Length < 3)
                {
                    continue;
                }
                var effectName                = split[1];
                var effectImageName           = split[2];
                var normalizedEffectImageName = SpriteDictionary.RemoveScale(effectImageName);
                var key = Path.Combine("Effect", effectName, normalizedEffectImageName);
                if (!effectImageList.TryGetValue(key, out List <string> effectImageNames))
                {
                    effectImageNames = new List <string>();
                    effectImageList.Add(key, effectImageNames);
                }
                effectImageNames.Add(fileName);
            }
            foreach (string resourceName in packReader.FileList)
            {
                var ppdpsr = packReader.Read(resourceName);
                var split  = resourceName.Split('\\');
                if (split.Length == 2)
                {
                    switch (split[0])
                    {
                    case "Image":
                        imageList.Add(resourceName);
                        break;

                    case "Effect":
                        if (Path.GetExtension(resourceName) == ".etd")
                        {
                            EffectLoader.Load(ppdpsr, resourceName, (ReadResourceCallBack)((filename) =>
                            {
                                if (effectImageList.ContainsKey(filename))
                                {
                                    foreach (var imageFileName in effectImageList[filename])
                                    {
                                        imageList.Add(imageFileName);
                                    }
                                }
                            }), f => packReader.Read(f));
                        }
                        break;

                    case "Sound":
                        byte[] data = new byte[ppdpsr.Length];
                        ppdpsr.Read(data, 0, data.Length);
                        soundDict.Add(resourceName, data);
                        break;

                    case "Others":
                        data = new byte[ppdpsr.Length];
                        ppdpsr.Read(data, 0, data.Length);
                        othersDict.Add(resourceName, data);
                        break;
                    }
                }
            }
            var spriteManager = new PPDPackSpriteManager(packReader, imageList.ToArray(), spriteDirName, lastWriteTime);

            spriteManager.Pack();
            resourceManager = new SpriteResourceManager(device, spriteManager);
        }