#include "client/GameClient.h" #include "client/Game.h" #include "client/packets/WorldPackets.h" #include "common/network/Packets.h" #include "utils/Logger.h" static constexpr const char* INVALID_PACKAGE = "invalid package from server"; static Client client; static void handleEntityUpdate(InPacket& in) { EntityUpdatePacket p; if(p.read(in)) { LOG_WARNING(INVALID_PACKAGE); return; } Game::onEntityUpdate(p); } struct Receiver { void onConnect() { } void onDisconnect() { } void onPacket(InPacket& in) { uint16 id; if(in.readU16(id)) { return; } switch(id) { case Packets::S_CHAT: { StringBuffer<256> s; in.readString(s); puts(s); break; } case Packets::S_WORLD_SEGMENT: WorldPackets::receiveChunk(Game::world, in); break; case Packets::S_ENTITY_UPDATE: handleEntityUpdate(in); break; default: LOG_WARNING(INVALID_PACKAGE); } } }; bool GameClient::init() { Error error = client.start(); if(error.has()) { LOG_ERROR(error.message); } return error.has(); } Error GameClient::connect(const char* address, Client::Port port, int timeout) { return client.connect(address, port, timeout); } void GameClient::consumeEvents() { Receiver r; client.consumeEvents(r); } void GameClient::send(OutPacket& out) { client.send(out); }