use of SAFE_CHECK
This commit is contained in:
@@ -92,62 +92,67 @@ void ServerConnexion::SendKeepAlive() {
|
||||
}
|
||||
|
||||
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()) {
|
||||
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 });
|
||||
}
|
||||
|
||||
m_Player->SetName(packet->GetPlayerName());
|
||||
|
||||
utils::LOG(utils::format("\t[%s] joined !", m_Player->GetName().c_str()));
|
||||
|
||||
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()) {
|
||||
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) {
|
||||
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
|
||||
m_Server->GetGame().GetTeam(packet->GetSelectedTeam()).AddPlayer(m_Player);
|
||||
} else if (packet->GetSelectedTeam() == game::TeamColor::None) { // leave a team
|
||||
m_Server->GetGame().GetTeam(m_Player->GetTeamColor()).RemovePlayer(m_Player);
|
||||
m_Player->SetTeamColor(game::TeamColor::None);
|
||||
} else { // change team
|
||||
m_Server->GetGame().GetTeam(m_Player->GetTeamColor()).RemovePlayer(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);
|
||||
if (m_Player->GetTeamColor() == game::TeamColor::None) { // join a team
|
||||
m_Server->GetGame().GetTeam(packet->GetSelectedTeam()).AddPlayer(m_Player);
|
||||
} else if (packet->GetSelectedTeam() == game::TeamColor::None) { // leave a team
|
||||
m_Server->GetGame().GetTeam(m_Player->GetTeamColor()).RemovePlayer(m_Player);
|
||||
m_Player->SetTeamColor(game::TeamColor::None);
|
||||
} else { // change team
|
||||
m_Server->GetGame().GetTeam(m_Player->GetTeamColor()).RemovePlayer(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);
|
||||
}
|
||||
|
||||
void ServerConnexion::HandlePacket(const protocol::KeepAlivePacket* packet) {
|
||||
if (packet->GetAliveID() == m_KeepAlive.keepAliveID)
|
||||
m_KeepAlive.recievedResponse = true;
|
||||
SAFE_CHECK(packet->GetAliveID() == m_KeepAlive.keepAliveID);
|
||||
|
||||
m_KeepAlive.recievedResponse = true;
|
||||
}
|
||||
|
||||
void ServerConnexion::HandlePacket(const protocol::DisconnectPacket* packet) {
|
||||
@@ -209,8 +214,9 @@ void ServerConnexion::HandlePacket(const protocol::RemoveTowerPacket* packet) {
|
||||
}
|
||||
|
||||
ServerConnexion::~ServerConnexion() {
|
||||
if (GetDispatcher() != nullptr)
|
||||
GetDispatcher()->UnregisterHandler(this);
|
||||
SAFE_CHECK(GetDispatcher() != nullptr);
|
||||
|
||||
GetDispatcher()->UnregisterHandler(this);
|
||||
}
|
||||
|
||||
} // namespace server
|
||||
|
||||
Reference in New Issue
Block a user