summaryrefslogtreecommitdiff
path: root/src/chat-server/chatchannel.h
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2010-11-14 13:18:14 +0100
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2010-11-14 13:18:14 +0100
commit196c1c0bffa8bb594ff0a7442748030f47cc9c58 (patch)
treeb60b3e3eff38907e2d8a94ce6aa7e63cd1a741c8 /src/chat-server/chatchannel.h
parent23a94e7b154726599b9112b91ebedb32af9ff22c (diff)
downloadmanaserv-196c1c0bffa8bb594ff0a7442748030f47cc9c58.tar.gz
manaserv-196c1c0bffa8bb594ff0a7442748030f47cc9c58.tar.bz2
manaserv-196c1c0bffa8bb594ff0a7442748030f47cc9c58.tar.xz
manaserv-196c1c0bffa8bb594ff0a7442748030f47cc9c58.zip
Renamed .hpp files into .h for consistency.
Also added an header to the autoattack.{h,cpp} files. Big but trivial fix.
Diffstat (limited to 'src/chat-server/chatchannel.h')
-rw-r--r--src/chat-server/chatchannel.h151
1 files changed, 151 insertions, 0 deletions
diff --git a/src/chat-server/chatchannel.h b/src/chat-server/chatchannel.h
new file mode 100644
index 00000000..66ffb5b2
--- /dev/null
+++ b/src/chat-server/chatchannel.h
@@ -0,0 +1,151 @@
+/*
+ * The Mana Server
+ * Copyright (C) 2004-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 CHATCHANNEL_H
+#define CHATCHANNEL_H
+
+#include <string>
+#include <vector>
+
+class ChatClient;
+
+/**
+ * A chat channel. Optionally a channel is private, in which case a password is
+ * required to join it.
+ *
+ * No logic is currently associated with a chat channel except for making sure
+ * that no user joins the channel twice and checking that a user who leaves
+ * actually existed in the channel.
+ *
+ * @todo <b>b_lindeijer:</b> It would be nicer when some more logic could be
+ * placed in this class to remove some weight from the ChatHandler.
+ */
+class ChatChannel
+{
+ public:
+ typedef std::vector< ChatClient * > ChannelUsers;
+
+ /**
+ * Constructor.
+ *
+ * @param name the name of the channel.
+ * @param announcement a welcome message.
+ * @param password password (for private channels).
+ * @param privacy whether this channel is private.
+ */
+ ChatChannel(int id,
+ const std::string &name,
+ const std::string &announcement = std::string(),
+ const std::string &password = std::string(),
+ bool joinable = true);
+
+ /**
+ * Get the ID of the channel.
+ */
+ int getId() const
+ { return mId; }
+
+ /**
+ * Get the name of the channel.
+ */
+ const std::string &getName() const
+ { return mName; }
+
+ /**
+ * Get the announcement string of the channel.
+ */
+ const std::string &getAnnouncement() const
+ { return mAnnouncement; }
+
+ /**
+ * Get the password of the channel.
+ */
+ const std::string& getPassword() const
+ { return mPassword; }
+
+ /**
+ * Sets the name of the channel.
+ */
+ void setName(const std::string &channelName)
+ { mName = channelName; }
+
+ /**
+ * Sets the announcement string of the channel.
+ */
+ void setAnnouncement(const std::string &channelAnnouncement)
+ { mAnnouncement = channelAnnouncement; }
+
+ /**
+ * Sets the password of the channel.
+ */
+ void setPassword(const std::string &channelPassword)
+ { mPassword = channelPassword; }
+
+ /**
+ * Gets the list of the users registered in the channel.
+ */
+ const ChannelUsers &getUserList() const
+ { return mRegisteredUsers; }
+
+ /**
+ * Adds a user to the channel.
+ *
+ * @return whether the user was successfully added
+ */
+ bool addUser(ChatClient *);
+
+ /**
+ * Removes a user from the channel.
+ *
+ * @return whether the user was successfully removed
+ */
+ bool removeUser(ChatClient *);
+
+ /**
+ * Empties a channel from its users (admin included).
+ */
+ void removeAllUsers();
+
+ /**
+ * Get whether a user can join this channel
+ */
+ bool canJoin() const;
+
+ /**
+ * Set user mode
+ */
+ void setUserMode(ChatClient *, unsigned char mode);
+
+ /**
+ * Get user mode
+ */
+ std::string getUserMode(ChatClient *) const;
+
+ private:
+ unsigned short mId; /**< The ID of the channel. */
+ std::string mName; /**< The name of the channel. */
+ std::string mAnnouncement; /**< Welcome message. */
+ std::string mPassword; /**< The channel password. */
+ bool mJoinable; /**< Whether anyone can join. */
+ ChannelUsers mRegisteredUsers; /**< Users in this channel. */
+ std::string mOwner; /**< Channel owner character name */
+};
+
+#endif