Files
Tower-Defense2/include/server/PlayerManager.h
2025-08-20 12:18:44 +02:00

40 lines
959 B
C++

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