recrownedathenaeum/RecrownedAthenaeum.ConsoleTools/NinePatchTools/NinePatchCommand.cs

51 lines
2.9 KiB
C#
Raw Normal View History

using Newtonsoft.Json;
using RecrownedAthenaeum.Pipeline.NinePatch;
using RecrownedAthenaeum.Tools.CommandProcessor;
using System;
using System.IO;
namespace RecrownedAthenaeum.Tools.NinePatchTools
{
public class NinePatchCommand : EngineCommand
{
public NinePatchCommand() : base("9p", "ninepatch", "9patch")
{
help = "Generates a 9 patch file for a given image.";
arguments = new EngineCommandArgument[6];
arguments[0] = new EngineCommandArgument("-i", "defines the path to the texture to be used for the nine patch.");
arguments[1] = new EngineCommandArgument("-o", "defines path of output file.");
arguments[2] = new EngineCommandArgument("-l", "left patch.");
arguments[3] = new EngineCommandArgument("-r", "right patch.");
arguments[4] = new EngineCommandArgument("-u", "up patch.");
arguments[5] = new EngineCommandArgument("-d", "down patch.");
}
public override void Run(string[] arguments = null)
{
if (arguments == null) throw new ArgumentException("Missing arguments. Type \"help 9p\" for more information.");
int leftBound = 0, rightBound = 0, topBound = 0, bottomBound = 0;
string imagePath, outPath;
if (IndexOfArgumentIn("-i", arguments) + 1 >= arguments.Length) throw new ArgumentException("Missing -i argument path.");
imagePath = arguments[IndexOfArgumentIn("-i", arguments) + 1];
if (IndexOfArgumentIn("-o", arguments) + 1 >= arguments.Length) throw new ArgumentException("Missing -o argument path.");
outPath = arguments[IndexOfArgumentIn("-o", arguments) + 1];
if (IndexOfArgumentIn("-l", arguments) + 1 >= arguments.Length && !int.TryParse(arguments[IndexOfArgumentIn("-l", arguments) + 1], out leftBound)) throw new ArgumentException("Missing -l argument bound.");
if (IndexOfArgumentIn("-r", arguments) + 1 >= arguments.Length && !int.TryParse(arguments[IndexOfArgumentIn("-r", arguments) + 1], out rightBound)) throw new ArgumentException("Missing -r argument bound.");
if (IndexOfArgumentIn("-u", arguments) + 1 >= arguments.Length && !int.TryParse(arguments[IndexOfArgumentIn("-u", arguments) + 1], out topBound)) throw new ArgumentException("Missing -u argument bound.");
if (IndexOfArgumentIn("-d", arguments) + 1 >= arguments.Length && !int.TryParse(arguments[IndexOfArgumentIn("-d", arguments) + 1], out bottomBound)) throw new ArgumentException("Missing -d argument bound.");
NinePatchData npData = new NinePatchData(Path.GetFileName(imagePath), leftBound, rightBound, bottomBound, topBound);
string serialized = JsonConvert.SerializeObject(npData, Formatting.Indented);
using (StringWriter stringWriter = new StringWriter())
{
stringWriter.WriteLine(serialized);
}
}
}
}