core/MenuStyle_Base.cpp
changeset 1259 472c5e61cdc8
parent 1231 17badaf66ce4
child 1269 27397584df9c
     1.1 --- a/core/MenuStyle_Base.cpp	Fri Aug 03 11:14:56 2007 +0000
     1.2 +++ b/core/MenuStyle_Base.cpp	Fri Aug 03 11:40:21 2007 +0000
     1.3 @@ -285,9 +285,13 @@
     1.4  	MenuEndReason end_reason = MenuEnd_Selected;
     1.5  	menu_states_t &states = player->states;
     1.6  
     1.7 -	assert(states.mh != NULL);
     1.8 +	/* Save variables */
     1.9 +	IMenuHandler *mh = states.mh;
    1.10 +	IBaseMenu *menu = states.menu;
    1.11  
    1.12 -	if (states.menu == NULL)
    1.13 +	assert(mh != NULL);
    1.14 +
    1.15 +	if (menu == NULL)
    1.16  	{
    1.17  		item = key_press;
    1.18  	} else if (key_press < 1 || key_press > GetMaxPageItems()) {
    1.19 @@ -296,7 +300,8 @@
    1.20  		ItemSelection type = states.slots[key_press].type;
    1.21  
    1.22  		/* Check if we should play a sound about the type */
    1.23 -		if (g_Menus.MenuSoundsEnabled())
    1.24 +		if (g_Menus.MenuSoundsEnabled() && 
    1.25 +			(!menu || (menu->GetMenuOptionFlags() & MENUFLAG_NO_SOUND) != MENUFLAG_NO_SOUND))
    1.26  		{
    1.27  			CellRecipientFilter filter;
    1.28  			cell_t clients[1];
    1.29 @@ -364,10 +369,6 @@
    1.30  		}
    1.31  	}
    1.32  
    1.33 -	/* Save variables */
    1.34 -	IMenuHandler *mh = states.mh;
    1.35 -	IBaseMenu *menu = states.menu;
    1.36 -
    1.37  	/* Clear states */
    1.38  	player->bInMenu = false;
    1.39  	if (player->menuHoldTime)
    1.40 @@ -581,10 +582,10 @@
    1.41  }
    1.42  
    1.43  CBaseMenu::CBaseMenu(IMenuHandler *pHandler, IMenuStyle *pStyle, IdentityToken_t *pOwner) : 
    1.44 -m_pStyle(pStyle), m_Strings(512), m_Pagination(7), m_ExitButton(true), 
    1.45 -m_bShouldDelete(false), m_bCancelling(false), m_pOwner(pOwner ? pOwner : g_pCoreIdent), 
    1.46 -m_bDeleting(false), m_bWillFreeHandle(false), m_hHandle(BAD_HANDLE), m_pHandler(pHandler),
    1.47 -m_pVoteHandler(NULL), m_ExitBackButton(false)
    1.48 +m_pStyle(pStyle), m_Strings(512), m_Pagination(7), m_bShouldDelete(false), m_bCancelling(false), 
    1.49 +m_pOwner(pOwner ? pOwner : g_pCoreIdent), m_bDeleting(false), m_bWillFreeHandle(false), 
    1.50 +m_hHandle(BAD_HANDLE), m_pHandler(pHandler), m_pVoteHandler(NULL), 
    1.51 +m_nFlags(MENUFLAG_BUTTON_EXIT)
    1.52  {
    1.53  }
    1.54  
    1.55 @@ -733,12 +734,17 @@
    1.56  
    1.57  bool CBaseMenu::GetExitButton()
    1.58  {
    1.59 -	return m_ExitButton;
    1.60 +	return ((m_nFlags & MENUFLAG_BUTTON_EXIT) == MENUFLAG_BUTTON_EXIT);
    1.61  }
    1.62  
    1.63  bool CBaseMenu::SetExitButton(bool set)
    1.64  {
    1.65 -	m_ExitButton = set;
    1.66 +	if (set)
    1.67 +	{
    1.68 +		m_nFlags |= MENUFLAG_BUTTON_EXIT;
    1.69 +	} else {
    1.70 +		m_nFlags &= ~MENUFLAG_BUTTON_EXIT;
    1.71 +	}
    1.72  	return true;
    1.73  }
    1.74  
    1.75 @@ -860,10 +866,25 @@
    1.76  
    1.77  bool CBaseMenu::GetExitBackButton()
    1.78  {
    1.79 -	return m_ExitBackButton;
    1.80 +	return ((m_nFlags & MENUFLAG_BUTTON_EXITBACK) == MENUFLAG_BUTTON_EXITBACK);
    1.81  }
    1.82  
    1.83  void CBaseMenu::SetExitBackButton(bool set)
    1.84  {
    1.85 -	m_ExitBackButton = set;
    1.86 +	if (set)
    1.87 +	{
    1.88 +		m_nFlags |= MENUFLAG_BUTTON_EXITBACK;
    1.89 +	} else {
    1.90 +		m_nFlags &= ~MENUFLAG_BUTTON_EXITBACK;
    1.91 +	}
    1.92  }
    1.93 +
    1.94 +unsigned int CBaseMenu::GetMenuOptionFlags()
    1.95 +{
    1.96 +	return m_nFlags;
    1.97 +}
    1.98 +
    1.99 +void CBaseMenu::SetMenuOptionFlags(unsigned int flags)
   1.100 +{
   1.101 +	m_nFlags = flags;
   1.102 +}