#pragma once #include #include namespace td { namespace client { class IClientSocket; class PlayerManager : public protocol::PacketHandler { 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(); PlayerInfo GetPlayer(PlayerID a_Player); virtual void Handle(const protocol::packets::PlayerJoinPacket&) override; virtual void Handle(const protocol::packets::PlayerListPacket&) override; virtual void Handle(const protocol::packets::PlayerLeavePacket&) override; }; } // namespace client } // namespace td