client PlayerManager

This commit is contained in:
2025-08-21 20:51:13 +02:00
parent fd08833f3f
commit 4fe2e25029
11 changed files with 100 additions and 7 deletions

View File

@@ -0,0 +1,44 @@
#include <client/PlayerManager.h>
#include <client/IClientSocket.h>
#include <iostream>
namespace td {
namespace client {
PlayerManager::PlayerManager(const std::shared_ptr<IClientSocket>& a_Socket) : m_Socket(a_Socket) {
a_Socket->OnReceive.Connect(std::bind(&PlayerManager::HandleBase, this, std::placeholders::_1));
OnPlayerJoin.Connect([this](const PlayerInfo& a_Player){
std::cout << "[Client " << this << "] " << a_Player.m_PlayerName << "(" << +a_Player.m_PlayerId << ") joined !\n";
});
OnPlayerLeave.Connect([this](const PlayerID a_Player){
std::cout << "[Client " << this << "] " << GetPlayer(a_Player).m_PlayerName << "(" << +a_Player << ") left !\n";
});
}
PlayerManager::~PlayerManager() {}
PlayerInfo PlayerManager::GetPlayer(PlayerID a_Player) {
return m_Players.at(a_Player);
}
void PlayerManager::Handle(const protocol::packets::PlayerJoinPacket& a_Packet) {
m_Players.emplace(a_Packet->m_Player.m_PlayerId, a_Packet->m_Player);
OnPlayerJoin(a_Packet->m_Player);
}
void PlayerManager::Handle(const protocol::packets::PlayerListPacket& a_Packet) {
for (auto pInfo : a_Packet->m_Players) {
m_Players.emplace(pInfo.m_PlayerId, pInfo);
OnPlayerJoin(pInfo);
}
}
void PlayerManager::Handle(const protocol::packets::PlayerLeavePacket& a_Packet) {
OnPlayerLeave(a_Packet->m_PlayerId);
m_Players.erase(a_Packet->m_PlayerId);
}
} // namespace client
} // namespace td