using System; using System.Collections.Generic; using System.Windows.Markup; using System.IO; using System.Reflection; namespace SpritePacker { enum ProgramMode { Normal, DisplayHelpText, DisplayVersionText }; class Program { private static ProgramMode programMode = ProgramMode.Normal; private static string helpTextFilename = "SpritePacker.Resources.HelpText.txt"; private static string versionTextFilename = "SpritePacker.Resources.VersionText.txt"; private static List values = new List(); public static void Main(string[] args) { for(int i = 0; i < args.Length; i++) { switch(args[i]) { case "--help": programMode = ProgramMode.DisplayHelpText; break; case "--version": programMode = ProgramMode.DisplayVersionText; break; default: values.Add(args[i]); break; } } switch(programMode) { case ProgramMode.Normal: RunNormal(); break; case ProgramMode.DisplayHelpText: case ProgramMode.DisplayVersionText: string textFileName = programMode == ProgramMode.DisplayHelpText ? helpTextFilename : versionTextFilename; string helpText = Utilities.GetEmbeddedResourceContent(textFileName); string commitHash = Utilities.GetEmbeddedResourceContent("SpritePacker.latest-commit-hash.txt").Trim(); Dictionary templateValues = new Dictionary() { { "version", Utilities.GetProgramVersion().ToString() }, { "build-date", Utilities.GetProgramBuildDate().ToString("dd/MM/yyyy h:mmtt") }, { "commit-hash", commitHash.Substring(commitHash.Length - 7) }, { "commit-url", string.Format("https://git.starbeamrainbowlabs.com/sbrl/SpritePacker/commit/{0}", commitHash) } }; foreach (KeyValuePair replacePair in templateValues) helpText = helpText.Replace(string.Format("{{{0}}}", replacePair.Key), replacePair.Value); Console.WriteLine(helpText); break; } } public static void RunNormal() { Packer spritePacker = new Packer(); foreach(string filename in values) { if (File.Exists(filename)) spritePacker.Add(new Sprite(filename)); else Console.Error.WriteLine("Warning: Ignoring non-existent file '{0}'.", filename); } spritePacker.Arrange(); Console.WriteLine(spritePacker.ToString()); } } }