FeatherMC/src/Protocol.h

48 lines
952 B
C++

#pragma once
#include "Common.h"
#include "NetworkMessage.h"
#include <cstdio>
#include <cstdint>
namespace Feather
{
class DedicatedServer;
class PacketReader;
class MinecraftClient;
enum class ProtocolState : int32_t
{
Handholding = -1,
Play = 0,
Status = 1,
Login = 2,
};
class ProtocolContext
{
public:
inline ProtocolState GetState() const
{
return m_state;
}
inline void SetState(ProtocolState state)
{
Log_Info("Setting state: %d", (int)state);
m_state = state;
}
private:
ProtocolState m_state = ProtocolState::Handholding;
};
class Protocol
{
DedicatedServer& m_server;
public:
Protocol(DedicatedServer& server) : m_server(server) {}
void HandlePacket(MinecraftClient& client, PacketReader& packet);
};
}