X-Git-Url: https://git.ucc.asn.au/?p=progcomp2012.git;a=blobdiff_plain;f=judge%2Fmanager%2Fmain.cpp;h=e65ef0d1b6a142781f821fc076a2d42b21b0d29d;hp=0fbd6aef6c35d51476a33407681a28a2e11a6530;hb=341297b4dce9528d54fe9dceeff0d6dc33f70abe;hpb=1a03b2543b67f0551e62babec4cd119f1e0e4640 diff --git a/judge/manager/main.cpp b/judge/manager/main.cpp index 0fbd6ae..e65ef0d 100644 --- a/judge/manager/main.cpp +++ b/judge/manager/main.cpp @@ -8,6 +8,7 @@ #include "game.h" + using namespace std; Piece::Colour SetupGame(int argc, char ** argv); @@ -61,8 +62,9 @@ int main(int argc, char ** argv) Piece::Colour SetupGame(int argc, char ** argv) { - char * red = NULL; char * blue = NULL; double timeout = 0.00001; bool graphics = false; bool allowIllegal = false; FILE * log = NULL; - Piece::Colour reveal = Piece::BOTH; char * inputFile = NULL; int maxTurns = 5000; bool printBoard = false; + char * red = NULL; char * blue = NULL; double stallTime = 0.0; bool graphics = false; bool allowIllegal = false; FILE * log = NULL; + Piece::Colour reveal = Piece::BOTH; char * inputFile = NULL; int maxTurns = 5000; bool printBoard = false; double timeoutTime = 2.0; + for (int ii=1; ii < argc; ++ii) { if (argv[ii][0] == '-') @@ -72,17 +74,37 @@ Piece::Colour SetupGame(int argc, char ** argv) case 't': if (argc - ii <= 1) { - fprintf(stderr, "ARGUMENT_ERROR - Expected timeout value after -t switch!\n"); + fprintf(stderr, "ARGUMENT_ERROR - Expected stall time value after -t switch!\n"); exit(EXIT_FAILURE); } if (strcmp(argv[ii+1], "inf") == 0) - timeout = -1; + stallTime = -1; else - timeout = atof(argv[ii+1]); + stallTime = atof(argv[ii+1]); ++ii; break; + + case 'T': + if (argc - ii <= 1) + { + fprintf(stderr, "ARGUMENT_ERROR - Expected timeout value after -T switch!\n"); + exit(EXIT_FAILURE); + } + if (strcmp(argv[ii+1], "inf") == 0) + timeoutTime = -1; + else + timeoutTime = atof(argv[ii+1]); + ++ii; + break; + case 'g': + #ifdef BUILD_GRAPHICS graphics = !graphics; + #else + fprintf(stderr, "ERROR: -g switch supplied, but the program was not built with graphics.\n Please do not use the -g switch."); + exit(EXIT_FAILURE); + #endif //BUILD_GRAPHICS + break; case 'p': printBoard = !printBoard; @@ -185,20 +207,22 @@ Piece::Colour SetupGame(int argc, char ** argv) } } - + if (graphics && stallTime == 0.0) + stallTime = 0.00001; //Hack so that SDL events (ie SDL_QUIT) will have time to be captured when graphics are enabled if (inputFile == NULL) { - if (red == NULL || blue == NULL) //Not enough arguments + if (red == NULL || blue == NULL) //Not enough players { fprintf(stderr, "ARGUMENT_ERROR - Did not recieve enough players (did you mean to use the -f switch?)\n"); exit(EXIT_FAILURE); } - Game::theGame = new Game(red,blue, graphics, timeout, allowIllegal,log, reveal,maxTurns, printBoard); + + Game::theGame = new Game(red,blue, graphics, stallTime, allowIllegal,log, reveal,maxTurns, printBoard, timeoutTime); } else { - Game::theGame = new Game(inputFile, graphics, timeout, allowIllegal,log, reveal,maxTurns, printBoard); + Game::theGame = new Game(inputFile, graphics, stallTime, allowIllegal,log, reveal,maxTurns, printBoard, timeoutTime); } if (Game::theGame == NULL) @@ -240,7 +264,8 @@ void PrintResults(const MovementResult & result, string & buffer) { switch (result.type) { - case MovementResult::VICTORY: + case MovementResult::VICTORY_FLAG: + case MovementResult::VICTORY_ATTRITION: //It does not matter how you win, it just matters that you won! s << "VICTORY "; break; case MovementResult::SURRENDER: