feat: add upgrade tower (non gui)
This commit is contained in:
@@ -202,7 +202,7 @@ bool World::CanPlaceLittleTower(const glm::vec2& worldPos, PlayerID playerID) co
|
||||
for (int x = -1; x < 2; x++) {
|
||||
for (int y = -1; y < 2; y++) {
|
||||
game::TilePtr adjacentTile = getTile(worldPos.x + x, worldPos.y + y);
|
||||
if (adjacentTile == nullptr || adjacentTile->getType() != game::TileType::Tower || getTower({worldPos.x + x, worldPos.y + y}) != nullptr) {
|
||||
if (adjacentTile == nullptr || adjacentTile->getType() != game::TileType::Tower || getTower({ worldPos.x + x, worldPos.y + y }) != nullptr) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -214,7 +214,7 @@ bool World::CanPlaceLittleTower(const glm::vec2& worldPos, PlayerID playerID) co
|
||||
}
|
||||
|
||||
bool World::CanPlaceBigTower(const glm::vec2& worldPos, PlayerID playerID) const {
|
||||
if(!CanPlaceLittleTower(worldPos, playerID)) return false;
|
||||
if (!CanPlaceLittleTower(worldPos, playerID)) return false;
|
||||
|
||||
TilePtr tile = getTile(worldPos.x, worldPos.y);
|
||||
const Player& player = m_Game->getPlayers()[playerID];
|
||||
@@ -230,7 +230,7 @@ bool World::CanPlaceBigTower(const glm::vec2& worldPos, PlayerID playerID) const
|
||||
for (int x = -2; x < 3; x++) {
|
||||
for (int y = -2; y < 3; y++) {
|
||||
game::TilePtr adjacentTile = getTile(worldPos.x + x, worldPos.y + y);
|
||||
if (adjacentTile == nullptr || adjacentTile->getType() != game::TileType::Tower || getTower({worldPos.x + x, worldPos.y + y}) != nullptr) {
|
||||
if (adjacentTile == nullptr || adjacentTile->getType() != game::TileType::Tower || getTower({ worldPos.x + x, worldPos.y + y }) != nullptr) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -259,7 +259,7 @@ void World::cleanDeadMobs() {
|
||||
}
|
||||
}
|
||||
|
||||
TowerPtr World::getTower(const glm::vec2& position) const{
|
||||
TowerPtr World::getTower(const glm::vec2& position) const {
|
||||
for (TowerPtr tower : m_Towers) {
|
||||
if (tower->getSize() == TowerSize::Big) {
|
||||
if (tower->getX() - 2 <= position.x && tower->getX() + 3 >= position.x &&
|
||||
@@ -276,13 +276,19 @@ TowerPtr World::getTower(const glm::vec2& position) const{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
TowerPtr World::getTowerById(TowerID towerID) {
|
||||
auto it = std::find_if(m_Towers.begin(), m_Towers.end(), [towerID](TowerPtr tower) { return tower->getID() == towerID;});
|
||||
if(it == m_Towers.end()) return nullptr;
|
||||
return *it;
|
||||
}
|
||||
|
||||
void World::OnArrowShot(MobPtr target, Tower* shooter) {
|
||||
bool explosiveArrows = shooter->getLevel().getPath() == TowerPath::Bottom;
|
||||
if (explosiveArrows) {
|
||||
// aoe damage
|
||||
} else {
|
||||
target->damage(shooter->getStats()->getDamage());
|
||||
if(target->isDead())
|
||||
if (target->isDead())
|
||||
target->setKillTower(shooter);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user