Skip to content

Commit d8fc842

Browse files
committed
Merge pull request #61 from Databean/view_dev_cards
Show/Hide Card Totals
2 parents 884c257 + bf40af0 commit d8fc842

File tree

4 files changed

+64
-18
lines changed

4 files changed

+64
-18
lines changed

include/GameController.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ class GameController {
5858

5959
bool handleConfirmRoadCard(ScreenCoordinate);
6060
bool handleCancelDialogueEvent(ScreenCoordinate);
61+
62+
bool viewCardTotals(ScreenCoordinate coord);
6163

6264
void pushState(ControlState);
6365
ControlState getState();

include/GameView.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,12 @@ class GameView {
5252
std::vector<ScreenCoordinate> pointsOfInterest;
5353

5454
void highlightPoint(ScreenCoordinate & coord);
55-
void drawCardCount(std::string font, int fontSize);
56-
void drawResourceCount(std::string font, int fontSize);
5755

5856
std::string controlStateText;
5957

6058
GameView(const GameView& o) = delete;
6159
GameView& operator=(const GameView& o) = delete;
60+
6261
public:
6362
GameView(GameBoard&);
6463
~GameView();
@@ -78,6 +77,10 @@ class GameView {
7877
std::unique_ptr<ViewElement> removeElement(int priority);
7978
std::unique_ptr<ViewElement> removeElement(const ViewElement*);
8079
std::unique_ptr<ViewElement> removeElement(const ViewElement&);
80+
81+
void drawCardCount(std::string font, int fontSize);
82+
void drawResourceCount(std::string font, int fontSize);
83+
bool showTotals;
8184
};
8285

8386
/**

src/GameController.cpp

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,13 @@ GameController::GameController(GameBoard& model, GameView& view) : model(model),
4646
view.addElement(makeViewButtonText(std::bind(&GameController::handleMonopolyCardButtonEvent, this, _1), {{0.85, 0.15}, {0.97, 0.20}}, font, fontSize, "Monopoly "));
4747
view.addElement(makeViewButtonText(std::bind(&GameController::handleVictoryPointCardButtonEvent, this, _1), {{0.85, 0.20}, {0.97, 0.25}}, font, fontSize, "Victory Point "));
4848

49-
view.addElement(makeViewButtonText(std::bind(&GameController::handleWoodButtonEvent, this, _1), {{.85, .35}, {.97, .40}}, font, fontSize, "Wood "));
50-
view.addElement(makeViewButtonText(std::bind(&GameController::handleSheepButtonEvent, this, _1), {{.85, .40}, {.97, .45}}, font, fontSize, "Sheep "));
51-
view.addElement(makeViewButtonText(std::bind(&GameController::handleOreButtonEvent, this, _1), {{.85, .45}, {.97, .50}}, font, fontSize, "Ore "));
52-
view.addElement(makeViewButtonText(std::bind(&GameController::handleBrickButtonEvent, this, _1), {{.85, .50}, {.97, .55}}, font, fontSize, "Brick "));
53-
view.addElement(makeViewButtonText(std::bind(&GameController::handleWheatButtonEvent, this, _1), {{.85, .55}, {.97, .60}}, font, fontSize, "Wheat "));
49+
view.addElement(makeViewButtonText(std::bind(&GameController::handleWoodButtonEvent, this, _1), {{.85, .30}, {.97, .35}}, font, fontSize, "Wood "));
50+
view.addElement(makeViewButtonText(std::bind(&GameController::handleSheepButtonEvent, this, _1), {{.85, .35}, {.97, .40}}, font, fontSize, "Sheep "));
51+
view.addElement(makeViewButtonText(std::bind(&GameController::handleOreButtonEvent, this, _1), {{.85, .40}, {.97, .45}}, font, fontSize, "Ore "));
52+
view.addElement(makeViewButtonText(std::bind(&GameController::handleBrickButtonEvent, this, _1), {{.85, .45}, {.97, .50}}, font, fontSize, "Brick "));
53+
view.addElement(makeViewButtonText(std::bind(&GameController::handleWheatButtonEvent, this, _1), {{.85, .50}, {.97, .55}}, font, fontSize, "Wheat "));
54+
55+
view.addElement(makeViewButtonText(std::bind(&GameController::viewCardTotals, this, _1), {{.85, .55}, {.97, .60}}, font, fontSize, "Show Totals"));
5456

5557

5658
stateStack.push_back(BASESTATE);
@@ -146,13 +148,15 @@ void printPlayerInfo(const Player& player) {
146148
}
147149

148150
/**
149-
* calls a function to advance turn, check for victory and roll dice
151+
* calls a function to advance turn, hide resource and development cards, check for victory, and roll dice
150152
*/
151153
bool GameController::nextTurn(ScreenCoordinate) {
152154
if(getState() != BASESTATE){
153155
return false;
154156
}
155-
157+
158+
view.showTotals = false;
159+
156160
model.endTurn();
157161
if (model.getDice().getFirst() + model.getDice().getSecond() == 7)
158162
{
@@ -434,6 +438,19 @@ bool GameController::handleVictoryPointCardButtonEvent(ScreenCoordinate coord){
434438
return true;
435439
}
436440

441+
/**
442+
* Makes the development and resource card totals visible
443+
*/
444+
bool GameController::viewCardTotals(ScreenCoordinate coord)
445+
{
446+
auto font = getGraphicsConfig()["font.path"];
447+
auto fontSize = getGraphicsConfig()["font.size"];
448+
view.showTotals = !view.showTotals;
449+
view.drawCardCount(font, fontSize);
450+
view.drawResourceCount(font, fontSize);
451+
return true;
452+
}
453+
437454

438455
template<int size>
439456
auto negativeArr(std::array<int, size> arr) -> std::array<int, size> {

src/GameView.cpp

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,10 @@ bool ViewElement::handleClick(ScreenCoordinate coord) {
8686
* Constrct a GameView.
8787
* @param model The GameBoard the view is displaying.
8888
*/
89-
GameView::GameView(GameBoard& model) : model(model) {
89+
GameView::GameView(GameBoard& model) : model(model)
90+
{
9091
controlStateText = "Welcome to Wars of Catan";
91-
92+
showTotals = false;
9293
}
9394

9495
/**
@@ -104,7 +105,19 @@ GameView::~GameView() {
104105
* @param font the style of font to use, fontSize the resolution of the font used
105106
* @return void
106107
*/
107-
void GameView::drawCardCount(std::string font, int fontSize){
108+
void GameView::drawCardCount(std::string font, int fontSize)
109+
{
110+
if (showTotals==false)
111+
{
112+
renderText(font, fontSize, {0.97, 0.0}, {1.0, 0.05}, "?"); //Road Building
113+
renderText(font, fontSize, {0.97, 0.05}, {1.0, 0.1}, "?"); //Knight
114+
renderText(font, fontSize, {0.97, 0.1}, {1.0, 0.15}, "?"); //Year of Plenty
115+
renderText(font, fontSize, {0.97, 0.15}, {1.0, 0.2}, "?"); //Monopoly
116+
renderText(font, fontSize, {0.97, 0.2}, {1.0, 0.25}, "?"); //Victory Point
117+
return;
118+
}
119+
120+
108121
renderText(font, fontSize, {0.97, 0.0}, {1.0, 0.05},
109122
toString(model.getCurrentPlayer().getRoadBuildingCards())); //Road Building
110123
renderText(font, fontSize, {0.97, 0.05}, {1.0, 0.1},
@@ -120,16 +133,27 @@ void GameView::drawCardCount(std::string font, int fontSize){
120133
/**
121134
* Draws the count of resources the currentPlayer has
122135
*/
123-
void GameView::drawResourceCount(std::string font, int fontSize){
124-
renderText(font, fontSize, {0.97, 0.35}, {1.0, 0.40},
136+
void GameView::drawResourceCount(std::string font, int fontSize)
137+
{
138+
if(showTotals==false)
139+
{
140+
renderText(font, fontSize, {0.97, 0.30}, {1.0, 0.35}, "?"); //Wood
141+
renderText(font, fontSize, {0.97, 0.35}, {1.0, 0.40}, "?"); //Sheep
142+
renderText(font, fontSize, {0.97, 0.40}, {1.0, 0.45}, "?"); //Ore
143+
renderText(font, fontSize, {0.97, 0.45}, {1.0, 0.50}, "?"); //Brick
144+
renderText(font, fontSize, {0.97, 0.50}, {1.0, 0.55}, "?"); //Wheat
145+
return;
146+
}
147+
148+
renderText(font, fontSize, {0.97, 0.30}, {1.0, 0.35},
125149
toString(model.getCurrentPlayer().getWood())); //Wood
126-
renderText(font, fontSize, {0.97, 0.40}, {1.0, 0.45},
150+
renderText(font, fontSize, {0.97, 0.35}, {1.0, 0.40},
127151
toString(model.getCurrentPlayer().getWool())); //Sheep
128-
renderText(font, fontSize, {0.97, 0.45}, {1.0, 0.50},
152+
renderText(font, fontSize, {0.97, 0.40}, {1.0, 0.45},
129153
toString(model.getCurrentPlayer().getOre())); //Ore
130-
renderText(font, fontSize, {0.97, 0.50}, {1.0, 0.55},
154+
renderText(font, fontSize, {0.97, 0.45}, {1.0, 0.50},
131155
toString(model.getCurrentPlayer().getBrick())); //Brick
132-
renderText(font, fontSize, {0.97, 0.55}, {1.0, 0.60},
156+
renderText(font, fontSize, {0.97, 0.50}, {1.0, 0.55},
133157
toString(model.getCurrentPlayer().getWheat())); //Wheat
134158

135159
}

0 commit comments

Comments
 (0)