diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-05-13 22:53:57 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-05-13 22:53:57 +0300 |
commit | 9f8da99f6b6266a7456d3be4d38880a3bd761932 (patch) | |
tree | 96aeb55b21dcdd6389f7b1caf47a3628b29a7df7 /src/net/tmwa/messagein.cpp | |
parent | 546d5180247512270a2ccd114266fb36cd426e61 (diff) | |
download | manaplus-9f8da99f6b6266a7456d3be4d38880a3bd761932.tar.gz manaplus-9f8da99f6b6266a7456d3be4d38880a3bd761932.tar.bz2 manaplus-9f8da99f6b6266a7456d3be4d38880a3bd761932.tar.xz manaplus-9f8da99f6b6266a7456d3be4d38880a3bd761932.zip |
Add into network code function readUInt16. Also fix reading cards id.
Diffstat (limited to 'src/net/tmwa/messagein.cpp')
-rw-r--r-- | src/net/tmwa/messagein.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/net/tmwa/messagein.cpp b/src/net/tmwa/messagein.cpp index 375e973f5..a5fac5ac9 100644 --- a/src/net/tmwa/messagein.cpp +++ b/src/net/tmwa/messagein.cpp @@ -86,6 +86,27 @@ int16_t MessageIn::readInt16(const char *const str) return value; } +uint16_t MessageIn::readUInt16(const char *const str) +{ + uint16_t value = 0xffU; + if (mPos + 2 <= mLength) + { +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + uint16_t swap; + memcpy(&swap, mData + CAST_SIZE(mPos), sizeof(uint16_t)); + value = SDL_Swap16(swap); +#else + memcpy(&value, mData + CAST_SIZE(mPos), sizeof(uint16_t)); +#endif + } + DEBUGLOG2("readUInt16: " + toStringPrint(CAST_U32( + CAST_U16(value))), + mPos, str); + mPos += 2; + PacketCounters::incInBytes(2); + return value; +} + int32_t MessageIn::readInt32(const char *const str) { int32_t value = -1; |