summaryrefslogtreecommitdiff
path: root/src/chat-server/post.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/chat-server/post.h')
-rw-r--r--src/chat-server/post.h185
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