#pragma once #include #include namespace td { namespace server { class PlayerIds { private: std::map m_PeerToPlayer; std::map m_PlayerToPeer; PlayerID m_NextId; public: PlayerIds() : m_NextId(0) {} ~PlayerIds() {} void AddConnection(PeerID a_PeerId) { m_PeerToPlayer.emplace(a_PeerId, m_NextId); m_PlayerToPeer.emplace(m_NextId, a_PeerId); m_NextId++; } PlayerID GetPlayerId(PeerID a_PeerId) const { return m_PeerToPlayer.at(a_PeerId); } PeerID GetPeerId(PlayerID a_PlayerId) const { return m_PlayerToPeer.at(a_PlayerId); } void RemovePeer(PeerID a_PeerId) { PlayerID playerId = GetPlayerId(a_PeerId); m_PeerToPlayer.erase(a_PeerId); m_PlayerToPeer.erase(playerId); } auto begin() { return m_PeerToPlayer.begin(); } auto end() { return m_PeerToPlayer.end(); } }; } // namespace server } // namespace td