#pragma once
#include
namespace td {
namespace server {
class IServerSocket;
class PlayerManager {
private:
std::map m_Players;
std::shared_ptr m_Socket;
public:
PlayerManager(const std::shared_ptr& a_Socket);
~PlayerManager();
void RemovePlayer(PlayerID a_Player);
PlayerInfo GetPlayer(PlayerID a_Player);
private:
class ConnectionHandler : public protocol::PacketHandler {
private:
std::map& m_Players;
IServerSocket& m_Socket;
PlayerID m_Player;
public:
ConnectionHandler(std::map& a_Players, IServerSocket& a_Socket, PlayerID a_Player);
~ConnectionHandler() = default;
virtual void Handle(const protocol::packets::PlayerLoginPacket& a_Packet) override;
virtual void Handle(const protocol::packets::DisconnectPacket& a_Packet) override;
static void Disconnect(std::map&, IServerSocket& m_Socket, PlayerID m_Player);
};
};
} // namespace server
} // namespace td
|