33 lines
656 B
C++
33 lines
656 B
C++
#pragma once
|
|
|
|
#include "NetworkMessage.h"
|
|
#include "ClientHandle.h"
|
|
|
|
namespace Feather::Network
|
|
{
|
|
class PacketReader;
|
|
|
|
enum class ProtocolState
|
|
{
|
|
HANDSHAKING = -1,
|
|
PLAY = 0,
|
|
STATUS = 1,
|
|
LOGIN = 2,
|
|
};
|
|
|
|
// TODO: This should become abstract so we can support multiple versions
|
|
class Protocol
|
|
{
|
|
private:
|
|
ClientHandle* m_client;
|
|
ProtocolState m_state = ProtocolState::HANDSHAKING;
|
|
|
|
public:
|
|
Protocol(ClientHandle* client) : m_client(client) {}
|
|
|
|
void HandlePacket(PacketReader& packet);
|
|
|
|
protected:
|
|
void SetState(ProtocolState state);
|
|
};
|
|
} |