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 +}