diff options
Diffstat (limited to 'src/net/tmwa/messageout.cpp')
-rw-r--r-- | src/net/tmwa/messageout.cpp | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/src/net/tmwa/messageout.cpp b/src/net/tmwa/messageout.cpp index 8b407c47..a08ea48d 100644 --- a/src/net/tmwa/messageout.cpp +++ b/src/net/tmwa/messageout.cpp @@ -31,7 +31,7 @@ namespace TmwAthena { -MessageOut::MessageOut(short id): +MessageOut::MessageOut(uint16_t id): Net::MessageOut(id) { mNetwork = TmwAthena::Network::instance(); @@ -44,52 +44,45 @@ void MessageOut::expand(size_t bytes) mNetwork->mOutSize += bytes; } -void MessageOut::writeInt16(Sint16 value) +void MessageOut::writeInt16(uint16_t value) { expand(2); #if SDL_BYTEORDER == SDL_BIG_ENDIAN - Sint16 swap=SDL_Swap16(value); - memcpy(mData + mPos, &swap, sizeof(Sint16)); + uint16_t swap=SDL_Swap16(value); + memcpy(mData + mPos, &swap, sizeof(uint16_t)); #else - memcpy(mData + mPos, &value, sizeof(Sint16)); + memcpy(mData + mPos, &value, sizeof(uint16_t)); #endif mPos += 2; } -void MessageOut::writeInt32(Sint32 value) +void MessageOut::writeInt32(uint32_t value) { expand(4); #if SDL_BYTEORDER == SDL_BIG_ENDIAN - Sint32 swap=SDL_Swap32(value); - memcpy(mData + mPos, &swap, sizeof(Sint32)); + uint32_t swap=SDL_Swap32(value); + memcpy(mData + mPos, &swap, sizeof(uint32_t)); #else - memcpy(mData + mPos, &value, sizeof(Sint32)); + memcpy(mData + mPos, &value, sizeof(uint32_t)); #endif mPos += 4; } -#define LOBYTE(w) ((unsigned char)(w)) -#define HIBYTE(w) ((unsigned char)(((unsigned short)(w)) >> 8)) - -void MessageOut::writeCoordinates(unsigned short x, unsigned short y, - unsigned char direction) +void MessageOut::writeCoordinates(uint16_t x, uint16_t y, uint8_t direction) { char *data = mData + mPos; mNetwork->mOutSize += 3; mPos += 3; - short temp; - temp = x; + uint16_t temp = x; temp <<= 6; - data[0] = 0; - data[1] = 1; - data[2] = 2; - data[0] = HIBYTE(temp); - data[1] = (unsigned char) temp; + data[0] = temp >> 8; + data[1] = temp; + temp = y; temp <<= 4; - data[1] |= HIBYTE(temp); - data[2] = LOBYTE(temp); + data[1] |= temp >> 8; + data[2] = temp; // Translate direction to eAthena format switch (direction) @@ -120,7 +113,7 @@ void MessageOut::writeCoordinates(unsigned short x, unsigned short y, break; default: // OOPSIE! Impossible or unknown - direction = (unsigned char) -1; + direction = 15; } data[2] |= direction; } |