Skip to content

Commit d81294e

Browse files
committed
Removed ClickCoordinateEvent, used std::bind instead of lambdas
1 parent 44c5287 commit d81294e

File tree

4 files changed

+27
-63
lines changed

4 files changed

+27
-63
lines changed

include/GameController.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ class GameController {
2222
GameController(GameBoard&, GameView& view);
2323
~GameController();
2424

25-
void handleEvent(const ClickCoordinateEvent&);
25+
bool handleBoardEvent(ScreenCoordinate);
26+
bool handleRoadButtonEvent(ScreenCoordinate);
27+
bool handleSettlementButtonEvent(ScreenCoordinate);
2628
};
2729

2830
#endif

include/GameView.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,18 +71,6 @@ class DrawingGameVisitor : public GameVisitor {
7171
virtual void visit(DevelopmentCard&);
7272
};
7373

74-
class ClickCoordinateEvent {
75-
private:
76-
Coordinate clicked;
77-
public:
78-
ClickCoordinateEvent(const Coordinate& clicked);
79-
ClickCoordinateEvent(const ClickCoordinateEvent&);
80-
~ClickCoordinateEvent();
81-
ClickCoordinateEvent& operator=(const ClickCoordinateEvent&);
82-
83-
Coordinate getCoordinate() const;
84-
};
85-
8674
template<class Fn>
8775
class ViewButton : public ViewElement {
8876
private:

src/GameController.cpp

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,48 @@
11
#include "GameController.h"
22

33
#include <iostream>
4+
#include <functional>
45

56
#include "GameBoard.h"
67
#include "GameView.h"
78
#include "Renderer.h"
89

910
GameController::GameController(GameBoard& model, GameView& view) : model(model), view(view), placingRoads(false), placingCities(false) ,lastCoordClick(-100, -100) {
10-
view.addElement(makeViewButtonColor([&](ScreenCoordinate coord) {
11-
placingRoads = true;
12-
placingCities = false;
13-
return true;
14-
}, {{0, 0}, {0.1, 0.1}}, std::make_tuple(1.f, 0.f, 0.f)));
15-
view.addElement(makeViewButtonColor([&](ScreenCoordinate coord) {
16-
placingRoads = false;
17-
placingCities = true;
18-
return true;
19-
}, {{0, 0.1}, {0.1, 0.2}}, std::make_tuple(0.f, 1.0f, 0.f)));
20-
view.addElement(makeViewButton([this](ScreenCoordinate coord) { this->handleEvent(ClickCoordinateEvent(screenToCoord(coord))); return true; }, {{0, 0}, {1, 1}}));
11+
using namespace std::placeholders;
12+
13+
view.addElement(makeViewButtonColor(std::bind(&GameController::handleRoadButtonEvent, this, _1), {{0, 0}, {0.1, 0.1}}, std::make_tuple(1.f, 0.f, 0.f)));
14+
view.addElement(makeViewButtonColor(std::bind(&GameController::handleSettlementButtonEvent, this, _1), {{0, 0.1}, {0.1, 0.2}}, std::make_tuple(0.f, 1.0f, 0.f)));
15+
view.addElement(makeViewButton(std::bind(&GameController::handleBoardEvent, this, _1), {{0, 0}, {1, 1}}));
2116
}
2217

2318
GameController::~GameController() {
2419

2520
}
2621

27-
void GameController::handleEvent(const ClickCoordinateEvent& event) {
28-
//std::cout << "user clicked at " << event.getCoordinate().first << ", " << event.getCoordinate().second << std::endl;
29-
/*
30-
if(model.getRoads(event.getCoordinate()).size() > 0) {
31-
model.PlaceSettlement(event.getCoordinate(), *model.getPlayers()[0]);
32-
} else {
33-
static Coordinate adjacentCoordDiffs[] = {Coordinate(0, 1), Coordinate(1, 0), Coordinate(1, -1), Coordinate(0, -1), Coordinate(-1, 0), Coordinate(-1, 1)};
34-
for(auto& adjacent : adjacentCoordDiffs) {
35-
Coordinate start {event.getCoordinate().first + adjacent.first, event.getCoordinate().second + adjacent.second};
36-
if(model.getRoads(start).size() > 0) {
37-
model.PlaceRoad(start, event.getCoordinate(), *model.getPlayers()[0]);
38-
break;
39-
}
40-
}
41-
}*/
22+
bool GameController::handleBoardEvent(ScreenCoordinate screenCoord) {
23+
auto coord = screenToCoord(screenCoord);
4224
if(placingRoads) {
4325
if(lastCoordClick.first == -100 && lastCoordClick.second == -100) {
44-
lastCoordClick = event.getCoordinate();
26+
lastCoordClick = coord;
4527
} else {
46-
model.PlaceRoad(lastCoordClick, event.getCoordinate(), *model.getPlayers()[0]);
28+
model.PlaceRoad(lastCoordClick, coord, *model.getPlayers()[0]);
4729
lastCoordClick = {-100, -100};
4830
}
4931
} else if(placingCities) {
50-
model.PlaceSettlement(event.getCoordinate(), *model.getPlayers()[0]);
32+
model.PlaceSettlement(coord, *model.getPlayers()[0]);
5133
}
34+
return true;
35+
}
36+
37+
bool GameController::handleRoadButtonEvent(ScreenCoordinate coord) {
38+
placingRoads = true;
39+
placingCities = false;
40+
return true;
41+
}
42+
43+
bool GameController::handleSettlementButtonEvent(ScreenCoordinate coord) {
44+
placingRoads = false;
45+
placingCities = true;
46+
return true;
5247
}
5348

src/GameView.cpp

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -239,24 +239,3 @@ void DrawingGameVisitor::visit(ResourceTile& tile) {
239239
void DrawingGameVisitor::visit(DevelopmentCard& card) {
240240

241241
}
242-
243-
ClickCoordinateEvent::ClickCoordinateEvent(const Coordinate& clicked) : clicked(clicked) {
244-
245-
}
246-
247-
ClickCoordinateEvent::ClickCoordinateEvent(const ClickCoordinateEvent& event) : clicked(event.clicked) {
248-
249-
}
250-
251-
ClickCoordinateEvent::~ClickCoordinateEvent() {
252-
253-
}
254-
255-
ClickCoordinateEvent& ClickCoordinateEvent::operator=(const ClickCoordinateEvent& event) {
256-
clicked = event.clicked;
257-
return *this;
258-
}
259-
260-
Coordinate ClickCoordinateEvent::getCoordinate() const {
261-
return clicked;
262-
}

0 commit comments

Comments
 (0)