summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-07-15 01:06:00 +0300
committerAndrei Karas <akaras@inbox.ru>2014-07-15 01:06:00 +0300
commit553ca65f60d72a12f1a579dc3948568d684ac950 (patch)
treeccf0e7b20ac1a76cde56a2a28fc269e5724131e4
parent84e2a85c11eadd62572539d429c1de1d67223fae (diff)
downloadmv-553ca65f60d72a12f1a579dc3948568d684ac950.tar.gz
mv-553ca65f60d72a12f1a579dc3948568d684ac950.tar.bz2
mv-553ca65f60d72a12f1a579dc3948568d684ac950.tar.xz
mv-553ca65f60d72a12f1a579dc3948568d684ac950.zip
Add net function readInt8 and use it for item pixel offset.
-rw-r--r--src/net/ea/itemhandler.cpp8
-rw-r--r--src/net/messagein.cpp12
-rw-r--r--src/net/messagein.h2
3 files changed, 18 insertions, 4 deletions
diff --git a/src/net/ea/itemhandler.cpp b/src/net/ea/itemhandler.cpp
index 8719c6256..e5ed730a0 100644
--- a/src/net/ea/itemhandler.cpp
+++ b/src/net/ea/itemhandler.cpp
@@ -47,8 +47,8 @@ void ItemHandler::processItemVisible(Net::MessageIn &msg)
const int x = msg.readInt16();
const int y = msg.readInt16();
const int amount = msg.readInt16();
- const int subX = msg.readUInt8();
- const int subY = msg.readUInt8();
+ const int subX = static_cast<int>(msg.readInt8());
+ const int subY = static_cast<int>(msg.readInt8());
if (actorManager)
{
@@ -64,8 +64,8 @@ void ItemHandler::processItemDropped(Net::MessageIn &msg)
const uint8_t identify = msg.readUInt8(); // identify flag
const int x = msg.readInt16();
const int y = msg.readInt16();
- const int subX = static_cast<int>(msg.readUInt8());
- const int subY = static_cast<int>(msg.readUInt8());
+ const int subX = static_cast<int>(msg.readInt8());
+ const int subY = static_cast<int>(msg.readInt8());
const int amount = msg.readInt16();
if (actorManager)
diff --git a/src/net/messagein.cpp b/src/net/messagein.cpp
index 301d51ad9..ccc80a838 100644
--- a/src/net/messagein.cpp
+++ b/src/net/messagein.cpp
@@ -55,6 +55,18 @@ unsigned char MessageIn::readUInt8()
mPos += 1;
PacketCounters::incInBytes(1);
+ DEBUGLOG("readUInt8: " + toStringPrint(static_cast<int>(value)));
+ return value;
+}
+
+signed char MessageIn::readInt8()
+{
+ signed char value = static_cast<signed char>(-1);
+ if (mPos < mLength)
+ value = static_cast<signed char>(mData[mPos]);
+
+ mPos += 1;
+ PacketCounters::incInBytes(1);
DEBUGLOG("readInt8: " + toStringPrint(static_cast<int>(value)));
return value;
}
diff --git a/src/net/messagein.h b/src/net/messagein.h
index f9f2aceb0..932764b8c 100644
--- a/src/net/messagein.h
+++ b/src/net/messagein.h
@@ -60,6 +60,8 @@ class MessageIn notfinal
virtual unsigned char readUInt8(); /**< Reads a byte. */
+ virtual signed char readInt8(); /**< Reads a byte. */
+
virtual int16_t readInt16() = 0; /**< Reads a short. */
virtual int readInt32() = 0; /**< Reads a long. */