summaryrefslogtreecommitdiff
path: root/src/net/tmwa/messageout.h
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2012-04-08 17:37:02 +0200
committerThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2012-05-05 22:30:00 +0200
commit96abc4a9658b3318d0052dc5cd31a3c15d76a494 (patch)
treeff1d8e02b5020a08c01ab1605b0474a48eb77c42 /src/net/tmwa/messageout.h
parente9eda63dcad0b842d637c13e415ef4f751ea2adf (diff)
downloadmana-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/tmwa/messageout.h')
-rw-r--r--src/net/tmwa/messageout.h48
1 files changed, 44 insertions, 4 deletions
diff --git a/src/net/tmwa/messageout.h b/src/net/tmwa/messageout.h
index d30fd1ec..dd2b84cc 100644
--- a/src/net/tmwa/messageout.h
+++ b/src/net/tmwa/messageout.h
@@ -22,37 +22,77 @@
#ifndef NET_TA_MESSAGEOUT_H
#define NET_TA_MESSAGEOUT_H
-#include "net/messageout.h"
+#include <cstdint>
+#include <string>
namespace TmwAthena {
class Network;
/**
- * Used for building an outgoing message.
+ * Used for building an outgoing message to eAthena.
*
* \ingroup Network
*/
-class MessageOut : public Net::MessageOut
+class MessageOut
{
public:
MessageOut(uint16_t id);
+ /**
+ * Writes an unsigned 8-bit integer to the message.
+ */
+ void writeInt8(uint8_t value);
+
+ /**
+ * Writes an unsigned 16-bit integer to the message.
+ */
void writeInt16(uint16_t value);
+
+ /**
+ * Writes an unsigned 32-bit integer to the message.
+ */
void writeInt32(uint32_t value);
/**
+ * Writes a string. If a fixed length is not given (-1), it is stored
+ * as a short at the start of the string.
+ */
+ void writeString(const std::string &string, int length = -1);
+
+ /**
* Encodes coordinates and direction in 3 bytes.
*/
void writeCoordinates(uint16_t x, uint16_t y,
uint8_t direction);
+ /**
+ * Returns the content of the message.
+ */
+ char *getData() const { return mData; }
+
+ /**
+ * Returns the length of the data.
+ */
+ unsigned int getDataSize() const { return mDataSize; }
+
private:
+ /**
+ * Expand the packet data to be able to hold more data.
+ *
+ * NOTE: For performance enhancements this method could allocate extra
+ * memory in advance instead of expanding size every time more data is
+ * added.
+ */
void expand(size_t size);
Network *mNetwork;
+
+ char *mData; /**< Data building up. */
+ unsigned int mDataSize; /**< Size of data. */
+ unsigned int mPos; /**< Position in the data. */
};
-}
+} // namespace TmwAthena
#endif // NET_TA_MESSAGEOUT_H