Skip to content

Commit 76e73d9

Browse files
author
root
committed
Added serialization of tiles (seems to work) and roads (don't have a way to test right now)
1 parent c6e1837 commit 76e73d9

File tree

13 files changed

+148
-12
lines changed

13 files changed

+148
-12
lines changed

include/City.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class City : public CornerPiece {
1212
~City();
1313
City& operator=(City&) = delete;
1414

15-
void accept(GameVisitor&);
15+
virtual void accept(GameVisitor&);
1616
};
1717

1818
#endif

include/GameBoard.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class GameBoard {
2222
private:
2323
std::map<Coordinate, std::unique_ptr<GamePiece>> corners;
2424
std::map<Coordinate, std::unique_ptr<GamePiece>> resources;
25-
std::vector<std::unique_ptr<const Road>> roads;
25+
std::vector<std::unique_ptr<Road>> roads;
2626

2727
int constructBoardFromFile(std::ifstream &file);
2828
int constructFileFromBoard(std::ofstream &file);

include/GamePiece.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ class GamePiece {
2525

2626
Coordinate location;
2727

28-
void accept(GameVisitor&);
28+
virtual void accept(GameVisitor&) = 0;
29+
Coordinate getLocation() const;
2930
};
3031

3132
class ResourceTile : public GamePiece {
@@ -43,7 +44,9 @@ class ResourceTile : public GamePiece {
4344

4445
virtual ~ResourceTile();
4546

46-
void accept(GameVisitor&);
47+
virtual void accept(GameVisitor&);
48+
resourceType getType() const;
49+
int getDiceValue() const;
4750
};
4851

4952
#endif

include/Player.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class Player {
6060
void setWheat(int resource);
6161
void setWool(int resource);
6262

63-
63+
std::string getName() const;
6464
};
6565

6666
#endif

include/Road.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,25 @@
33

44
#include "Util.h"
55

6+
#include "Player.h"
7+
68
class GameVisitor;
79

810
class Road {
911
private:
12+
Player& owner;
1013
Coordinate start;
1114
Coordinate end;
1215
public:
13-
Road(Coordinate start, Coordinate end);
16+
Road(Player& owner, Coordinate start, Coordinate end);
1417
Road(Road&) = delete;
1518
~Road();
1619
Road& operator=(Road&) = delete;
1720

18-
void accept(GameVisitor& visitor);
21+
virtual void accept(GameVisitor& visitor);
22+
Coordinate getStart() const;
23+
Coordinate getEnd() const;
24+
Player& getOwner();
1925
};
2026

2127
#endif

include/Settlement.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class Settlement : public CornerPiece {
1212
~Settlement();
1313
Settlement& operator=(Settlement&) = delete;
1414

15-
void accept(GameVisitor&);
15+
virtual void accept(GameVisitor&);
1616
};
1717

1818
#endif

include/XMLVisitor.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@
22
#define XML_VISITOR_H
33

44
#include "GameVisitor.h"
5+
#include "Util.h"
56

67
#include "tinyxml2.h"
78

89
class XMLVisitor : public GameVisitor {
910
private:
1011
tinyxml2::XMLDocument xmldoc;
12+
13+
tinyxml2::XMLElement* coordinateElement(const Coordinate& c);
1114
public:
1215
XMLVisitor();
1316
virtual ~XMLVisitor();
@@ -18,6 +21,8 @@ class XMLVisitor : public GameVisitor {
1821
virtual void visit(City&);
1922
virtual void visit(Player&);
2023
virtual void visit(ResourceTile&);
24+
25+
const tinyxml2::XMLDocument& getXMLDoc() const;
2126
};
2227

2328
#endif

src/GameBoard.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,15 @@ void GameBoard::PlaceSettlement(Coordinate location, Player& Owner){
137137
}
138138

139139
void GameBoard::accept(GameVisitor& visitor) {
140-
visitor.visit(*this);
140+
for(auto& it : corners) {
141+
it.second->accept(visitor);
142+
}
143+
for(auto& it : resources) {
144+
it.second->accept(visitor);
145+
}
146+
for(auto& it : roads) {
147+
it->accept(visitor);
148+
}
149+
visitor.visit(*this);
141150
}
142151

src/GamePiece.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ const GameBoard& GamePiece::getBoard() const {
2323
return board;
2424
}
2525

26+
Coordinate GamePiece::getLocation() const {
27+
return location;
28+
}
29+
2630
ResourceTile::ResourceTile(GameBoard& board, Coordinate location, resourceType resource, int value) :
2731
GamePiece(board, location), resource(resource), value(value) {
2832

@@ -36,6 +40,14 @@ void ResourceTile::accept(GameVisitor& visitor) {
3640
visitor.visit(*this);
3741
}
3842

43+
resourceType ResourceTile::getType() const {
44+
return resource;
45+
}
46+
47+
int ResourceTile::getDiceValue() const {
48+
return value;
49+
}
50+
3951
//pay resource cards to owners of this tile
4052
/*
4153
void ResourceTile::Payout() {

src/Player.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,8 @@ void Player::setWool(int resource)
115115
{
116116
resources[4] = resource;
117117
}
118+
119+
std::string Player::getName() const
120+
{
121+
return name;
122+
}

0 commit comments

Comments
 (0)