bumped menu api again - added feature to get menu end reason
authorDavid Anderson <dvander@alliedmods.net>
Thu Jun 21 23:06:37 2007 +0000 (2007-06-21)
changeset 9972fc3152c3118
parent 996 378358b53fd5
child 998 b26df4dd8187
bumped menu api again - added feature to get menu end reason
core/MenuManager.cpp
core/MenuManager.h
core/MenuStyle_Base.cpp
core/MenuStyle_Valve.cpp
core/smn_menus.cpp
plugins/include/menus.inc
public/IMenuManager.h
     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  			}