public static SpriteFilenameSettings FromFilename(string path) { var settings = new SpriteFilenameSettings(); foreach (var segment in Path.GetFileNameWithoutExtension(path) .Split('.') .Skip(1) .Select(segment => segment.Trim().ToLowerInvariant())) { if (SpriteMakingSettings.TryParseSpriteType(segment, out var type)) { settings.Type = type; } else if (SpriteMakingSettings.TryParseSpriteTextureFormat(segment, out var textureFormat)) { settings.TextureFormat = textureFormat; } else if (TryParseSpritesheetTileSize(segment, out var spritesheetTileSize)) { settings.SpritesheetTileSize = spritesheetTileSize; } else if (int.TryParse(segment, out var frameNumber)) { settings.FrameNumber = frameNumber; } else if (TryParseFrameOffset(segment, out var frameOffset)) { settings.FrameOffset = frameOffset; } } return(settings); }
public string InsertIntoFilename(string path) { var extension = Path.GetExtension(path); var sb = new StringBuilder(); if (Type != null && Type != SpriteType.Parallel) { sb.Append($".{SpriteMakingSettings.GetSpriteTypeShorthand(Type.Value)}"); } if (TextureFormat != null && TextureFormat != SpriteTextureFormat.Additive) { sb.Append($".{SpriteMakingSettings.GetSpriteTextureFormatShorthand(TextureFormat.Value)}"); } if (SpritesheetTileSize != null) { sb.Append($".{SpritesheetTileSize.Value.Width}x{SpritesheetTileSize.Value.Height}"); } if (FrameNumber != null) { sb.Append($".{FrameNumber.Value}"); } if (FrameOffset != null) { sb.Append($".@{FrameOffset.Value.X},{FrameOffset.Value.Y}"); } return(Path.ChangeExtension(path, sb.ToString() + extension)); }