Added support for the UPDATETYPE_VALUES type from update objects.

This commit is contained in:
Mini 2007-02-07 17:14:50 +00:00
parent 710de3d5e1
commit 3d461e5981
2 changed files with 21 additions and 9 deletions

View File

@ -58,16 +58,27 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket)
case UPDATETYPE_VALUES: case UPDATETYPE_VALUES:
{ {
uguid = recvPacket.GetPackedGuid(); // not 100% sure if this is correct uint8 blockcount, masksize, valuesCount = 1500;
uint8 maskblocks; uint32 value;
recvPacket >> maskblocks; uguid = recvPacket.GetPackedGuid();
logdebug("UPDATETYPE_VALUES: guid="I64FMT" maskblocks=%u",uguid,maskblocks); recvPacket >> blockcount;
// need some help with the lines below, got no idea what to do now. masksize = blockcount * 4;
UpdateMask umask; logdebug("UPDATETYPE_VALUES: guid="I64FMT" blockcount=%u masksize=%d",uguid,blockcount, masksize);
umask.SetCount(maskblocks*8); // ??
std::vector<uint8> udata;
//udata.resize(?)
UpdateMask umask;
umask.SetCount(masksize);
uint32 *updateMask = new uint32[100];
recvPacket.read((uint8*)updateMask, masksize);
umask.SetMask(updateMask);
for (int i = 0; i < valuesCount; i++) // How do i get valuesCount?
{
if (umask.GetBit(i))
{
recvPacket >> value;
logdebug("Value (%d): %d", i, value);
}
}
} }
break; break;

View File

@ -53,6 +53,7 @@ class UpdateMask
inline uint32 GetLength() { return mBlocks << 2; } inline uint32 GetLength() { return mBlocks << 2; }
inline uint32 GetCount() { return mCount; } inline uint32 GetCount() { return mCount; }
inline uint8* GetMask() { return (uint8*)mUpdateMask; } inline uint8* GetMask() { return (uint8*)mUpdateMask; }
inline void SetMask(uint32 *updateMask) { mUpdateMask = updateMask; }
inline void SetCount (uint32 valuesCount) inline void SetCount (uint32 valuesCount)
{ {