*/
char GetModeChar();
+ /** For user modes, return the current parameter, if any
+ */
+ virtual std::string GetUserParameter(User* useor);
+
/**
* Called when a mode change for your mode occurs.
* @param source Contains the user setting the mode.
*/
virtual void DisplayList(User* user, Channel* channel);
+ /** In the event that the mode should be given a parameter, and no parameter was provided, this method is called.
+ * This allows you to give special information to the user, or handle this any way you like.
+ * @param user The user issuing the mode change
+ * @param dest For user mode changes, the target of the mode. For channel mode changes, NULL.
+ * @param channel For channel mode changes, the target of the mode. For user mode changes, NULL.
+ */
+ virtual void OnParameterMissing(User* user, User* dest, Channel* channel);
+
/**
* If your mode is a listmode, this method will be called to display an empty list (just the end of list numeric)
* @param user The user issuing the command
/** Process a set of mode changes from a server or user.
* @param parameters The parameters of the mode change, in the format
* they would be from a MODE command.
- * @param pcnt The number of items in the parameters array
* @param user The user setting or removing the modes. When the modes are set
* by a server, an 'uninitialized' User is used, where *user::nick == NULL
* and *user->server == NULL.
*/
std::string ParaModeList();
- /** Generates the CHANMODES= 005 sequence
+ /** Generates a list of modes, comma seperated by type:
+ * 1; Listmodes EXCEPT those with a prefix
+ * 2; Modes that take a param when adding or removing
+ * 3; Modes that only take a param when adding
+ * 4; Modes that dont take a param
*/
- std::string ChanModes();
+ std::string GiveModeList(ModeMasks m);
+
/** Used by this class internally during std::sort and 005 generation
*/
static bool PrefixComparison(prefixtype one, prefixtype two);