Skip to content

Commit ff90e45

Browse files
committed
Serialization is up and running now
1 parent 3955171 commit ff90e45

File tree

4 files changed

+36
-22
lines changed

4 files changed

+36
-22
lines changed

src/GameBoard.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ GameBoard::GameBoard(istream& in) {
163163
resources[coord] = unique_ptr<ResourceTile>(new ResourceTile(*this, coord, type, diceValue));
164164
}
165165

166+
166167
auto playerElements = doc.RootElement()->FirstChildElement("players");
167168
if(playerElements) {
168169
for(auto playerElement = playerElements->FirstChildElement(); playerElement; playerElement = playerElement->NextSiblingElement()) {
@@ -171,6 +172,7 @@ GameBoard::GameBoard(istream& in) {
171172
}
172173
}
173174

175+
174176
auto roadElements = doc.RootElement()->FirstChildElement("roads");
175177
if(roadElements) {
176178
for(auto roadElement = roadElements->FirstChildElement(); roadElement; roadElement = roadElement->NextSiblingElement()) {

src/Player.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ Player::Player(GameBoard& board, XMLElement* elem) : board(board)
6161
for(auto& r : resources) {
6262
r = 0;
6363
}
64+
for(auto& t : tradeModifiers) {
65+
t = 4;
66+
}
6467
for(auto& c : developmentCards) {
6568
c = 0;
6669
}
@@ -71,15 +74,16 @@ Player::Player(GameBoard& board, XMLElement* elem) : board(board)
7174
addWheat(fromString<int>(elem->FirstChildElement("wheat")->FirstChild()->Value()));
7275
addWool(fromString<int>(elem->FirstChildElement("wool")->FirstChild()->Value()));
7376

74-
developmentCards[KNIGHT]+=fromString<int>(elem->FirstChildElement("knight")->FirstChild()->Value());
75-
developmentCards[VICTORYPOINT]+=fromString<int>(elem->FirstChildElement("victorypoint")->FirstChild()->Value());
76-
developmentCards[YEAROFPLENTY]+=fromString<int>(elem->FirstChildElement("yearofplenty")->FirstChild()->Value());
77-
developmentCards[MONOPOLY]+=fromString<int>(elem->FirstChildElement("monopoly")->FirstChild()->Value());
78-
developmentCards[ROADBUILDING]+=fromString<int>(elem->FirstChildElement("roadbuilding")->FirstChild()->Value());
77+
developmentCards[VICTORYPOINT] = (fromString<int>(elem->FirstChildElement("victory_point")->FirstChild()->Value()));
78+
developmentCards[KNIGHT]+= (fromString<int>(elem->FirstChildElement("knight")->FirstChild()->Value()));
79+
developmentCards[YEAROFPLENTY]+= (fromString<int>(elem->FirstChildElement("year_of_plenty")->FirstChild()->Value()));
80+
developmentCards[MONOPOLY]+= (fromString<int>(elem->FirstChildElement("monopoly")->FirstChild()->Value()));
81+
developmentCards[ROADBUILDING]+= (fromString<int>(elem->FirstChildElement("road_building")->FirstChild()->Value()));
7982

8083
armySize = 0;
8184
longestRoad = 0;
8285
victoryPoints = 0;
86+
baseVictoryPoints = 0;
8387
}
8488

8589
/**

src/Serialization.cpp

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -166,27 +166,28 @@ void XMLVisitor::visit(Player& player) {
166166
XMLElement* woolElement = xmldoc.NewElement("wool");
167167
woolElement->InsertEndChild(xmldoc.NewText(toString(player.getWool()).c_str()));
168168
newPlayerElement->InsertEndChild(woolElement);
169+
169170

170-
XMLElement* victoryElement = xmldoc.NewElement("victorypoint");
171-
woolElement->InsertEndChild(xmldoc.NewText(toString(player.getVictoryCards()).c_str()));
171+
XMLElement* victoryElement = xmldoc.NewElement("victory_point");
172+
victoryElement->InsertEndChild(xmldoc.NewText(toString(player.getVictoryCards()).c_str()));
172173
newPlayerElement->InsertEndChild(victoryElement);
173174

174175
XMLElement* knightElement = xmldoc.NewElement("knight");
175-
woolElement->InsertEndChild(xmldoc.NewText(toString(player.getKnightCards()).c_str()));
176+
knightElement->InsertEndChild(xmldoc.NewText(toString(player.getKnightCards()).c_str()));
176177
newPlayerElement->InsertEndChild(knightElement);
177178

178-
XMLElement* yearOfPlentyElement = xmldoc.NewElement("yearofplenty");
179-
woolElement->InsertEndChild(xmldoc.NewText(toString(player.getYearOfPlentyCards()).c_str()));
179+
XMLElement* yearOfPlentyElement = xmldoc.NewElement("year_of_plenty");
180+
yearOfPlentyElement->InsertEndChild(xmldoc.NewText(toString(player.getYearOfPlentyCards()).c_str()));
180181
newPlayerElement->InsertEndChild(yearOfPlentyElement);
181182

182183
XMLElement* monopolyElement = xmldoc.NewElement("monopoly");
183-
woolElement->InsertEndChild(xmldoc.NewText(toString(player.getMonopolyCards()).c_str()));
184+
monopolyElement->InsertEndChild(xmldoc.NewText(toString(player.getMonopolyCards()).c_str()));
184185
newPlayerElement->InsertEndChild(monopolyElement);
185186

186-
XMLElement* roadBuildingElement = xmldoc.NewElement("roadbuilding");
187-
woolElement->InsertEndChild(xmldoc.NewText(toString(player.getRoadBuildingCards()).c_str()));
187+
XMLElement* roadBuildingElement = xmldoc.NewElement("road_building");
188+
roadBuildingElement->InsertEndChild(xmldoc.NewText(toString(player.getRoadBuildingCards()).c_str()));
188189
newPlayerElement->InsertEndChild(roadBuildingElement);
189-
190+
190191
playersElement->InsertEndChild(newPlayerElement);
191192
playerElementMap[player.getName()] = newPlayerElement;
192193
}

tests/testSerialization.cpp

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,31 +29,38 @@ TEST(emptyBoardSerialization) {
2929

3030
TEST(multiplePlayerSerialization) {
3131
GameBoard testBoard({"test", "test2"});
32-
3332
stringstream stream;
3433
testBoard.save(stream);
3534

3635
GameBoard copyBoard(stream);
3736

3837
CHECK(testBoard == copyBoard);
3938
}
40-
/*
39+
4140
TEST(testCardSerialization) {
4241
GameBoard testBoard({"test"});
4342
Player& testPlayer = testBoard.getPlayer(0);
44-
testPlayer.buyCard(unique_ptr<DevelopmentCard>(new KnightCard(testBoard)));
45-
testPlayer.buyCard(unique_ptr<DevelopmentCard>(new VictoryPointCard(testBoard)));
46-
testPlayer.buyCard(unique_ptr<DevelopmentCard>(new YearOfPlentyCard(testBoard)));
47-
testPlayer.buyCard(unique_ptr<DevelopmentCard>(new MonopolyCard(testBoard)));
48-
testPlayer.buyCard(unique_ptr<DevelopmentCard>(new RoadBuildingCard(testBoard)));
43+
44+
45+
std::unique_ptr<DevelopmentCard> knight_card = unique_ptr<DevelopmentCard>(new KnightCard());
46+
std::unique_ptr<DevelopmentCard> victory_card = unique_ptr<DevelopmentCard>(new VictoryPointCard());
47+
std::unique_ptr<DevelopmentCard> plenty_card = unique_ptr<DevelopmentCard>(new YearOfPlentyCard());
48+
std::unique_ptr<DevelopmentCard> monopoly_card = unique_ptr<DevelopmentCard>(new MonopolyCard());
49+
std::unique_ptr<DevelopmentCard> road_card = std::unique_ptr<DevelopmentCard>(new RoadBuildingCard());
50+
51+
testPlayer.buyCard(knight_card);
52+
testPlayer.buyCard(victory_card);
53+
testPlayer.buyCard(plenty_card);
54+
testPlayer.buyCard(monopoly_card);
55+
testPlayer.buyCard(road_card);
4956

5057
stringstream stream;
5158
testBoard.save(stream);
5259

5360
GameBoard copyBoard(stream);
5461

5562
CHECK(testBoard == copyBoard);
56-
}*/
63+
}
5764

5865
TEST(roadSerialization) {
5966
GameBoard testBoard({"test", "test2"});

0 commit comments

Comments
 (0)