Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#include "cbase.h"
#include "c_baseplayer.h"
#include "menu.h"
#include "KeyValues.h"
#include "multiplay_gamerules.h"
static int g_ActiveVoiceMenu = 0;
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; } }
static void OpenVoiceMenu_1( void ) { OpenVoiceMenu( 1 ); }
static void OpenVoiceMenu_2( void ) { OpenVoiceMenu( 2 ); }
static void OpenVoiceMenu_3( void ) { OpenVoiceMenu( 3 ); }
ConCommand voice_menu_1( "voice_menu_1", OpenVoiceMenu_1, "Opens voice menu 1" ); ConCommand voice_menu_2( "voice_menu_2", OpenVoiceMenu_2, "Opens voice menu 2" ); ConCommand voice_menu_3( "voice_menu_3", OpenVoiceMenu_3, "Opens voice menu 3" );
CON_COMMAND( menuselect, "menuselect" ) { if ( args.ArgC() < 2 ) return;
if( g_ActiveVoiceMenu == 0 ) { // if we didn't have a menu open, maybe a plugin did. send it on to the server.
const char *cmd = VarArgs( "menuselect %s", args[1] ); engine->ServerCmd( cmd ); return; }
int iSelection = atoi( args[ 1 ] );
switch( g_ActiveVoiceMenu ) { case 1: case 2: case 3: { char cmd[128]; Q_snprintf( cmd, sizeof(cmd), "voicemenu %d %d", g_ActiveVoiceMenu - 1, iSelection - 1 ); engine->ServerCmd( cmd ); } break;
default: { // if we didn't have a menu open, maybe a plugin did. send it on to the server.
const char *cmd = VarArgs( "menuselect %d", iSelection ); engine->ServerCmd( cmd ); } break; }
// reset menu
g_ActiveVoiceMenu = 0; }
|