add player info methods of GameBoard
Signed-off-by: szdytom <szdytom@qq.com>
This commit is contained in:
parent
a3d235b10b
commit
4046abd656
@ -62,22 +62,56 @@ void GameBoard::capitalCaptured(Player tt, Player sc) {
|
||||
}
|
||||
|
||||
bool GameBoard::isTeammate(Player x, Player y) const {
|
||||
// TODO
|
||||
}
|
||||
|
||||
PlayerState::PlayerState() {
|
||||
is_defeated = false;
|
||||
return teamOf(x) == teamOf(y);
|
||||
}
|
||||
|
||||
void GameBoard::turnUpdate() {
|
||||
// TODO
|
||||
for (pos_t x = 0; x < h; ++x) {
|
||||
for (pos_t y = 0; y < w; ++y) {
|
||||
auto &tile = at(x, y);
|
||||
if (tile.owner == neutral_player)
|
||||
continue;
|
||||
|
||||
if (tile.type == TileType::Stronghold || tile.type == TileType::Capital)
|
||||
tile.unit += 1;
|
||||
|
||||
if (tile.type == TileType::Swamp) {
|
||||
tile.unit -= 1;
|
||||
if (tile.unit == 0)
|
||||
tile.owner = neutral_player;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GameBoard::roundUpdate() {
|
||||
// TODO
|
||||
for (pos_t x = 0; x < h; ++x) {
|
||||
for (pos_t y = 0; y < w; ++y) {
|
||||
auto &tile = at(x, y);
|
||||
if (tile.owner == neutral_player)
|
||||
continue;
|
||||
tile.unit += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GameBoard::updatedPosition(pos_t x, pos_t y) {
|
||||
updated_tiles.emplace(x, y);
|
||||
}
|
||||
|
||||
Team GameBoard::teamOf(Player x) const {
|
||||
return players[x].team;
|
||||
}
|
||||
|
||||
std::uint8_t GameBoard::numPlayers() const {
|
||||
return n;
|
||||
}
|
||||
|
||||
std::uint8_t GameBoard::numTeams() const {
|
||||
return t;
|
||||
}
|
||||
|
||||
PlayerState::PlayerState() {
|
||||
is_defeated = false;
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,9 @@ public:
|
||||
void turnUpdate();
|
||||
void roundUpdate();
|
||||
bool isTeammate(Player x, Player y) const;
|
||||
Team teamOf(Player x) const;
|
||||
std::uint8_t numPlayers() const;
|
||||
std::uint8_t numTeams() const;
|
||||
|
||||
private:
|
||||
void capitalCaptured(Player target, Player source);
|
||||
|
Loading…
x
Reference in New Issue
Block a user