diff options
Diffstat (limited to 'src/chat-server')
-rw-r--r-- | src/chat-server/post.cpp | 101 | ||||
-rw-r--r-- | src/chat-server/post.hpp | 110 |
2 files changed, 211 insertions, 0 deletions
diff --git a/src/chat-server/post.cpp b/src/chat-server/post.cpp new file mode 100644 index 00000000..ca5af04a --- /dev/null +++ b/src/chat-server/post.cpp @@ -0,0 +1,101 @@ +/* + * The Mana World Server + * Copyright 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World 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 World 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 World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id$ + */ + +#include "post.hpp" + +#include "../defines.h" + +Letter::Letter(int type, Character *sender, Character *receiver) + : mType(type), mSender(sender), mReceiver(receiver) +{ + +} + +void Letter::setExpiry(unsigned long expiry) +{ + mExpiry = expiry; +} + +unsigned long Letter::getExpiry() const +{ + return mExpiry; +} + +bool Letter::addAttachment(InventoryItem item) +{ + if (mAttachments.size() > MAX_ATTACHMENTS) + { + return false; + } + + mAttachments.push_back(item); + + return true; +} + +Character* Letter::getReceiver() +{ + return mReceiver; +} + +bool Post::addLetter(Letter *letter) +{ + if (mLetters.size() > MAX_LETTERS) + { + return false; + } + + mLetters.push_back(letter); + + return true; +} + +void PostManager::addLetter(Letter *letter) +{ + std::map<Character*, Post*>::iterator itr = + mPostBox.find(letter->getReceiver()); + if (itr != mPostBox.end()) + { + itr->second->addLetter(letter); + } + else + { + Post *post = new Post(); + post->addLetter(letter); + mPostBox.insert( + std::pair<Character*, Post*>(letter->getReceiver(), post) + ); + } +} + +Post* PostManager::getPost(Character *player) +{ + std::map<Character*, Post*>::iterator itr = + mPostBox.find(player); + if (itr == mPostBox.end()) + { + return NULL; + } + + return itr->second; +} diff --git a/src/chat-server/post.hpp b/src/chat-server/post.hpp new file mode 100644 index 00000000..f1102b7d --- /dev/null +++ b/src/chat-server/post.hpp @@ -0,0 +1,110 @@ +/* + * The Mana World Server + * Copyright 2008 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World 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 World 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 World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id$ + */ + +#ifndef _TMWSERV_POST_H_ +#define _TMWSERV_POST_H_ + +#include <list> +#include <map> +#include <vector> + +#include "../common/inventorydata.hpp" + +class Item; +class Character; + +class Letter +{ +public: + /** + * Constructor + * @param type Type of Letter + */ + Letter(int type, Character *sender, Character *receiver); + + /** + * Set the expiry + */ + void setExpiry(unsigned long expiry); + + /** + * Get the expiry + */ + unsigned long getExpiry() const; + + /** + * Add an attachment + * @param aitem 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(); + +private: + unsigned int mType; + unsigned long mExpiry; + std::vector<InventoryItem> mAttachments; + Character *mSender; + Character *mReceiver; +}; + +class Post +{ +public: + /** + * Add letter to post + * @param letter Letter to add + * @return Returns true if post isnt full + */ + bool addLetter(Letter *letter); + +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); + +private: + std::map<Character*, Post*> mPostBox; +}; + +#endif |