remove towers on player leave
This commit is contained in:
@@ -35,6 +35,7 @@ public:
|
|||||||
virtual void OnGameClose() override;
|
virtual void OnGameClose() override;
|
||||||
|
|
||||||
virtual void OnPlayerJoin(game::PlayerID id) override;
|
virtual void OnPlayerJoin(game::PlayerID id) override;
|
||||||
|
virtual void OnPlayerLeave(game::PlayerID id) override;
|
||||||
private:
|
private:
|
||||||
void BalanceTeams();
|
void BalanceTeams();
|
||||||
void InitPlayerStats();
|
void InitPlayerStats();
|
||||||
|
|||||||
@@ -219,7 +219,9 @@ public:
|
|||||||
|
|
||||||
const TeamList& GetTeams() const;
|
const TeamList& GetTeams() const;
|
||||||
|
|
||||||
|
TowerList& GetTowers() { return m_Towers; }
|
||||||
const TowerList& GetTowers() const { return m_Towers; }
|
const TowerList& GetTowers() const { return m_Towers; }
|
||||||
|
|
||||||
TowerPtr GetTowerById(TowerID tower);
|
TowerPtr GetTowerById(TowerID tower);
|
||||||
|
|
||||||
const Player* GetPlayerById(PlayerID id) const;
|
const Player* GetPlayerById(PlayerID id) const;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#include "server/Server.h"
|
#include "server/Server.h"
|
||||||
|
|
||||||
#include "td/protocol/packets/DisconnectPacket.h"
|
#include "td/protocol/packets/DisconnectPacket.h"
|
||||||
|
#include "td/protocol/packets/RemoveTowerPacket.h"
|
||||||
#include "td/protocol/packets/UpdatePlayerTeamPacket.h"
|
#include "td/protocol/packets/UpdatePlayerTeamPacket.h"
|
||||||
#include "td/protocol/packets/UpdateGameStatePacket.h"
|
#include "td/protocol/packets/UpdateGameStatePacket.h"
|
||||||
#include "td/protocol/packets/UpdateMoneyPacket.h"
|
#include "td/protocol/packets/UpdateMoneyPacket.h"
|
||||||
@@ -139,5 +140,20 @@ void ServerGame::OnPlayerJoin(game::PlayerID id){
|
|||||||
BalanceTeams();
|
BalanceTeams();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ServerGame::OnPlayerLeave(game::PlayerID playerId){
|
||||||
|
// temporary fix
|
||||||
|
auto& towerList = GetWorld()->GetTowers();
|
||||||
|
for(std::size_t i = 0; i < towerList.size(); i++) {
|
||||||
|
auto tower = towerList.at(i);
|
||||||
|
|
||||||
|
if(tower->GetBuilder() == playerId) {
|
||||||
|
protocol::RemoveTowerPacket packet(tower->GetID());
|
||||||
|
m_Server->BroadcastPacket(&packet);
|
||||||
|
|
||||||
|
towerList.erase(towerList.begin() + i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace game
|
} // namespace game
|
||||||
} // namespace td
|
} // namespace td
|
||||||
|
|||||||
Reference in New Issue
Block a user