From fee1ab6638e7b06b4d0ce541c9e26b65c3db1eb0 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Sun, 19 Sep 2021 18:32:47 +0200 Subject: [PATCH] feat: add server tower place detection --- src/game/server/ServerConnexion.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/game/server/ServerConnexion.cpp b/src/game/server/ServerConnexion.cpp index 38b84ab..0d74344 100644 --- a/src/game/server/ServerConnexion.cpp +++ b/src/game/server/ServerConnexion.cpp @@ -51,7 +51,7 @@ void ServerConnexion::checkKeepAlive() { if (time - m_KeepAlive.sendTime > KEEP_ALIVE_TIMEOUT) { if (m_KeepAlive.recievedResponse) { sendKeepAlive(); - } else { + } else { protocol::DisconnectPacket packet("Time out"); sendPacket(&packet); closeConnection(); @@ -144,7 +144,16 @@ void ServerConnexion::initConnection() { } void ServerConnexion::HandlePacket(protocol::PlaceTowerPacket* packet) { - // process packet + game::TowerType towerType = packet->getTowerType(); + const game::TowerInfo& towerInfo = game::getTowerInfo(towerType); + const game::World* world = m_Server->getGame().getWorld(); + if (towerInfo.isBigTower()) { + if (!world->CanPlaceBigTower({ packet->getTowerX(), packet->getTowerY() })) + return; + } else { + if (!world->CanPlaceLittleTower({ packet->getTowerX(), packet->getTowerY() })) + return; + } protocol::WorldAddTowerPacket addTowerPacket(packet->getTowerX(), packet->getTowerY(), packet->getTowerType(), m_ID); m_Server->broadcastPacket(&addTowerPacket); }