45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
#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 << " 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
|