summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Makefile.am4
-rw-r--r--src/gui/trade.cpp23
-rw-r--r--src/net/protocol_trade.cpp50
-rw-r--r--src/net/protocol_trade.h36
4 files changed, 97 insertions, 16 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 8d446363..8a8d11a6 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -126,7 +126,9 @@ tmw_SOURCES = graphic/spriteset.cpp \
net/packet.h \
net/protocol.cpp \
net/protocol.h \
- resources/image.cpp \
+ net/protocol_trade.cpp \
+ net/protocol_trade.h \
+ resources/image.cpp \
resources/image.h \
resources/imagewriter.cpp \
resources/imagewriter.h \
diff --git a/src/gui/trade.cpp b/src/gui/trade.cpp
index 767888f4..359782d4 100644
--- a/src/gui/trade.cpp
+++ b/src/gui/trade.cpp
@@ -39,7 +39,8 @@
#include "../item.h"
#include "../net/messageout.h"
-#include "../net/protocol.h"
+#include "../net/protocol_trade.h"
+
#include "../resources/iteminfo.h"
@@ -227,10 +228,7 @@ void TradeWindow::receivedOk(bool own)
void TradeWindow::tradeItem(Item *item, int quantity)
{
- MessageOut outMsg;
- outMsg.writeInt16(CMSG_TRADE_ITEM_ADD_REQUEST);
- outMsg.writeInt16(item->getInvIndex());
- outMsg.writeInt32(quantity);
+ trade(*item,quantity);
}
void TradeWindow::mouseClick(int x, int y, int button, int count)
@@ -299,8 +297,7 @@ void TradeWindow::action(const std::string &eventId)
}
else if (eventId == "cancel")
{
- MessageOut outMsg;
- outMsg.writeInt16(CMSG_TRADE_CANCEL_REQUEST);
+ trade(cancel);
}
else if (eventId == "ok")
{
@@ -312,20 +309,16 @@ void TradeWindow::action(const std::string &eventId)
tempMoney[1] << tempInt;
moneyField->setText(tempMoney[1].str());
- MessageOut outMsg;
- outMsg.writeInt16(CMSG_TRADE_ITEM_ADD_REQUEST);
- outMsg.writeInt16(0);
- outMsg.writeInt32(tempInt);
+ trade(tempInt);
+
} else {
moneyField->setText("");
}
moneyField->setEnabled(false);
- MessageOut outMsg;
- outMsg.writeInt16(CMSG_TRADE_ADD_COMPLETE);
+ trade(complete);
}
else if (eventId == "trade")
{
- MessageOut outMsg;
- outMsg.writeInt16(CMSG_TRADE_OK);
+ trade();
}
}
diff --git a/src/net/protocol_trade.cpp b/src/net/protocol_trade.cpp
new file mode 100644
index 00000000..0271567e
--- /dev/null
+++ b/src/net/protocol_trade.cpp
@@ -0,0 +1,50 @@
+
+#include "protocol_trade.h"
+
+#include "../item.h"
+#include "../gui/trade.h"
+
+#include "messageout.h"
+
+cancel_t cancel;
+complete_t complete;
+
+/** Start trading with someone */
+void trade(Being&);
+
+void trade(int id,int amount)
+{
+ MessageOut outMsg;
+ outMsg.writeInt16(CMSG_TRADE_ITEM_ADD_REQUEST);
+ outMsg.writeInt16(id);
+ outMsg.writeInt32(amount);
+};
+
+/** add trading item*/
+
+void trade(Item& item,int amount)
+{
+trade(item.getInvIndex(),amount);
+}
+
+/** add money to trade */
+void trade(int i){trade(0,i);};
+
+/** cancel courent trade */
+void trade(cancel_t&)
+{
+ MessageOut outMsg;
+ outMsg.writeInt16(CMSG_TRADE_CANCEL_REQUEST);
+};
+
+void trade()
+{
+ MessageOut outMsg;
+ outMsg.writeInt16(CMSG_TRADE_OK);
+};
+
+void trade(complete_t&)
+{
+ MessageOut outMsg;
+ outMsg.writeInt16(CMSG_TRADE_ADD_COMPLETE);
+};
diff --git a/src/net/protocol_trade.h b/src/net/protocol_trade.h
new file mode 100644
index 00000000..42908ab2
--- /dev/null
+++ b/src/net/protocol_trade.h
@@ -0,0 +1,36 @@
+#ifndef _TMW_PROTOCOL_HELPER_
+#define _TMW_PROTOCOL_HELPER_
+
+#include "protocol.h"
+
+
+/**
+ * Helper class for using <actionfunc>(cancel), to cancel stuff
+ */
+class cancel_t {};
+extern cancel_t cancel;
+
+class complete_t {};
+extern complete_t complete;
+
+
+class Item;
+
+/** Start trading with someone */
+void trade(Being&);
+
+/** add trading item*/
+void trade(Item&,int amount);
+
+/** add money to trade */
+void trade(int);
+
+/** verify the trade */
+void trade();
+
+void trade(complete_t&);
+
+/** cancel courent trade */
+void trade(cancel_t&);
+
+#endif