@@ -43,7 +43,7 @@ GLuint loadImageAsTexture(const string& name) {
4343 return texture;
4444}
4545
46- inline pair<float , float > coordToScreen (const Coordinate& coord) {
46+ pair<float , float > coordToScreen (const Coordinate& coord) {
4747 using std::sin;
4848 using std::cos;
4949 // TODO not magic numbers
@@ -54,16 +54,16 @@ inline pair<float, float> coordToScreen(const Coordinate& coord) {
5454 return std::make_pair (x - 0 .25f , y - 0 .4f );
5555}
5656
57- inline void vertexPair (const Coordinate& coord) {
57+ void vertexPair (const Coordinate& coord) {
5858 pair<float , float > screenCoord = coordToScreen (coord);
5959 glVertex2f (screenCoord.first , screenCoord.second );
6060}
6161
62- inline void texCoordPair (const pair<float , float >& p) {
62+ void texCoordPair (const pair<float , float >& p) {
6363 glTexCoord2f (p.first / 2048 ., p.second / 2048 .);
6464}
6565
66- inline pair<float , float > averagePoint (const std::vector<pair<float , float >>& points) {
66+ pair<float , float > averagePoint (const std::vector<pair<float , float >>& points) {
6767 pair<float , float > average;
6868 for (auto & it : points) {
6969 average.first += it.first ;
@@ -72,64 +72,4 @@ inline pair<float, float> averagePoint(const std::vector<pair<float, float>>& po
7272 average.first /= (float ) points.size ();
7373 average.second /= (float ) points.size ();
7474 return average;
75- }
76-
77- void drawHex (const Coordinate& coord, const ResourceTile& tile) {
78- static GLuint tileTextures = loadImageAsTexture (" resources/tiles.bmp" );
79- glBindTexture (GL_TEXTURE_2D, tileTextures);
80- typedef std::vector<pair<float , float > > texCoordList;
81- static const std::map<resourceType, texCoordList> resourceTexCoords = {
82- make_pair (WHEAT, texCoordList { make_pair (377 , 73 ), make_pair (500 , 285 ),
83- make_pair (380 , 502 ), make_pair (136 , 503 ), make_pair (10 , 288 ), make_pair (134 , 74 )}),
84- make_pair (SHEEP, texCoordList { make_pair (959 , 75 ), make_pair (1076 , 288 ),
85- make_pair (955 , 503 ), make_pair (712 , 501 ), make_pair (586 , 289 ), make_pair (708 , 73 )}),
86- make_pair (WOOD, texCoordList { make_pair (1491 , 60 ), make_pair (1618 , 269 ),
87- make_pair (1479 , 490 ), make_pair (1260 , 493 ), make_pair (1126 , 283 ), make_pair (1246 , 65 )}),
88- make_pair (STONE, texCoordList { make_pair (382 , 689 ), make_pair (506 , 898 ),
89- make_pair (386 , 1118 ), make_pair (142 , 1120 ), make_pair (17 , 905 ), make_pair (138 , 691 )}),
90- make_pair (BRICK, texCoordList { make_pair (1496 , 690 ), make_pair (1617 , 908 ),
91- make_pair (1490 , 1120 ), make_pair (1248 , 1118 ), make_pair (1124 , 898 ), make_pair (1250 , 688 )}),
92- make_pair (DESERT, texCoordList { make_pair (1496 , 690 ), make_pair (1617 , 908 ),
93- make_pair (1490 , 1120 ), make_pair (1248 , 1118 ), make_pair (1124 , 898 ), make_pair (1250 , 688 )}),
94- };
95- static Coordinate adjacentCoordDiffs[] = {Coordinate (0 , 1 ), Coordinate (1 , 0 ), Coordinate (1 , -1 ), Coordinate (0 , -1 ), Coordinate (-1 , 0 ), Coordinate (-1 , 1 )};
96- if (resourceTexCoords.find (tile.resource ) == resourceTexCoords.end ()) {
97- throw runtime_error (" Cannot draw this tile; it is invalid." );
98- }
99- const texCoordList& texCoords = resourceTexCoords.find (tile.resource )->second ;
100- glBegin (GL_TRIANGLE_FAN);
101- texCoordPair (averagePoint (texCoords));
102- vertexPair (coord);
103- for (unsigned int i = 0 ; i < texCoords.size (); i++) {
104- texCoordPair (texCoords[i]);
105- Coordinate diff = adjacentCoordDiffs[i];
106- vertexPair (Coordinate (coord.first + diff.first , coord.second + diff.second ));
107- }
108- texCoordPair (texCoords[0 ]);
109- vertexPair (Coordinate (coord.first + adjacentCoordDiffs[0 ].first , coord.second + adjacentCoordDiffs[0 ].second ));
110- glEnd ();
111- /*
112- glBegin(GL_QUADS);
113- glTexCoord2f(0, 0); glVertex2f(0, 0);
114- glTexCoord2f(1, 0); glVertex2f(1, 0);
115- glTexCoord2f(1, 1); glVertex2f(1, 1);
116- glTexCoord2f(0, 1); glVertex2f(0, 1);
117- glEnd();
118- */
119- glBindTexture (GL_TEXTURE_2D, 0 );
120- }
121-
122- void renderBoard (const GameBoard& board, const Player& perspective) {
123- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
124-
125- for (auto & it : board.getResources ()) {
126- const Coordinate& coord = it.first ;
127- const GamePiece& piece = *(it.second );
128- if (dynamic_cast <const ResourceTile*>(&piece)) {
129- const ResourceTile& tile = static_cast <const ResourceTile&>(piece);
130- drawHex (coord, tile);
131- }
132- }
133-
134- glFlush ();
135- }
75+ }
0 commit comments