[PATCH] Handle case where an AI sends an invalid message and then crashes
[progcomp2012.git] / judge / manager / game.h
index cc79e65..ce83545 100644 (file)
@@ -15,8 +15,8 @@
 class Game
 {
        public:
-               Game(const char * redPath, const char * bluePath, const bool enableGraphics, double newStallTime = 1.0, const bool allowIllegal=false, FILE * newLog = NULL, const Piece::Colour & newRevealed = Piece::BOTH, int maxTurns = 5000, const bool printBoard = false, double newTimeoutTime = 2.0, bool server=false, bool client=false);
-               Game(const char * fromFile, const bool enableGraphics, double newStallTime = 1.0, const bool allowIllegal=false, FILE * newLog = NULL, const Piece::Colour & newRevealed = Piece::BOTH, int maxTurns = 5000, const bool printBoard = false, double newTimeoutTime = 2.0);
+               Game(const char * redPath, const char * bluePath, const bool enableGraphics, double newStallTime = 1.0, const bool allowIllegal=false, FILE * newLog = NULL, const Piece::Colour & newRevealed = Piece::BOTH, int maxTurns = 5000, const bool printBoard = false, double newTimeoutTime = 2.0, const char * newImageOutput = "");
+               Game(const char * fromFile, const bool enableGraphics, double newStallTime = 1.0, const bool allowIllegal=false, FILE * newLog = NULL, const Piece::Colour & newRevealed = Piece::BOTH, int maxTurns = 5000, const bool printBoard = false, double newTimeoutTime = 2.0, const char * newImageOutput = "");
                virtual ~Game();
 
                
@@ -38,8 +38,12 @@ class Game
 
                static Game * theGame;
                static int Tokenise(std::vector<std::string> & buffer, std::string & str, char split = ' '); //Helper - Split a string into tokens
+
+       private:
+               void MakeControllers(const char * redPath, const char * bluePath); //Create a controller based off a path
        public:
                int logMessage(const char * format, ...);
+               static void PrintResults(const MovementResult & result, std::string & buffer);
                FILE * GetLogFile() const {return log;}
                Controller * red;
                Controller * blue;
@@ -70,6 +74,7 @@ class Game
 
        private:
                double timeoutTime;
+               std::string imageOutput;
                
 };
 
@@ -79,7 +84,7 @@ class FileController : public Controller
                FileController(const Piece::Colour & newColour, FILE * newFile) : Controller(newColour, "file"), file(newFile) {}
                virtual ~FileController() {}
 
-               virtual void Message(const char * string) {} //Don't send messages
+               virtual bool Message(const char * string) {return true;} //Don't send messages
                virtual MovementResult QuerySetup(const char * opponentName, std::string setup[]);
                virtual MovementResult QueryMove(std::string & buffer);
                virtual bool Valid() const {return file != NULL;}
@@ -90,6 +95,7 @@ class FileController : public Controller
 
 };
 
+std::string itostr(int i);
 
 
 #endif //MAIN_H

UCC git Repository :: git.ucc.asn.au