1er commit
This commit is contained in:
34
include/game/client/Client.h
Normal file
34
include/game/client/Client.h
Normal file
@@ -0,0 +1,34 @@
|
||||
#pragma once
|
||||
|
||||
#include "ClientConnexion.h"
|
||||
#include "ClientGame.h"
|
||||
|
||||
#include "game/Team.h"
|
||||
#include "game/Player.h"
|
||||
|
||||
namespace td {
|
||||
namespace client {
|
||||
|
||||
class Client{
|
||||
private:
|
||||
ClientConnexion m_Connexion;
|
||||
ClientGame m_Game{m_Connexion.GetDispatcher()};
|
||||
bool m_Connected;
|
||||
public:
|
||||
Client(){}
|
||||
|
||||
const ClientGame& getGame() const{ return m_Game; }
|
||||
const ClientConnexion& getConnexion() const{ return m_Connexion; }
|
||||
|
||||
void tick(std::uint64_t delta);
|
||||
|
||||
void connect(const std::string& address, std::uint16_t port);
|
||||
void closeConnection();
|
||||
|
||||
bool isConnected() const{ return m_Connexion.getSocketStatus() == network::Socket::Connected; }
|
||||
|
||||
void selectTeam(game::TeamColor team);
|
||||
};
|
||||
|
||||
} // namespace client
|
||||
} // namespace td
|
||||
37
include/game/client/ClientConnexion.h
Normal file
37
include/game/client/ClientConnexion.h
Normal file
@@ -0,0 +1,37 @@
|
||||
#pragma once
|
||||
|
||||
#include "protocol/PacketHandler.h"
|
||||
#include "network/TCPSocket.h"
|
||||
#include "game/Connexion.h"
|
||||
|
||||
namespace td {
|
||||
namespace client {
|
||||
|
||||
class ClientConnexion : public protocol::Connexion{
|
||||
private:
|
||||
std::uint8_t m_ConnectionID;
|
||||
std::string m_DisconnectReason;
|
||||
float m_ServerTPS;
|
||||
int m_Ping = 0;
|
||||
public:
|
||||
ClientConnexion();
|
||||
|
||||
virtual bool updateSocket();
|
||||
|
||||
virtual void HandlePacket(protocol::KeepAlivePacket* packet);
|
||||
virtual void HandlePacket(protocol::ConnexionInfoPacket* packet);
|
||||
virtual void HandlePacket(protocol::DisconnectPacket* packet);
|
||||
virtual void HandlePacket(protocol::ServerTpsPacket* packet);
|
||||
|
||||
const std::string& getDisconnectReason() const{ return m_DisconnectReason; }
|
||||
float getServerTPS() const{ return m_ServerTPS; }
|
||||
int getServerPing() const {return m_Ping;}
|
||||
|
||||
REMOVE_COPY(ClientConnexion);
|
||||
private:
|
||||
void registerHandlers();
|
||||
void login();
|
||||
};
|
||||
|
||||
} // namespace client
|
||||
} // namespace td
|
||||
36
include/game/client/ClientGame.h
Normal file
36
include/game/client/ClientGame.h
Normal file
@@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
#include "game/BaseGame.h"
|
||||
#include "protocol/PacketHandler.h"
|
||||
#include "WorldClient.h"
|
||||
|
||||
namespace td {
|
||||
namespace client {
|
||||
|
||||
class ClientGame : public protocol::PacketHandler, public game::Game{
|
||||
private:
|
||||
std::uint8_t m_ConnexionID;
|
||||
std::uint32_t m_LobbyTime = 0;
|
||||
game::Player* m_Player = nullptr;
|
||||
client::WorldClient m_WorldClient{this};
|
||||
public:
|
||||
ClientGame(protocol::PacketDispatcher* dispatcher);
|
||||
virtual ~ClientGame();
|
||||
|
||||
virtual void tick(std::uint64_t delta);
|
||||
|
||||
std::uint32_t getLobbyTime() const{return m_LobbyTime;}
|
||||
const game::Player* getPlayer() const{return m_Player;}
|
||||
|
||||
virtual void HandlePacket(protocol::ConnexionInfoPacket* packet);
|
||||
virtual void HandlePacket(protocol::PlayerJoinPacket* packet);
|
||||
virtual void HandlePacket(protocol::PlayerLeavePacket* packet);
|
||||
virtual void HandlePacket(protocol::PlayerListPacket* packet);
|
||||
virtual void HandlePacket(protocol::UpdatePlayerTeamPacket* packet);
|
||||
virtual void HandlePacket(protocol::UpdateGameStatePacket* packet);
|
||||
virtual void HandlePacket(protocol::UpdateLobbyTimePacket* packet);
|
||||
virtual void HandlePacket(protocol::UpdateMoneyPacket* packet);
|
||||
};
|
||||
|
||||
} // namespace client
|
||||
} // namespace td
|
||||
23
include/game/client/WorldClient.h
Normal file
23
include/game/client/WorldClient.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#pragma once
|
||||
|
||||
#include "game/World.h"
|
||||
#include "protocol/PacketHandler.h"
|
||||
|
||||
namespace td {
|
||||
namespace client {
|
||||
|
||||
class ClientGame;
|
||||
|
||||
class WorldClient : public game::World, public protocol::PacketHandler{
|
||||
private:
|
||||
ClientGame* m_Game;
|
||||
public:
|
||||
WorldClient(ClientGame* game);
|
||||
|
||||
virtual void HandlePacket(protocol::WorldBeginDataPacket* packet);
|
||||
virtual void HandlePacket(protocol::WorldDataPacket* packet);
|
||||
virtual void HandlePacket(protocol::SpawnMobPacket* packet);
|
||||
};
|
||||
|
||||
} // namespace client
|
||||
} // namespace td
|
||||
Reference in New Issue
Block a user