X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fnet%2Fnet.cpp;h=e267855c301ff24bdf9409640724939e635b22af;hb=ca90ec459ca0bd48c1483a45f30496aed61e9c21;hp=58875e7d0a62e6f584050d67d78fdb6a9a4c73c9;hpb=933ca0fe6c660e482edd45742d981f2de59a32df;p=blank.git diff --git a/src/net/net.cpp b/src/net/net.cpp index 58875e7..e267855 100644 --- a/src/net/net.cpp +++ b/src/net/net.cpp @@ -4,7 +4,7 @@ #include "Packet.hpp" #include "../app/init.hpp" -#include "../model/CompositeModel.hpp" +#include "../model/Model.hpp" #include "../world/Entity.hpp" #include "../world/EntityState.hpp" @@ -27,6 +27,8 @@ constexpr size_t Packet::PlayerCorrection::MAX_LEN; constexpr size_t Packet::ChunkBegin::MAX_LEN; constexpr size_t Packet::ChunkData::MAX_LEN; constexpr size_t Packet::BlockUpdate::MAX_LEN; +constexpr size_t Packet::Message::MAX_LEN; +constexpr size_t Packet::Message::MAX_MESSAGE_LEN; Connection::Connection(const IPaddress &addr) : handler(nullptr) @@ -214,6 +216,8 @@ const char *Packet::Type2String(uint8_t t) noexcept { return "ChunkData"; case BlockUpdate::TYPE: return "BlockUpdate"; + case Message::TYPE: + return "Message"; default: return "Unknown"; } @@ -541,6 +545,30 @@ void Packet::BlockUpdate::ReadBlock(Block &block, uint32_t num) const noexcept { Read(block, off); } +void Packet::Message::WriteType(uint8_t type) noexcept { + Write(type, 0); +} + +void Packet::Message::ReadType(uint8_t &type) const noexcept { + Read(type, 0); +} + +void Packet::Message::WriteReferral(uint32_t ref) noexcept { + Write(ref, 1); +} + +void Packet::Message::ReadReferral(uint32_t &ref) const noexcept { + Read(ref, 1); +} + +void Packet::Message::WriteMessage(const string &msg) noexcept { + WriteString(msg, 5, MAX_MESSAGE_LEN); +} + +void Packet::Message::ReadMessage(string &msg) const noexcept { + ReadString(msg, 5, MAX_MESSAGE_LEN); +} + void ConnectionHandler::Handle(const UDPpacket &udp_pack) { const Packet &pack = *reinterpret_cast(udp_pack.data); @@ -581,6 +609,9 @@ void ConnectionHandler::Handle(const UDPpacket &udp_pack) { case Packet::BlockUpdate::TYPE: On(Packet::As(udp_pack)); break; + case Packet::Message::TYPE: + On(Packet::As(udp_pack)); + break; default: // drop unknown or unhandled packets break;