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()); }
/// <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; } } }
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); }