00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _TMWSERV_GAMESERVER_TRADE_HPP_
00023 #define _TMWSERV_GAMESERVER_TRADE_HPP_
00024
00025 #include <vector>
00026
00027 class Character;
00028 class Inventory;
00029
00030 class Trade
00031 {
00032 public:
00033
00038 Trade(Character *, Character *);
00039
00045 void cancel(void);
00046
00053 bool request(Character *, int);
00054
00058 void confirm(Character *);
00059
00060
00061
00062
00063 void agree(Character *c);
00064
00068 void addItem(Character *, int slot, int amount);
00069
00073 void setMoney(Character *, int amount);
00074
00075 private:
00076
00077 ~Trade();
00078
00079 struct TradedItem
00080 {
00081 unsigned short id;
00082 unsigned char slot, amount;
00083 };
00084
00085 typedef std::vector< TradedItem > TradedItems;
00086
00087
00088
00089
00090 enum TradeState
00091 {
00092 TRADE_INIT = 0,
00093 TRADE_RUN,
00094 TRADE_CONFIRM_WAIT,
00095 TRADE_CONFIRMED,
00096 TRADE_AGREE_WAIT
00097 };
00098
00099 static bool perform(TradedItems items, Inventory &inv1, Inventory &inv2);
00100
00101 Character *mChar1, *mChar2;
00102 TradedItems mItems1, mItems2;
00103 int mMoney1, mMoney2;
00104 TradeState mState;
00105 };
00106
00107 #endif