client PlayerManager
This commit is contained in:
@@ -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);
|
||||
|
||||
31
include/client/PlayerManager.h
Normal file
31
include/client/PlayerManager.h
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user