00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _TMWSERV_POST_H_
00023 #define _TMWSERV_POST_H_
00024
00025 #include <map>
00026 #include <string>
00027 #include <vector>
00028
00029 #include "../common/inventorydata.hpp"
00030
00031 class Item;
00032 class Character;
00033
00034 class Letter
00035 {
00036 public:
00046 Letter(unsigned int type, Character *sender, Character *receiver);
00047
00051 ~Letter();
00052
00056 unsigned long getId() const
00057 { return mId; }
00058
00063 void setId(unsigned long Id)
00064 { mId = Id; }
00065
00069 unsigned int getType(void) const
00070 { return mType; }
00071
00075 void setExpiry(unsigned long expiry);
00076
00080 unsigned long getExpiry() const;
00081
00087 void addText(const std::string &text);
00088
00093 std::string getContents();
00094
00100 bool addAttachment(InventoryItem item);
00101
00106 Character* getReceiver();
00107
00112 Character* getSender();
00113
00117 std::vector<InventoryItem> getAttachments();
00118
00119 private:
00120 unsigned int mId;
00121 unsigned int mType;
00122 unsigned long mExpiry;
00123 std::string mContents;
00124 std::vector<InventoryItem> mAttachments;
00125 Character *mSender;
00126 Character *mReceiver;
00127 };
00128
00129 class Post
00130 {
00131 public:
00135 ~Post();
00136
00142 bool addLetter(Letter *letter);
00143
00147 Letter* getLetter(int letter) const;
00148
00153 unsigned int getNumberOfLetters() const;
00154
00155 private:
00156 std::vector<Letter*> mLetters;
00157 };
00158
00159 class PostManager
00160 {
00161 public:
00166 void addLetter(Letter *letter);
00167
00173 Post* getPost(Character *player);
00174
00178 void clearPost(Character *player);
00179
00180 private:
00181 std::map<Character*, Post*> mPostBox;
00182 };
00183
00184 extern PostManager *postalManager;
00185
00186 #endif