diff options
Diffstat (limited to 'src/chat-server/post.h')
-rw-r--r-- | src/chat-server/post.h | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/src/chat-server/post.h b/src/chat-server/post.h new file mode 100644 index 00000000..1cb4072c --- /dev/null +++ b/src/chat-server/post.h @@ -0,0 +1,185 @@ +/* + * The Mana Server + * Copyright (C) 2008-2010 The Mana World Development Team + * + * This file is part of The Mana Server. + * + * The Mana Server is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * The Mana Server is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with The Mana Server. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef POST_H +#define POST_H + +#include <map> +#include <string> +#include <vector> + +#include "../common/inventorydata.h" + +class Item; +class Character; + +class Letter +{ +public: + /** + * Constructor. + * + * Before the letter is stored in the database, the unique Id of the letter + * is 0. + * @param type Type of Letter - unused + * @param sender Pointer to character that sent the letter + * @param receiver Pointer to character that will receive the letter + */ + Letter(unsigned int type, Character *sender, Character *receiver); + + /** + * Destructor + */ + ~Letter(); + + /** + * Gets the unique Id of the letter. + */ + unsigned long getId() const + { return mId; } + + /** + * Sets the unique Id of the letter used as primary key in the database. + * @param Id Unique id of the letter. + */ + void setId(unsigned long Id) + { mId = Id; } + + /** + * Gets the type of the letter. (unused) + */ + unsigned int getType() const + { return mType; } + + /** + * Set the expiry + */ + void setExpiry(unsigned long expiry); + + /** + * Get the expiry + */ + unsigned long getExpiry() const; + + /** + * Add text contents of letter + * This overwrites whatever was there previously + * @param text The content of the letter to add + */ + void addText(const std::string &text); + + /** + * Get the text contents of letter + * @return String containing the text + */ + std::string getContents() const; + + /** + * Add an attachment + * @param item The attachment to add to the letter + * @return Returns true if the letter doesnt have too many attachments + */ + bool addAttachment(InventoryItem item); + + /** + * Get the character receiving the letter + * @return Returns the Character who will receive the letter + */ + Character *getReceiver() const; + + /** + * Get the character who sent the letter + * @return Returns the Character who sent the letter + */ + Character *getSender() const; + + /** + * Get the attachments + */ + std::vector<InventoryItem> getAttachments() const; + +private: + unsigned int mId; + unsigned int mType; + unsigned long mExpiry; + std::string mContents; + std::vector<InventoryItem> mAttachments; + Character *mSender; + Character *mReceiver; +}; + +class Post +{ +public: + /** + * Destructor + */ + ~Post(); + + /** + * Add letter to post + * @param letter Letter to add + * @return Returns true if post isnt full + */ + bool addLetter(Letter *letter); + + /** + * Return next letter + */ + Letter* getLetter(int letter) const; + + /** + * Return number of letters in post + * @return Returns the size of mLetters + */ + unsigned int getNumberOfLetters() const; + +private: + std::vector<Letter*> mLetters; +}; + +class PostManager +{ +public: + /** + * Add letter to post box + * @param letter Letter to add + */ + void addLetter(Letter *letter); + + /** + * Get post for character + * @param player Character that is getting post + * @return Returns the post for that character + */ + Post *getPost(Character *player) const; + + /** + * Remove the post for character + */ + void clearPost(Character *player); + +private: + std::map<Character*, Post*> mPostBox; +}; + +extern PostManager *postalManager; + +#endif |