#include "options.h" #include "version.h" #include "game.h" #include #include #include using namespace Bu; Options::Options() { } Options::~Options() { } void Options::parse( int argc, char *argv[] ) { Bu::OptParser opt; opt.addHelpBanner("STAGE v" VERSION " - Simple, Textual, Adventure Game Environment"); opt.addHelpBanner("usage: " + Bu::String(argv[0]) + " [options] \n"); opt.addOption( Bu::slot( this, &Options::version ), "version", "Show full version info." ); opt.addOption( Bu::slot( this, &Options::builtins ), "builtins", "List available builtins." ); opt.addHelpOption('h', "help"); opt.setNonOption( Bu::slot( this, &Options::nonOption ) ); opt.parse( argc, argv ); } int Options::version( Bu::StrArray aArgs ) { sio << "STAGE v" VERSION " - Simple, Textual, Adventure Game Environment." << sio.nl << sio.nl; sio << "Full version: " FULLVER << sio.nl; sio << "Build date: " TIMEVER << sio.nl; sio << "Build id: " SHAVER << sio.nl; sio << sio.nl; exit( 0 ); return 0; } int Options::builtins( Bu::StrArray aArgs ) { sio << "Current builtin functions:" << sio.nl; Game g; const Game::FunctionHash &hFnc = g.getFunctionHash(); for( Game::FunctionHash::const_iterator i = hFnc.begin(); i; i++ ) { sio << " - " << i.getKey() << sio.nl; } sio << sio.nl; exit( 0 ); return 0; } int Options::nonOption( Bu::Array aArgs ) { sFile = aArgs[0]; return 0; }