1.1 --- a/core/MenuManager.cpp Thu Jun 21 19:51:34 2007 +0000
1.2 +++ b/core/MenuManager.cpp Thu Jun 21 23:06:37 2007 +0000
1.3 @@ -104,7 +104,7 @@
1.4 IBaseMenu *menu = m_pCurMenu;
1.5 InternalReset();
1.6 m_pHandler->OnMenuVoteCancel(menu);
1.7 - m_pHandler->OnMenuEnd(menu);
1.8 + m_pHandler->OnMenuEnd(menu, MenuEnd_VotingCancelled);
1.9 return;
1.10 }
1.11
1.12 @@ -163,7 +163,7 @@
1.13
1.14 picked_item:
1.15 m_pHandler->OnMenuVoteEnd(m_pCurMenu, chosen, m_Votes[highest], total);
1.16 - m_pHandler->OnMenuEnd(m_pCurMenu);
1.17 + m_pHandler->OnMenuEnd(m_pCurMenu, MenuEnd_VotingDone);
1.18 InternalReset();
1.19 }
1.20
1.21 @@ -172,7 +172,7 @@
1.22 m_Clients++;
1.23 }
1.24
1.25 -void VoteMenuHandler::OnMenuEnd(IBaseMenu *menu)
1.26 +void VoteMenuHandler::OnMenuEnd(IBaseMenu *menu, MenuEndReason reason)
1.27 {
1.28 DecrementPlayerCount();
1.29 }
2.1 --- a/core/MenuManager.h Thu Jun 21 19:51:34 2007 +0000
2.2 +++ b/core/MenuManager.h Thu Jun 21 23:06:37 2007 +0000
2.3 @@ -33,7 +33,7 @@
2.4 void OnMenuDisplay(IBaseMenu *menu, int client, IMenuPanel *display);
2.5 void OnMenuSelect(IBaseMenu *menu, int client, unsigned int item);
2.6 void OnMenuCancel(IBaseMenu *menu, int client, MenuCancelReason reason);
2.7 - void OnMenuEnd(IBaseMenu *menu);
2.8 + void OnMenuEnd(IBaseMenu *menu, MenuEndReason reason);
2.9 void OnMenuDrawItem(IBaseMenu *menu, int client, unsigned int item, unsigned int &style);
2.10 void OnMenuDisplayItem(IBaseMenu *menu, int client, unsigned int item, const char **display);
2.11 public: //IVoteMenuHandler
3.1 --- a/core/MenuStyle_Base.cpp Thu Jun 21 19:51:34 2007 +0000
3.2 +++ b/core/MenuStyle_Base.cpp Thu Jun 21 23:06:37 2007 +0000
3.3 @@ -84,7 +84,7 @@
3.4 /* Only fire end if there's a valid menu */
3.5 if (menu)
3.6 {
3.7 - mh->OnMenuEnd(menu);
3.8 + mh->OnMenuEnd(menu, MenuEnd_Cancelled);
3.9 }
3.10
3.11 if (bAutoIgnore)
3.12 @@ -311,7 +311,15 @@
3.13 /* Only fire end for valid menus */
3.14 if (menu)
3.15 {
3.16 - mh->OnMenuEnd(menu);
3.17 + MenuEndReason end_reason =
3.18 + (cancel ?
3.19 + MenuEnd_Selected
3.20 + :
3.21 + (reason == MenuCancel_Exit ?
3.22 + MenuEnd_Exit
3.23 + :
3.24 + MenuEnd_Cancelled));
3.25 + mh->OnMenuEnd(menu, end_reason);
3.26 }
3.27 }
3.28
3.29 @@ -392,7 +400,7 @@
3.30 g_Logger.LogMessage("[SM_MENU] DoClientMenu(): Failed to display to client %d", client);
3.31 #endif
3.32 mh->OnMenuCancel(menu, client, MenuCancel_NoDisplay);
3.33 - mh->OnMenuEnd(menu);
3.34 + mh->OnMenuEnd(menu, MenuEnd_Cancelled);
3.35 return false;
3.36 }
3.37
3.38 @@ -403,7 +411,7 @@
3.39 g_Logger.LogMessage("[SM_MENU] DoClientMenu(): Client %d is autoIgnoring", client);
3.40 #endif
3.41 mh->OnMenuCancel(menu, client, MenuCancel_NoDisplay);
3.42 - mh->OnMenuEnd(menu);
3.43 + mh->OnMenuEnd(menu, MenuEnd_Cancelled);
3.44 return false;
3.45 }
3.46
3.47 @@ -439,7 +447,7 @@
3.48 player->bAutoIgnore = false;
3.49 player->bInMenu = false;
3.50 mh->OnMenuCancel(menu, client, MenuCancel_NoDisplay);
3.51 - mh->OnMenuEnd(menu);
3.52 + mh->OnMenuEnd(menu, MenuEnd_Cancelled);
3.53 return false;
3.54 }
3.55
4.1 --- a/core/MenuStyle_Valve.cpp Thu Jun 21 19:51:34 2007 +0000
4.2 +++ b/core/MenuStyle_Valve.cpp Thu Jun 21 23:06:37 2007 +0000
4.3 @@ -147,7 +147,7 @@
4.4 {
4.5 mh->OnMenuStart(menu);
4.6 mh->OnMenuCancel(menu, client, MenuCancel_NoDisplay);
4.7 - mh->OnMenuEnd(menu);
4.8 + mh->OnMenuEnd(menu, MenuEnd_Cancelled);
4.9 return false;
4.10 }
4.11
5.1 --- a/core/smn_menus.cpp Thu Jun 21 19:51:34 2007 +0000
5.2 +++ b/core/smn_menus.cpp Thu Jun 21 23:06:37 2007 +0000
5.3 @@ -69,7 +69,7 @@
5.4 void OnMenuDisplay(IBaseMenu *menu, int client, IMenuPanel *display);
5.5 void OnMenuSelect(IBaseMenu *menu, int client, unsigned int item);
5.6 void OnMenuCancel(IBaseMenu *menu, int client, MenuCancelReason reason);
5.7 - void OnMenuEnd(IBaseMenu *menu);
5.8 + void OnMenuEnd(IBaseMenu *menu, MenuEndReason reason);
5.9 void OnMenuDestroy(IBaseMenu *menu);
5.10 void OnMenuVoteStart(IBaseMenu *menu);
5.11 void OnMenuVoteEnd(IBaseMenu *menu,
5.12 @@ -279,9 +279,9 @@
5.13 DoAction(menu, MenuAction_Cancel, client, (cell_t)reason);
5.14 }
5.15
5.16 -void CMenuHandler::OnMenuEnd(IBaseMenu *menu)
5.17 +void CMenuHandler::OnMenuEnd(IBaseMenu *menu, MenuEndReason reason)
5.18 {
5.19 - DoAction(menu, MenuAction_End, 0, 0);
5.20 + DoAction(menu, MenuAction_End, reason, 0);
5.21 }
5.22
5.23 void CMenuHandler::OnMenuDestroy(IBaseMenu *menu)
6.1 --- a/plugins/include/menus.inc Thu Jun 21 19:51:34 2007 +0000
6.2 +++ b/plugins/include/menus.inc Thu Jun 21 23:06:37 2007 +0000
6.3 @@ -37,7 +37,7 @@
6.4 MenuAction_Display = (1<<1), /**< A menu is about to be displayed (param1=client, param2=MenuPanel Handle) */
6.5 MenuAction_Select = (1<<2), /**< An item was selected (param1=client, param2=item) */
6.6 MenuAction_Cancel = (1<<3), /**< The menu was cancelled (param1=client, param2=reason) */
6.7 - MenuAction_End = (1<<4), /**< A menu's display/selection cycle is complete (nothing passed) */
6.8 + MenuAction_End = (1<<4), /**< A menu display has fully ended (param1=reason) */
6.9 MenuAction_VoteEnd = (1<<5), /**< (VOTE ONLY): A vote sequence has succeeded (param1=chosen item) */
6.10 MenuAction_VoteStart = (1<<6), /**< (VOTE ONLY): A vote sequence has started (nothing passed) */
6.11 MenuAction_VoteCancel = (1<<7), /**< (VOTE ONLY): A vote sequence has been cancelled (nothing passed) */
6.12 @@ -71,6 +71,18 @@
6.13 };
6.14
6.15 /**
6.16 + * Reasons a menu ended.
6.17 + */
6.18 +enum
6.19 +{
6.20 + MenuEnd_Cancelled = -1, /**< Menu was cancelled, reason was passed in MenuAction_Cancel */
6.21 + MenuEnd_Exit = -2, /**< Menu was cleanly exited (but cancelled) */
6.22 + MenuEnd_Selected = -3, /**< Menu item was selected and thus the menu is finished */
6.23 + MenuEnd_VotingDone = -4, /**< Voting finished */
6.24 + MenuEnd_VotingCancelled = -5, /**< Voting was cancelled */
6.25 +};
6.26 +
6.27 +/**
6.28 * Describes a menu's source
6.29 */
6.30 enum MenuSource
7.1 --- a/public/IMenuManager.h Thu Jun 21 19:51:34 2007 +0000
7.2 +++ b/public/IMenuManager.h Thu Jun 21 23:06:37 2007 +0000
7.3 @@ -23,7 +23,7 @@
7.4 #include <IHandleSys.h>
7.5
7.6 #define SMINTERFACE_MENUMANAGER_NAME "IMenuManager"
7.7 -#define SMINTERFACE_MENUMANAGER_VERSION 4
7.8 +#define SMINTERFACE_MENUMANAGER_VERSION 5
7.9
7.10 /**
7.11 * @file IMenuManager.h
7.12 @@ -116,6 +116,19 @@
7.13 MenuCancel_NoDisplay = -4, /**< Menu could not be displayed to the client */
7.14 };
7.15
7.16 + /**
7.17 + * @brief Reasons a menu ended.
7.18 + */
7.19 + enum MenuEndReason
7.20 + {
7.21 + MenuEnd_Cancelled = -1, /**< Menu was cancelled, reason was passed in MenuAction_Cancel */
7.22 + MenuEnd_Exit = -2, /**< Menu was cleanly exited (but cancelled) */
7.23 + MenuEnd_Selected = -3, /**< Menu item was selected and thus the menu is finished */
7.24 + MenuEnd_VotingDone = -4, /**< Voting finished */
7.25 + MenuEnd_VotingCancelled = -5, /**< Voting was cancelled */
7.26 + };
7.27 +
7.28 +
7.29 #define MENU_NO_PAGINATION 0 /**< Menu should not be paginated (10 items max) */
7.30 #define MENU_TIME_FOREVER 0 /**< Menu should be displayed as long as possible */
7.31
7.32 @@ -589,7 +602,7 @@
7.33 *
7.34 * @param menu Menu pointer.
7.35 */
7.36 - virtual void OnMenuEnd(IBaseMenu *menu)
7.37 + virtual void OnMenuEnd(IBaseMenu *menu, MenuEndReason reason)
7.38 {
7.39 }
7.40
7.41 @@ -722,7 +735,7 @@
7.42 }
7.43 virtual bool IsVersionCompatible(unsigned int version)
7.44 {
7.45 - if (version < 4 || version > GetInterfaceVersion())
7.46 + if (version < 5 || version > GetInterfaceVersion())
7.47 {
7.48 return false;
7.49 }