//----------------------------------------------------------------------------- // Purpose: returns true if the CHudMenu handles the slot command //----------------------------------------------------------------------------- bool CBaseHudWeaponSelection::HandleHudMenuInput( int iSlot ) { CHudMenu *pHudMenu = GET_HUDELEMENT( CHudMenu ); if ( !pHudMenu || !pHudMenu->IsMenuOpen() ) return false; pHudMenu->SelectMenuItem( iSlot ); return true; }
void OpenVoiceMenu( int index ) { // do not show the menu if the player is dead or is an observer C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer(); if ( !pPlayer ) return; if ( !pPlayer->IsAlive() || pPlayer->IsObserver() ) return; CHudMenu *pMenu = (CHudMenu *) gHUD.FindElement( "CHudMenu" ); if ( !pMenu ) return; // if they hit the key again, close the menu if ( g_ActiveVoiceMenu == index ) { if ( pMenu->IsMenuOpen() ) { pMenu->HideMenu(); g_ActiveVoiceMenu = 0; return; } } if ( index > 0 && index < 9 ) { KeyValues *pKV = new KeyValues( "MenuItems" ); CMultiplayRules *pRules = dynamic_cast< CMultiplayRules * >( GameRules() ); if ( pRules ) { if ( !pRules->GetVoiceMenuLabels( index-1, pKV ) ) { pKV->deleteThis(); return; } } pMenu->ShowMenu_KeyValueItems( pKV ); pKV->deleteThis(); g_ActiveVoiceMenu = index; } else { g_ActiveVoiceMenu = 0; } }
//----------------------------------------------------------------------------- // Purpose: Menu Selection Code //----------------------------------------------------------------------------- void CBaseHudWeaponSelection::SelectSlot( int iSlot ) { // A menu may be overriding weapon selection commands CHudMenu *pHudMenu = GET_HUDELEMENT( CHudMenu ); if ( pHudMenu && IsHudMenuTakingInput() ) { pHudMenu->SelectMenuItem( iSlot ); // slots are one off the key numbers return; } // If we're not allowed to draw, ignore weapon selections if ( !BaseClass::ShouldDraw() ) { return; } UpdateSelectionTime(); SelectWeaponSlot( iSlot ); }
//----------------------------------------------------------------------------- // Purpose: returns true if the CHudMenu should take slot1, etc commands //----------------------------------------------------------------------------- bool CBaseHudWeaponSelection::IsHudMenuTakingInput() { CHudMenu *pHudMenu = GET_HUDELEMENT( CHudMenu ); return ( pHudMenu && pHudMenu->IsMenuOpen() ); }