diff --git a/include/td/protocol/Protocol.h b/include/td/protocol/Protocol.h index 361ea22..5a59377 100644 --- a/include/td/protocol/Protocol.h +++ b/include/td/protocol/Protocol.h @@ -13,7 +13,6 @@ enum class PacketType : std::uint8_t { // client --> server PlayerLogin = 0, SelectTeam, - SpawnMob, SendMobs, PlaceTower, @@ -33,6 +32,7 @@ enum class PacketType : std::uint8_t { WorldAddTower, UpdateMobStates, UpdateCastleLife, + SpawnMob, RemoveMob, // client <--> server diff --git a/src/server/ServerConnexion.cpp b/src/server/ServerConnexion.cpp index 7b1d6b7..8051404 100644 --- a/src/server/ServerConnexion.cpp +++ b/src/server/ServerConnexion.cpp @@ -13,6 +13,7 @@ #include "td/protocol/packets/RemoveTowerPacket.h" #include "td/protocol/packets/SelectTeamPacket.h" #include "td/protocol/packets/SendMobsPacket.h" +#include "td/protocol/packets/SpawnMobPacket.h" #include "td/protocol/packets/UpdatePlayerTeamPacket.h" #include "td/protocol/packets/UpdateGameStatePacket.h" #include "td/protocol/packets/UpgradeTowerPacket.h" @@ -128,6 +129,20 @@ void ServerConnexion::HandlePacket(const protocol::PlayerLoginPacket* packet) { SendPacket(&headerDataPacket); SendPacket(&dataPacket); + // place towers + for (auto tower : m_Server->GetGame().GetWorld()->GetTowers()) { + protocol::WorldAddTowerPacket packet(tower->GetID(), static_cast(tower->GetCenterX() - 0.5f), + static_cast(tower->GetCenterY() - 0.5f), tower->GetType(), tower->GetBuilder()); + SendPacket(&packet); + } + + // spawn mobs + for (auto mob : m_Server->GetGame().GetWorld()->GetMobList()) { + protocol::SpawnMobPacket packet(mob->GetMobID(), mob->GetType(), mob->GetLevel(), mob->GetSender(), + mob->GetCenterX(), mob->GetCenterY(), mob->GetDirection()); + SendPacket(&packet); + // TODO : update health + } } void ServerConnexion::HandlePacket(const protocol::SelectTeamPacket* packet) {