1 /***************************************************************************
2  * Brutal Chess
3  * http://brutalchess.sf.net
4  *
5  * File : options.h
6  * Authors : Mike Cook, Joe Flint, Neil Pankey
7  **************************************************************************/
8 
9 #ifndef OPTIONS_H
10 #define OPTIONS_H
11 
12 #include <map>
13 #include <string>
14 
15 enum BoardType {GRANITE, WOOD};
16 enum PiecesType {BASIC, DEBUG, QUAKE};
17 enum PlayerType {BRUTAL, FAILE, HUMAN, RANDOM, TEST, XBOARD};
18 enum Difficulty {EASY=2, MEDIUM=3, HARD=4};
19 
20 #define DEFAULT_PLY_DEPTH MEDIUM
21 
22 // Keep things synced between menu events and this
23 enum Resolution {r640X480, r800X600, r1024X768, r1280X1024, r1400X1050, r1600X1200, };
24 
25 class Options {
26  public:
27 	static Options* getInstance();
28 
29 	bool animations, fullscreen, historyarrows, reflections, shadows;
30 	BoardType board;
31 	Difficulty player1diff, player2diff;
32 	PiecesType pieces;
33 	PlayerType player1, player2;
34 	Resolution resolution;
35 
36 	// Won't need eventually
37 	int brutalplayer1ply, brutalplayer2ply;
38 
getBoardString()39     std::string getBoardString()
40 		{ return m_boardTypeString[board]; }
41 
getPiecesString()42     std::string getPiecesString()
43 		{ return m_piecesTypeString[pieces]; }
44 
getPlayer1String()45     std::string getPlayer1String()
46 		{ return m_playerTypeString[player1]; }
47 
getPlayer1DiffString()48     std::string getPlayer1DiffString()
49 		{ return m_difficultyString[player1diff]; }
50 
getPlayer2String()51     std::string getPlayer2String()
52 		{ return m_playerTypeString[player2]; }
53 
getPlayer2DiffString()54     std::string getPlayer2DiffString()
55 		{ return m_difficultyString[player2diff]; }
56 
getResolutionString()57     std::string getResolutionString()
58 		{ return m_resolutionString[resolution]; }
59 
getResolutionHeight()60 	int getResolutionHeight()
61 		{ return m_resolutionHeightInt[resolution]; }
62 
getResolutionWidth()63 	int getResolutionWidth()
64 		{ return m_resolutionWidthInt[resolution]; }
65 
66  private:
67 
68 	Options();
69 
70 	static Options* m_instance;
71 
72     std::map<BoardType, std::string>    m_boardTypeString;
73     std::map<PiecesType, std::string>   m_piecesTypeString;
74     std::map<PlayerType, std::string>   m_playerTypeString;
75     std::map<Difficulty, std::string>   m_difficultyString;
76     std::map<Resolution, std::string>   m_resolutionString;
77     std::map<Resolution, int>           m_resolutionHeightInt;
78     std::map<Resolution, int>           m_resolutionWidthInt;
79 };
80 
81 #endif
82 
83 // end of file options.h
84