mirror of
https://github.com/whoahq/whoa.git
synced 2026-03-18 13:41:06 +03:00
82 lines
1.5 KiB
C++
82 lines
1.5 KiB
C++
#include "object/movement/CMovementStatus.hpp"
|
|
#include "util/DataStore.hpp"
|
|
|
|
uint32_t CMovementStatus::Skip(CDataStore* msg) {
|
|
uint32_t moveFlags = 0;
|
|
msg->Get(moveFlags);
|
|
|
|
uint16_t uint14;
|
|
msg->Get(uint14);
|
|
|
|
void* data;
|
|
msg->GetDataInSitu(data, 20);
|
|
|
|
uint32_t skipBytes = 0;
|
|
|
|
if (moveFlags & 0x200) {
|
|
SmartGUID guid;
|
|
*msg >> guid;
|
|
|
|
skipBytes += 21;
|
|
|
|
if (uint14 & 0x400) {
|
|
skipBytes += 4;
|
|
}
|
|
}
|
|
|
|
if ((moveFlags & (0x200000 | 0x2000000)) || (uint14 & 0x20)) {
|
|
skipBytes += 4;
|
|
}
|
|
|
|
skipBytes += 4;
|
|
|
|
if (moveFlags & 0x1000) {
|
|
skipBytes += 16;
|
|
}
|
|
|
|
if (moveFlags & 0x4000000) {
|
|
skipBytes += 4;
|
|
}
|
|
|
|
msg->GetDataInSitu(data, skipBytes);
|
|
|
|
return moveFlags;
|
|
}
|
|
|
|
CDataStore& operator>>(CDataStore& msg, CMovementStatus& move) {
|
|
msg.Get(move.moveFlags);
|
|
msg.Get(move.uint14);
|
|
msg.Get(move.uint0);
|
|
|
|
msg >> move.position18;
|
|
msg.Get(move.facing34);
|
|
|
|
if (move.moveFlags & 0x200) {
|
|
// TODO
|
|
} else {
|
|
move.transport = 0;
|
|
// TODO
|
|
}
|
|
|
|
if ((move.moveFlags & (0x200000 | 0x2000000)) || (move.uint14 & 0x20)) {
|
|
msg.Get(move.float38);
|
|
} else {
|
|
move.float38 = 0.0f;
|
|
}
|
|
|
|
msg.Get(move.uint3C);
|
|
|
|
if (move.moveFlags & 0x1000) {
|
|
msg.Get(move.float40);
|
|
msg.Get(move.float44);
|
|
msg.Get(move.float48);
|
|
msg.Get(move.float4C);
|
|
}
|
|
|
|
if (move.moveFlags & 0x4000000) {
|
|
msg.Get(move.float50);
|
|
}
|
|
|
|
return msg;
|
|
}
|