diff options
author | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-04-08 17:37:02 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-05-05 22:30:00 +0200 |
commit | 96abc4a9658b3318d0052dc5cd31a3c15d76a494 (patch) | |
tree | ff1d8e02b5020a08c01ab1605b0474a48eb77c42 /src/net/messagein.cpp | |
parent | e9eda63dcad0b842d637c13e415ef4f751ea2adf (diff) | |
download | mana-96abc4a9658b3318d0052dc5cd31a3c15d76a494.tar.gz mana-96abc4a9658b3318d0052dc5cd31a3c15d76a494.tar.bz2 mana-96abc4a9658b3318d0052dc5cd31a3c15d76a494.tar.xz mana-96abc4a9658b3318d0052dc5cd31a3c15d76a494.zip |
Removed the shared base classes of MessageIn and MessageOut
There wasn't a whole lot gained by sharing a common base class, and it makes
extending the manaserv Message{In,Out} classes with a debugging mode
unnecessarily complicated.
Reviewed-by: Yohann Ferreira
Diffstat (limited to 'src/net/messagein.cpp')
-rw-r--r-- | src/net/messagein.cpp | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/src/net/messagein.cpp b/src/net/messagein.cpp deleted file mode 100644 index 46d12884..00000000 --- a/src/net/messagein.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/* - * The Mana Client - * Copyright (C) 2004-2009 The Mana World Development Team - * Copyright (C) 2009-2012 The Mana Developers - * - * This file is part of The Mana Client. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "net/messagein.h" - -#define MAKEWORD(low,high) \ - ((unsigned short)(((unsigned char)(low)) | \ - ((unsigned short)((unsigned char)(high))) << 8)) - -#include <cstring> - -namespace Net { - -MessageIn::MessageIn(const char *data, unsigned int length): - mData(data), - mLength(length), - mPos(0) -{ -} - -uint8_t MessageIn::readInt8() -{ - uint8_t value = 0; - if (mPos < mLength) - { - value = mData[mPos]; - } - mPos++; - return value; -} - -void MessageIn::readCoordinates(uint16_t &x, uint16_t &y) -{ - if (mPos + 3 <= mLength) - { - unsigned char const *p = reinterpret_cast< unsigned char const * >(mData + mPos); - x = p[0] | ((p[1] & 0x07) << 8); - y = (p[1] >> 3) | ((p[2] & 0x3F) << 5); - } - mPos += 3; -} - -void MessageIn::readCoordinates(uint16_t &x, uint16_t &y, uint8_t &direction) -{ - if (mPos + 3 <= mLength) - { - const char *data = mData + mPos; - uint16_t temp; - - temp = MAKEWORD(data[1] & 0x00c0, data[0] & 0x00ff); - x = temp >> 6; - temp = MAKEWORD(data[2] & 0x00f0, data[1] & 0x003f); - y = temp >> 4; - - direction = data[2] & 0x000f; - - // Translate from tmwAthena format - switch (direction) - { - case 0: - direction = 1; - break; - case 1: - direction = 3; - break; - case 2: - direction = 2; - break; - case 3: - direction = 6; - break; - case 4: - direction = 4; - break; - case 5: - direction = 12; - break; - case 6: - direction = 8; - break; - case 7: - direction = 9; - break; - case 8: - direction = 8; - break; - default: - // OOPSIE! Impossible or unknown - direction = 0; - } - } - mPos += 3; -} - -void MessageIn::readCoordinatePair(uint16_t &srcX, uint16_t &srcY, - uint16_t &dstX, uint16_t &dstY) -{ - if (mPos + 5 <= mLength) - { - const char *data = mData + mPos; - uint16_t temp; - - temp = MAKEWORD(data[3], data[2] & 0x000f); - dstX = temp >> 2; - - dstY = MAKEWORD(data[4], data[3] & 0x0003); - - temp = MAKEWORD(data[1], data[0]); - srcX = temp >> 6; - - temp = MAKEWORD(data[2], data[1] & 0x003f); - srcY = temp >> 4; - } - mPos += 5; -} - -void MessageIn::skip(unsigned int length) -{ - mPos += length; -} - -std::string MessageIn::readString(int length) -{ - // Get string length - if (length < 0) - length = readInt16(); - - // Make sure the string isn't erroneous - if (length < 0 || mPos + length > mLength) - { - mPos = mLength + 1; - return ""; - } - - // Read the string - char const *stringBeg = mData + mPos; - char const *stringEnd = (char const *)memchr(stringBeg, '\0', length); - std::string readString(stringBeg, - stringEnd ? stringEnd - stringBeg : length); - mPos += length; - return readString; -} - -} |