fix: tower placement
This commit is contained in:
@@ -89,13 +89,13 @@ class Tower {
|
|||||||
private:
|
private:
|
||||||
TowerID m_ID;
|
TowerID m_ID;
|
||||||
TowerType m_Type;
|
TowerType m_Type;
|
||||||
std::uint16_t m_X, m_Y;
|
std::int32_t m_X, m_Y;
|
||||||
TowerLevel m_Level{};
|
TowerLevel m_Level{};
|
||||||
PlayerID m_Builder;
|
PlayerID m_Builder;
|
||||||
protected:
|
protected:
|
||||||
utils::CooldownTimer m_Timer;
|
utils::CooldownTimer m_Timer;
|
||||||
public:
|
public:
|
||||||
Tower(TowerID id, TowerType type, std::uint16_t x, std::uint16_t y, PlayerID builder) : m_ID(id), m_Type(type), m_X(x), m_Y(y), m_Builder(builder),
|
Tower(TowerID id, TowerType type, std::int32_t x, std::int32_t y, PlayerID builder) : m_ID(id), m_Type(type), m_X(x), m_Y(y), m_Builder(builder),
|
||||||
m_Timer(getStats()->getDamageRate() * 1000) { // converting seconds to millis
|
m_Timer(getStats()->getDamageRate() * 1000) { // converting seconds to millis
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -112,8 +112,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::uint16_t getID() const { return m_ID; }
|
std::uint16_t getID() const { return m_ID; }
|
||||||
std::uint16_t getX() const { return m_X; }
|
std::int32_t getX() const { return m_X; }
|
||||||
std::uint16_t getY() const { return m_Y; }
|
std::int32_t getY() const { return m_Y; }
|
||||||
const TowerLevel& getLevel() const { return m_Level; }
|
const TowerLevel& getLevel() const { return m_Level; }
|
||||||
const TowerStats* getStats() const { return getTowerStats(m_Type, m_Level); }
|
const TowerStats* getStats() const { return getTowerStats(m_Type, m_Level); }
|
||||||
PlayerID getBuilder() const { return m_Builder; }
|
PlayerID getBuilder() const { return m_Builder; }
|
||||||
|
|||||||
@@ -262,13 +262,13 @@ void World::cleanDeadMobs() {
|
|||||||
TowerPtr World::getTower(const glm::vec2& position) const {
|
TowerPtr World::getTower(const glm::vec2& position) const {
|
||||||
for (TowerPtr tower : m_Towers) {
|
for (TowerPtr tower : m_Towers) {
|
||||||
if (tower->getSize() == TowerSize::Big) {
|
if (tower->getSize() == TowerSize::Big) {
|
||||||
if (tower->getX() - 2 <= position.x && tower->getX() + 3 >= position.x &&
|
if (tower->getX() - 2 <= static_cast<std::int32_t>(position.x) && tower->getX() + 2 >= static_cast<std::int32_t>(position.x) &&
|
||||||
tower->getY() - 2 <= position.y && tower->getY() + 3 >= position.y) {
|
tower->getY() - 2 <= static_cast<std::int32_t>(position.y) && tower->getY() + 2 >= static_cast<std::int32_t>(position.y)) {
|
||||||
return tower;
|
return tower;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (tower->getX() - 1 <= position.x && tower->getX() + 2 >= position.x &&
|
if (tower->getX() - 1 <= static_cast<std::int32_t>(position.x) && tower->getX() + 1 >= static_cast<std::int32_t>(position.x) &&
|
||||||
tower->getY() - 1 <= position.y && tower->getY() + 2 >= position.y) {
|
tower->getY() - 1 <= static_cast<std::int32_t>(position.y) && tower->getY() + 1 >= static_cast<std::int32_t>(position.y)) {
|
||||||
return tower;
|
return tower;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -150,13 +150,12 @@ void ServerConnexion::HandlePacket(const protocol::PlaceTowerPacket* packet) {
|
|||||||
const game::TowerInfo& towerInfo = game::getTowerInfo(towerType);
|
const game::TowerInfo& towerInfo = game::getTowerInfo(towerType);
|
||||||
server::ServerWorld* world = m_Server->getGame().getServerWorld();
|
server::ServerWorld* world = m_Server->getGame().getServerWorld();
|
||||||
|
|
||||||
if (towerInfo.isBigTower()) {
|
if (!world->CanPlaceLittleTower({ packet->getTowerX(), packet->getTowerY() }, m_ID))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (towerInfo.isBigTower())
|
||||||
if (!world->CanPlaceBigTower({ packet->getTowerX(), packet->getTowerY() }, m_ID))
|
if (!world->CanPlaceBigTower({ packet->getTowerX(), packet->getTowerY() }, m_ID))
|
||||||
return;
|
return;
|
||||||
} else {
|
|
||||||
if (!world->CanPlaceLittleTower({ packet->getTowerX(), packet->getTowerY() }, m_ID))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
game::TowerPtr tower = world->placeTowerAt(towerType, packet->getTowerX(), packet->getTowerY(), m_ID);
|
game::TowerPtr tower = world->placeTowerAt(towerType, packet->getTowerX(), packet->getTowerY(), m_ID);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user