Exemplo n.º 1
0
        private SpriteDictionary[] GetDicts(out string version)
        {
            version = "";
            var dicts = new List <SpriteDictionary>();

            if (File.Exists(MetaXmlPath))
            {
                var document = XDocument.Load(MetaXmlPath);
                version = document.Root.Element("Version").Value;
                var scales       = document.Root.Element("Scales");
                var spriteCounts = new Dictionary <ImageScale, int>();
                if (scales != null)
                {
                    foreach (var scale in scales.Elements("Scale"))
                    {
                        var imageScale = new ImageScale(
                            int.Parse(scale.Element("Numerator").Value),
                            int.Parse(scale.Element("Denominator").Value));
                        var spriteCount = int.Parse(scale.Element("SpriteCount").Value);
                        spriteCounts.Add(imageScale, spriteCount);
                    }
                }
                foreach (var pair in spriteCounts)
                {
                    var scale = pair.Key;
                    for (var i = 0; i < pair.Value; i++)
                    {
                        dicts.Add(new SpriteDictionary(ImageDir, i, scale));
                    }
                }
            }
            return(dicts.ToArray());
        }
Exemplo n.º 2
0
        /// <summary>
        /// コンストラクタです。
        /// </summary>
        /// <param name="dir"></param>
        /// <param name="index"></param>
        /// <param name="imageScale"></param>
        public SpriteDictionary(string dir, int index, ImageScale imageScale)
        {
            Sprites = new Dictionary <string, SpriteInfo>();
            SpritesWithActualPath = new Dictionary <string, SpriteInfo>();
            ImageScale            = imageScale;
            ImagePath             = Path.Combine(dir, String.Format("{0}.{1}_{2}.png", index, imageScale.Numerator, imageScale.Denominator));
            var xmlPath = Path.Combine(dir, String.Format("{0}.{1}_{2}.xml", index, imageScale.Numerator, imageScale.Denominator));

            if (File.Exists(xmlPath))
            {
                var document = XDocument.Load(xmlPath);
                foreach (var imageElement in document.Descendants("Image"))
                {
                    var path             = imageElement.Element("Path").Value;
                    var scaleRemovedPath = RemoveScale(path);
                    var width            = int.Parse(imageElement.Element("Width").Value);
                    var height           = int.Parse(imageElement.Element("Height").Value);
                    var spaceWidth       = int.Parse(imageElement.Element("SpaceWidth").Value);
                    var spaceHeight      = int.Parse(imageElement.Element("SpaceHeight").Value);
                    var x             = int.Parse(imageElement.Element("X").Value);
                    var y             = int.Parse(imageElement.Element("Y").Value);
                    var lastWriteTime = DateTime.Parse(imageElement.Element("LastWriteTime").Value);
                    var spriteInfo    = new SpriteInfo(scaleRemovedPath, width, height, spaceWidth, spaceHeight, x, y, lastWriteTime);
                    Sprites[scaleRemovedPath]   = spriteInfo;
                    SpritesWithActualPath[path] = spriteInfo;
                }
            }
        }
Exemplo n.º 3
0
        private void InitializeScale()
        {
            var match = scaleRegex.Match(Path);

            if (match.Success)
            {
                ScaleNumerator   = int.Parse(match.Groups[1].Value);
                ScaleDenominator = int.Parse(match.Groups[2].Value);
            }
            else
            {
                ScaleNumerator   = 1;
                ScaleDenominator = 1;
            }
            var gcd = Gcd(ScaleNumerator, ScaleDenominator);

            ScaleNumerator   /= gcd;
            ScaleDenominator /= gcd;
            Scale             = new ImageScale(ScaleNumerator, ScaleDenominator);
        }