client PlayerManager

This commit is contained in:
2025-08-21 20:51:13 +02:00
parent fd08833f3f
commit 4fe2e25029
11 changed files with 100 additions and 7 deletions

View File

@@ -1,6 +1,7 @@
#pragma once
#include <client/IClientSocket.h>
#include <client/PlayerManager.h>
#include <td/common/StateMachine.h>
namespace td {
@@ -11,6 +12,7 @@ class ClientState;
class Client : public StateMachine<Client, void, float> {
private:
std::shared_ptr<IClientSocket> m_Socket;
PlayerManager m_Players;
public:
Client(const std::shared_ptr<IClientSocket>& a_Socket, const std::string& a_PlayerName);

View File

@@ -0,0 +1,31 @@
#pragma once
#include <td/protocol/packet/Packets.h>
#include <td/misc/Signal.h>
namespace td {
namespace client {
class IClientSocket;
class PlayerManager : public protocol::PacketHandler {
private:
std::map<PlayerID, PlayerInfo> m_Players;
std::shared_ptr<IClientSocket> m_Socket;
public:
utils::Signal<const PlayerInfo&> OnPlayerJoin;
utils::Signal<PlayerID> OnPlayerLeave;
PlayerManager(const std::shared_ptr<IClientSocket>& 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

View File

@@ -15,6 +15,7 @@ class LoggingState : public ClientState {
virtual void Update(float a_Delta) override {}
virtual void Handle(const protocol::packets::PlayerJoinPacket& a_Packet) override;
virtual void Handle(const protocol::packets::LoggingSuccessPacket& a_Packet) override;
};
} // namespace client

View File

@@ -32,6 +32,8 @@ class PlayerManager {
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<PlayerID, PlayerInfo>&, IServerSocket& m_Socket, PlayerID m_Player);
};
};

View File

@@ -14,6 +14,7 @@ class DebugWorldState : public DisplayState {
render::RenderPipeline m_Renderer;
render::Camera m_Camera;
std::unique_ptr<client::Client> m_Client;
std::unique_ptr<client::Client> m_Client2;
std::unique_ptr<server::Server> m_Server;
client::GameState* m_ClientState;