diff --git a/processor/logic/GameBoard.cpp b/processor/logic/GameBoard.cpp index e018ba8..ad2c7f2 100644 --- a/processor/logic/GameBoard.cpp +++ b/processor/logic/GameBoard.cpp @@ -60,6 +60,8 @@ void GameBoard::capitalCaptured(Player tt, Player sc) { updatedPosition(x, y); } } + new_defeated_players.push_back(tt); + players[tt].is_defeated = 1; } bool GameBoard::isTeammate(Player x, Player y) const { @@ -105,6 +107,10 @@ Team GameBoard::teamOf(Player x) const { return players[x].team; } +bool GameBoard::isDefeated(Player x) const { + return players[x].is_defeated; +} + std::uint8_t GameBoard::numPlayers() const { return n; } @@ -117,10 +123,10 @@ std::vector GameBoard::leaderboard() const { std::vector res(t); std::vector prank(n); - for (Player i = 1; i <= n; ++i) - prank[i - 1].player = i, - prank[i - 1].is_defeated - = defeated_players.find(i) != defeated_players.end(); + for (Player i = 1; i <= n; ++i) { + prank[i - 1].player = i; + prank[i - 1].is_defeated = players[i].is_defeated; + } for (Team i = 1; i <= t; ++i) res[i - 1].team = i; diff --git a/processor/logic/GameBoard.h b/processor/logic/GameBoard.h index b926cbf..1dbee95 100644 --- a/processor/logic/GameBoard.h +++ b/processor/logic/GameBoard.h @@ -50,7 +50,7 @@ private: pos_t w, h; std::vector board; std::set updated_tiles; - std::set defeated_players; + std::vector new_defeated_players; }; #endif