summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/helper.cpp12
-rw-r--r--src/helper.hpp3
-rw-r--r--src/ur.cpp12
3 files changed, 26 insertions, 1 deletions
diff --git a/src/helper.cpp b/src/helper.cpp
index ff5ed61..cdd9762 100644
--- a/src/helper.cpp
+++ b/src/helper.cpp
@@ -344,3 +344,15 @@ canPlace(struct piece_t* piece,
return true;
}
+
+void
+clearPiece(std::shared_ptr<std::vector<struct piece_t>> pieces, struct piece_t* piece)
+{
+ for (int i = 0; i < pieces->size(); i++) {
+ auto& p = (*pieces)[i];
+ if (p.id == piece->id) {
+ pieces->erase(pieces->begin() + i);
+ break;
+ }
+ }
+}
diff --git a/src/helper.hpp b/src/helper.hpp
index 41383d1..03d60fb 100644
--- a/src/helper.hpp
+++ b/src/helper.hpp
@@ -131,4 +131,7 @@ canPlace(struct piece_t* piece,
std::shared_ptr<std::vector<struct piece_t>> opponentPieces,
int& takenPieceId);
+void
+clearPiece(std::shared_ptr<std::vector<struct piece_t>> pieces, struct piece_t* piece);
+
#endif
diff --git a/src/ur.cpp b/src/ur.cpp
index fac0a5f..c0a0c4f 100644
--- a/src/ur.cpp
+++ b/src/ur.cpp
@@ -45,7 +45,8 @@ next_turn(std::shared_ptr<std::vector<sf::Sprite>> roll_sprites)
{
turn_roll = 0;
turn_pid = turn_pid == P1_ID ? P2_ID : P1_ID;
- for (auto& s : (*roll_sprites)) s.setColor(sf::Color::White);
+ for (auto& s : (*roll_sprites))
+ s.setColor(sf::Color::White);
change_state(GameState::WAITING);
}
@@ -340,6 +341,15 @@ main()
}
if (in_place) {
+ if (grabbed_piece->position == EXIT_SPACE) {
+ if (p1_turn()) {
+ makeNum(&p1Score, ++p1->score, textures);
+ clearPiece(p1->pieces, grabbed_piece);
+ } else {
+ makeNum(&p2Score, ++p2->score, textures);
+ clearPiece(p2->pieces, grabbed_piece);
+ }
+ }
next_turn(roll_sprites);
} else {
grabbed_piece->sprite.setPosition(grabbed_piece_origin);