using System; using System.Collections.Generic; namespace ConsoleApp { class MainClass { private static Dictionary CommandLookup; private static void SetupCommands() { CommandLookup = new Dictionary(); CommandLookup.Add("init", new InitCommand()); CommandLookup.Add("list", new ListCommand()); CommandLookup.Add("list-offsets", new ListOffsetsCommand()); CommandLookup.Add("import-obj", new ImportObjCommand()); CommandLookup.Add("export-obj", new ExportObjCommand()); CommandLookup.Add("export-collada", new ExportColladaCommand()); CommandLookup.Add("export-textures", new ExportTexturesCommand()); CommandLookup.Add("replace-image", new ReplaceImageCommand()); CommandLookup.Add("render-model", new RenderModelCommand()); } public static void Main(string[] args) { // Debugging BS //args = new string[] { "list", "/home/me/Dropbox/NEWERsmbw/bigbrick/big_renga_block.brres" }; //System.IO.Directory.SetCurrentDirectory("/home/me/Games/Newer/CGround"); //args = new string[] { "export-collada", "regular.brres", "large.dae", "circle_ground_L" }; //System.IO.Directory.SetCurrentDirectory("/home/me/Games/Newer/ModelRev"); //args = new string[] { "import-obj", "MMFullWorld.brres", "fullworld-Z19nvrc.obj", "WorldBase", "map" }; Console.WriteLine("NW4RTools by Treeki"); Console.WriteLine(); SetupCommands(); // process the command line string cmd; string[] cmdArgs; if (args.Length == 0) { cmd = "help"; cmdArgs = new string[0]; } else { cmd = args[0]; cmdArgs = new string[args.Length - 1]; for (int i = 1; i < args.Length; i++) { cmdArgs[i - 1] = args[i]; } } // handle Help if needed if (cmd == "help") { Help(cmdArgs); return; } // otherwise, pass it on if (CommandLookup.ContainsKey(cmd)) { CommandLookup[cmd].Execute(cmdArgs); } else { Console.WriteLine("Unknown command {0}. Try \"help\" for a list of usable commands", cmd); } } private static void Help(string[] args) { if (args.Length == 0) { Console.WriteLine("Available commands:"); foreach (var cmd in CommandLookup) { Console.WriteLine("- {0}: {1}", cmd.Key, cmd.Value.Description); } Console.WriteLine(); Console.WriteLine("For additional info, try: help "); } else { if (CommandLookup.ContainsKey(args[0])) { Console.WriteLine("Help for {0}:", args[0]); string[] helpArgs = new string[args.Length - 1]; for (int i = 1; i < args.Length; i++) { helpArgs[i - 1] = args[i]; } Console.WriteLine(CommandLookup[args[0]].GetHelp(helpArgs)); } else { Console.WriteLine("Unknown command {0}. Try \"help\" for a list of usable commands", args[0]); } } } } }