More adding of pointless crap to manager
[progcomp2012.git] / manager / game.h
1 #ifndef MAIN_H
2 #define MAIN_H
3
4 #include "stratego.h"
5 #include "ai_controller.h"
6 #include "human_controller.h"
7
8
9
10 /**
11  * Class to manage the game
12  */
13 class Game
14 {
15         public:
16                 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);
17                 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);
18                 virtual ~Game();
19
20                 
21
22                 void Wait(double wait); 
23
24                 bool Setup(const char * redName, const char * blueName);
25                 MovementResult Play();
26                 void PrintEndMessage(const MovementResult & result);
27                 
28
29                 static void HandleBrokenPipe(int signal);
30                 
31                 
32                 const Piece::Colour Turn() const {return turn;}
33                 int TurnCount() const {return turnCount;}
34
35                 static Game * theGame;
36         public:
37                 int logMessage(const char * format, ...);
38                 FILE * GetLogFile() const {return log;}
39                 Controller * red;
40                 Controller * blue;
41         private:
42                 Piece::Colour turn;
43                 
44         public:
45                 Board theBoard;
46         private:
47                 const bool graphicsEnabled;
48                 double stallTime;
49         public:
50                 const bool allowIllegalMoves;
51
52         private:
53                 FILE * log;
54                 
55                 Piece::Colour reveal;
56                 int turnCount;
57
58                 static bool gameCreated;
59
60                 FILE * input;
61
62                 int maxTurns;
63                 const bool printBoard;
64                 
65 };
66
67 class FileController : public Controller
68 {
69         public:
70                 FileController(const Piece::Colour & newColour, FILE * newFile) : Controller(newColour, "file"), file(newFile) {}
71                 virtual ~FileController() {}
72
73                 virtual void Message(const char * string) {} //Don't send messages
74                 virtual MovementResult QuerySetup(const char * opponentName, std::string setup[]);
75                 virtual MovementResult QueryMove(std::string & buffer);
76                 virtual bool Valid() const {return file != NULL;}
77
78         private:
79                 FILE * file;
80
81
82 };
83
84
85
86 #endif //MAIN_H

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