#pragma once
#include
#include |
namespace td {
namespace server {
class IServerSocket;
class PlayerManager {
private:
std::map m_Players;
std::shared_ptr m_Socket;
public:
utils::Signal OnPlayerJoin;
utils::Signal OnPlayerLeave;
PlayerManager(const std::shared_ptr& a_Socket);
~PlayerManager();
void RemovePlayer(PlayerID a_Player);
PlayerInfo GetPlayer(PlayerID a_Player);
private:
void Disconnect(PlayerID a_Player);
class ConnectionHandler : public protocol::PacketHandler {
private:
PlayerManager& m_PlayerManager;
PlayerID m_Player;
public:
ConnectionHandler(PlayerManager& a_PlayerManager, 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;
};
};
} // namespace server
} // namespace td
|