command for texture packer added.

This commit is contained in:
Harrison Deng 2018-12-08 17:06:11 -06:00
parent 5c0e81e363
commit d73db03c72
2 changed files with 44 additions and 3 deletions

View File

@ -10,6 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
<PackageReference Include="SixLabors.ImageSharp" Version="1.0.0-beta0005" /> <PackageReference Include="SixLabors.ImageSharp" Version="1.0.0-beta0005" />
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta0005" /> <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta0005" />
</ItemGroup> </ItemGroup>

View File

@ -1,17 +1,57 @@
using RecrownedAthenaeum.Tools.CommandProcessor; using RecrownedAthenaeum.Tools.CommandProcessor;
using RecrownedAthenaeum.Tools.TextureAtlas;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using System.Text; using System.Text;
namespace RecrownedAthenaeum.Tools.TextureAtlasTools namespace RecrownedAthenaeum.Tools.TextureAtlasTools
{ {
class TexturePackerCommand : ICommandEngineCommand class TexturePackerCommand : ICommandEngineCommand
{ {
TexturePacker texturePacker;
public void Run(string[] arguments) public void Run(string[] arguments)
{ {
throw new NotImplementedException(); for (int i = 0; i < arguments.Length; i++)
{
if (arguments[i] == "-i")
{
if (i + 1 >= arguments.Length) throw new ArgumentException("-i is not followed by path for input directory.");
texturePacker = new TexturePacker((arguments[i + 1]));
}
}
texturePacker.Build();
for (int i = 0; i < arguments.Length; i++)
{
if (arguments[i] == "-9p")
{
if (i + 5 >= arguments.Length) throw new ArgumentException("-9p is not followed by proper specifiers for a 9Patch (format: \"-9p textureName,a,b,c,d\" where a, b, c, and d are integers definining the border regions for the 9patch.)");
string[] nPatchArgs = arguments[i + 1].Split(',');
try
{
texturePacker.SetNinePatch(nPatchArgs[0], int.Parse(nPatchArgs[1]), int.Parse(nPatchArgs[2]), int.Parse(nPatchArgs[3]), int.Parse(nPatchArgs[4]));
} catch (FormatException)
{
throw new ArgumentException("-9p argument parameters must be in the format \"-9p textureName,a,b,c,d\" where a, b, c, and d are integers definining the border regions for the 9patch.");
}
}
}
for (int i = 0; i < arguments.Length; i++)
{
if (arguments[i] == "-o")
{
if (i + 1 >= arguments.Length) throw new ArgumentException("-o is not followed by path for output files. (eg. path/to/file where file is the name for the atlas.)");
texturePacker.Save(Path.GetDirectoryName(arguments[i + 1]), Path.GetFileName(arguments[i + 1]));
return;
}
if (i == arguments.Length - 1)
{
throw new ArgumentException("no -o argument found to specify output.");
}
}
} }
} }
} }