//----------------------------------------------------------------------------- // Torque Game Engine // Copyright (C) GarageGames.com, Inc. //----------------------------------------------------------------------------- #include "platform/platform.h" #include "platform/event.h" #include "platform/platformAssert.h" #include "console/console.h" #include "console/consoleTypes.h" #include "math/mathTypes.h" #include "langc/langc.h" #include "core/fileStream.h" #include "i18n/lang.h" #include "langcomp.h" #include "Getopt.h" #include ////////////////////////////////////////////////////////////////////////// LangCGame GameObject; // FOR SILLY LINK DEPENDANCY. REMOVE THIS AT YOUR PERIL. bool gEditingMission = false; ////////////////////////////////////////////////////////////////////////// static bool initLibraries() { // asserts should be created FIRST PlatformAssert::create(); _StringTable::create(); // ResManager::create(); Con::init(); Math::init(); Platform::init(); // platform specific initialization return(true); } static void shutdownLibraries() { // Purge any resources on the timeout list... // if (ResourceManager) // ResourceManager->purge(); // shut down Platform::shutdown(); Con::shutdown(); // ResManager::destroy(); _StringTable::destroy(); // asserts should be destroyed LAST PlatformAssert::destroy(); } ////////////////////////////////////////////////////////////////////////// static void usage(void) { dPrintf("Usage: langc [options] \n\n"); dPrintf("Where options is one or more of:\n\n"); dPrintf(" -l Write Language File -h Write C++ Header\n"); dPrintf(" -s Write Script -d Write C++ Defaults\n"); dPrintf(" -t Compile a translation -r Write translation file\n"); dPrintf(" -e Specify english file when compiling translations\n"); dPrintf("\n"); dPrintf(" -S Don't strip leading spaces -T Strip trailing spaces\n"); dPrintf(" -I Don't warn for invalid chars -W Don't warn for empty identifiers\n"); dPrintf(" -q Quiet mode, no warnings at all\n"); dPrintf("\nMore information can be found in the documentation at:\n %s\n", I18N_DOC_URL); } S32 LangCGame::main(S32 argc, const char **argv) { S32 i, ch; U32 flags = LCO_WARNNOSTRING; Getopt opts("STIWqhsdlrte:"); char *englishFile = NULL; if(! initLibraries()) return 0; while((ch = opts.getopt(argc, (char **)argv)) != -1) { switch(ch) { case 't': // Compile a translation flags |= LCO_COMPILETRANSLATION; break; case 'e': // Specify english file englishFile = opts.m_sOptArg; break; case 'S': // Don't strip spaces flags |= LCO_DONTSTRIPSPACES; break; case 'T': // Strip trailing space flags |= LCO_STRIPTRAILINGSPACE; break; case 'I': // Don't warn for invalid chars flags |= LCO_DONTWARNINVALIDCHAR; break; case 'W': // Don't warn for empty identifiers flags &= ~LCO_WARNNOSTRING; break; case 'q': // Quiet mode, no warnings at all flags |= LCO_NOWARNINGS; break; case 'h': // Write Header flags |= LCO_WRITEHEADER; break; case 's': // Write Script flags |= LCO_WRITESCRIPT; break; case 'd': // Write C++ Defaults flags |= LCO_WRITECDEFAULTS; break; case 'l': // Write Lang Table flags |= LCO_WRITELANGTABLE; break; case 'r': // Write translation flags |= LCO_WRITETRANSLATION; break; case GO_BAD_ARG: dPrintf("option %c requires an argument\n", opts.m_nOptOpt); break; case GO_INVALID_CHAR: dPrintf("%c is an invalid option\n", opts.m_nOptOpt); break; case GO_BAD_CHAR: usage(); shutdownLibraries(); return 0; } } argc -= opts.m_nOptInd; argv += opts.m_nOptInd; if(argc < 2) { usage(); return 0; } LangComp c(flags); dPrintf("Compiling ... \n"); c.Compile(argv[0], argv[1], englishFile); shutdownLibraries(); return 0; } ////////////////////////////////////////////////////////////////////////// void GameReactivate() { } void GameDeactivate( bool ) { }