use of SAFE_CHECK
This commit is contained in:
@@ -50,7 +50,9 @@ void WorldClient::HandlePacket(const protocol::SpawnMobPacket* packet) {
|
|||||||
|
|
||||||
void WorldClient::HandlePacket(const protocol::UpgradeTowerPacket* packet) {
|
void WorldClient::HandlePacket(const protocol::UpgradeTowerPacket* packet) {
|
||||||
game::TowerPtr tower = GetTowerById(packet->GetTowerID());
|
game::TowerPtr tower = GetTowerById(packet->GetTowerID());
|
||||||
if (tower == nullptr) return; // this should not happen but who knows ?
|
|
||||||
|
SAFE_CHECK(tower);
|
||||||
|
|
||||||
tower->Upgrade(packet->GetTowerLevel().GetLevel(), packet->GetTowerLevel().GetPath());
|
tower->Upgrade(packet->GetTowerLevel().GetLevel(), packet->GetTowerLevel().GetPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,9 +65,9 @@ void WorldClient::HandlePacket(const protocol::WorldAddTowerPacket* packet) {
|
|||||||
void WorldClient::HandlePacket(const protocol::RemoveTowerPacket* packet) {
|
void WorldClient::HandlePacket(const protocol::RemoveTowerPacket* packet) {
|
||||||
game::TowerPtr tower = RemoveTower(packet->GetTowerID());
|
game::TowerPtr tower = RemoveTower(packet->GetTowerID());
|
||||||
|
|
||||||
if (tower != nullptr) {
|
SAFE_CHECK(tower);
|
||||||
GetWorldNotifier().NotifyListeners(&WorldListener::OnTowerRemove, tower);
|
|
||||||
}
|
GetWorldNotifier().NotifyListeners(&WorldListener::OnTowerRemove, tower);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldClient::HandlePacket(const protocol::UpdateMobStatesPacket* packet) {
|
void WorldClient::HandlePacket(const protocol::UpdateMobStatesPacket* packet) {
|
||||||
|
|||||||
@@ -92,62 +92,67 @@ void ServerConnexion::SendKeepAlive() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ServerConnexion::HandlePacket(const protocol::PlayerLoginPacket* packet) {
|
void ServerConnexion::HandlePacket(const protocol::PlayerLoginPacket* packet) {
|
||||||
if (m_Player->GetName().empty() && !packet->GetPlayerName().empty()) {
|
|
||||||
m_Player->SetName(packet->GetPlayerName());
|
|
||||||
|
|
||||||
utils::LOG(utils::format("\t[%s] joined !", m_Player->GetName().c_str()));
|
SAFE_CHECK(m_Player->GetName().empty() && !packet->GetPlayerName().empty());
|
||||||
|
|
||||||
protocol::PlayerJoinPacket joinPacket(m_ID, m_Player->GetName());
|
|
||||||
m_Server->BroadcastPacket(&joinPacket);
|
|
||||||
|
|
||||||
std::map<std::uint8_t, protocol::PlayerInfo> playerNames;
|
|
||||||
for (const auto& pair : m_Server->GetPlayers()) {
|
m_Player->SetName(packet->GetPlayerName());
|
||||||
const game::Player& player = pair.second;
|
|
||||||
if (!player.GetName().empty()) {
|
utils::LOG(utils::format("\t[%s] joined !", m_Player->GetName().c_str()));
|
||||||
protocol::PlayerInfo playerInfo;
|
|
||||||
playerInfo.name = player.GetName();
|
protocol::PlayerJoinPacket joinPacket(m_ID, m_Player->GetName());
|
||||||
playerInfo.team = player.GetTeamColor();
|
m_Server->BroadcastPacket(&joinPacket);
|
||||||
playerNames.insert({ player.GetID(), playerInfo });
|
|
||||||
}
|
std::map<std::uint8_t, protocol::PlayerInfo> playerNames;
|
||||||
|
for (const auto& pair : m_Server->GetPlayers()) {
|
||||||
|
const game::Player& player = pair.second;
|
||||||
|
if (!player.GetName().empty()) {
|
||||||
|
protocol::PlayerInfo playerInfo;
|
||||||
|
playerInfo.name = player.GetName();
|
||||||
|
playerInfo.team = player.GetTeamColor();
|
||||||
|
playerNames.insert({ player.GetID(), playerInfo });
|
||||||
}
|
}
|
||||||
|
|
||||||
protocol::PlayerListPacket listPacket(playerNames);
|
|
||||||
SendPacket(&listPacket);
|
|
||||||
|
|
||||||
protocol::UpdateGameStatePacket statePacket(m_Server->GetGame().GetGameState());
|
|
||||||
SendPacket(&statePacket);
|
|
||||||
|
|
||||||
m_Server->GetGame().NotifyListeners(&game::GameListener::OnPlayerJoin, m_ID);
|
|
||||||
|
|
||||||
protocol::WorldBeginDataPacket headerDataPacket(m_Server->GetGame().GetWorld());
|
|
||||||
protocol::WorldDataPacket dataPacket(m_Server->GetGame().GetWorld());
|
|
||||||
SendPacket(&headerDataPacket);
|
|
||||||
SendPacket(&dataPacket);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protocol::PlayerListPacket listPacket(playerNames);
|
||||||
|
SendPacket(&listPacket);
|
||||||
|
|
||||||
|
protocol::UpdateGameStatePacket statePacket(m_Server->GetGame().GetGameState());
|
||||||
|
SendPacket(&statePacket);
|
||||||
|
|
||||||
|
m_Server->GetGame().NotifyListeners(&game::GameListener::OnPlayerJoin, m_ID);
|
||||||
|
|
||||||
|
protocol::WorldBeginDataPacket headerDataPacket(m_Server->GetGame().GetWorld());
|
||||||
|
protocol::WorldDataPacket dataPacket(m_Server->GetGame().GetWorld());
|
||||||
|
SendPacket(&headerDataPacket);
|
||||||
|
SendPacket(&dataPacket);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerConnexion::HandlePacket(const protocol::SelectTeamPacket* packet) {
|
void ServerConnexion::HandlePacket(const protocol::SelectTeamPacket* packet) {
|
||||||
SAFE_CHECK(m_Server->GetGame().GetGameState() == game::GameState::Lobby);
|
SAFE_CHECK(m_Server->GetGame().GetGameState() == game::GameState::Lobby);
|
||||||
|
SAFE_CHECK(static_cast<std::int8_t>(packet->GetSelectedTeam()) >= -1 ||
|
||||||
|
static_cast<std::int8_t>(packet->GetSelectedTeam()) <= 1);
|
||||||
|
|
||||||
if (static_cast<std::int8_t>(packet->GetSelectedTeam()) >= -1 || static_cast<std::int8_t>(packet->GetSelectedTeam()) <= 1) {
|
if (m_Player->GetTeamColor() == game::TeamColor::None) { // join a team
|
||||||
if (m_Player->GetTeamColor() == game::TeamColor::None) { // join a team
|
m_Server->GetGame().GetTeam(packet->GetSelectedTeam()).AddPlayer(m_Player);
|
||||||
m_Server->GetGame().GetTeam(packet->GetSelectedTeam()).AddPlayer(m_Player);
|
} else if (packet->GetSelectedTeam() == game::TeamColor::None) { // leave a team
|
||||||
} else if (packet->GetSelectedTeam() == game::TeamColor::None) { // leave a team
|
m_Server->GetGame().GetTeam(m_Player->GetTeamColor()).RemovePlayer(m_Player);
|
||||||
m_Server->GetGame().GetTeam(m_Player->GetTeamColor()).RemovePlayer(m_Player);
|
m_Player->SetTeamColor(game::TeamColor::None);
|
||||||
m_Player->SetTeamColor(game::TeamColor::None);
|
} else { // change team
|
||||||
} else { // change team
|
m_Server->GetGame().GetTeam(m_Player->GetTeamColor()).RemovePlayer(m_Player);
|
||||||
m_Server->GetGame().GetTeam(m_Player->GetTeamColor()).RemovePlayer(m_Player);
|
m_Server->GetGame().GetTeam(packet->GetSelectedTeam()).AddPlayer(m_Player);
|
||||||
m_Server->GetGame().GetTeam(packet->GetSelectedTeam()).AddPlayer(m_Player);
|
|
||||||
}
|
|
||||||
m_Player->SetTeamColor(packet->GetSelectedTeam());
|
|
||||||
protocol::UpdatePlayerTeamPacket updateTeamPacket(m_ID, packet->GetSelectedTeam());
|
|
||||||
m_Server->BroadcastPacket(&updateTeamPacket);
|
|
||||||
}
|
}
|
||||||
|
m_Player->SetTeamColor(packet->GetSelectedTeam());
|
||||||
|
protocol::UpdatePlayerTeamPacket updateTeamPacket(m_ID, packet->GetSelectedTeam());
|
||||||
|
m_Server->BroadcastPacket(&updateTeamPacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerConnexion::HandlePacket(const protocol::KeepAlivePacket* packet) {
|
void ServerConnexion::HandlePacket(const protocol::KeepAlivePacket* packet) {
|
||||||
if (packet->GetAliveID() == m_KeepAlive.keepAliveID)
|
SAFE_CHECK(packet->GetAliveID() == m_KeepAlive.keepAliveID);
|
||||||
m_KeepAlive.recievedResponse = true;
|
|
||||||
|
m_KeepAlive.recievedResponse = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerConnexion::HandlePacket(const protocol::DisconnectPacket* packet) {
|
void ServerConnexion::HandlePacket(const protocol::DisconnectPacket* packet) {
|
||||||
@@ -209,8 +214,9 @@ void ServerConnexion::HandlePacket(const protocol::RemoveTowerPacket* packet) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ServerConnexion::~ServerConnexion() {
|
ServerConnexion::~ServerConnexion() {
|
||||||
if (GetDispatcher() != nullptr)
|
SAFE_CHECK(GetDispatcher() != nullptr);
|
||||||
GetDispatcher()->UnregisterHandler(this);
|
|
||||||
|
GetDispatcher()->UnregisterHandler(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace server
|
} // namespace server
|
||||||
|
|||||||
Reference in New Issue
Block a user