#include "object/client/CClientObjCreate.hpp" #include "util/DataStore.hpp" #include "util/GUID.hpp" #include "util/Unimplemented.hpp" #include void CClientObjCreate::Skip(CDataStore* msg) { uint16_t flags; msg->Get(flags); if (flags & 0x20) { CClientMoveUpdate::Skip(msg); } else if (flags & 0x100) { SmartGUID guid; *msg >> guid; C3Vector position28; *msg >> position28; C3Vector position18; *msg >> position18; float facing34; msg->Get(facing34); float facing24; msg->Get(facing24); } else if (flags & 0x40) { C3Vector position28; *msg >> position28; float facing34; msg->Get(facing34); } if (flags & 0x8) { uint32_t uint2AC; msg->Get(uint2AC); } if (flags & 0x10) { uint32_t uint2B0; msg->Get(uint2B0); } if (flags & 0x4) { SmartGUID guid2B8; *msg >> guid2B8; } if (flags & 0x2) { uint32_t uint2C0; msg->Get(uint2C0); } if (flags & 0x80) { uint32_t uint2C4; msg->Get(uint2C4); float float2C8; msg->Get(float2C8); } if (flags & 0x200) { uint64_t uint2D4; msg->Get(uint2D4); } } int32_t CClientObjCreate::Get(CDataStore* msg) { uint16_t flags; msg->Get(flags); this->flags = flags; if (this->flags & 0x20) { *msg >> this->move; } else if (this->flags & 0x100) { SmartGUID guid; *msg >> guid; this->move.status.transport = guid; *msg >> this->move.status.position28; *msg >> this->move.status.position18; msg->Get(this->move.status.facing34); msg->Get(this->move.status.facing24); } else if (this->flags & 0x40) { this->move.status.transport = 0; *msg >> this->move.status.position28; this->move.status.position18 = this->move.status.position28; msg->Get(this->move.status.facing34); } if (this->flags & 0x8) { msg->Get(this->uint2AC); } else { this->uint2AC = 0; } if (this->flags & 0x10) { msg->Get(this->uint2B0); } else { this->uint2B0 = 0; } if (this->flags & 0x4) { SmartGUID guid; *msg >> guid; this->guid2B8 = guid; } else { this->guid2B8 = 0; } if (this->flags & 0x2) { msg->Get(this->uint2C0); } if (this->flags & 0x80) { msg->Get(this->uint2C4); msg->Get(this->float2C8); } if (this->flags & 0x200) { msg->Get(this->uint2D4); } else { this->uint2D4 = 0; } return msg->Size() >= msg->Tell(); }