//============================================================================= void Video::Activate( bool bRecommendedSettings ) { BaseClass::Activate(); if ( !bRecommendedSettings ) { SetupActivateData(); } else { if ( !SetupRecommendedActivateData() ) return; } if ( m_drpAspectRatio ) { switch ( m_iAspectRatio ) { default: case 0: m_drpAspectRatio->SetCurrentSelection( "#GameUI_AspectNormal" ); break; case 1: m_drpAspectRatio->SetCurrentSelection( "#GameUI_AspectWide16x9" ); break; case 2: m_drpAspectRatio->SetCurrentSelection( "#GameUI_AspectWide16x10" ); break; } FlyoutMenu *pFlyout = m_drpAspectRatio->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpDisplayMode ) { if ( m_bWindowed ) { if ( m_bNoBorder ) { m_drpDisplayMode->SetCurrentSelection( "#L4D360UI_VideoOptions_Windowed_NoBorder" ); } else { m_drpDisplayMode->SetCurrentSelection( "#GameUI_Windowed" ); } } else { m_drpDisplayMode->SetCurrentSelection( "#GameUI_Fullscreen" ); } FlyoutMenu *pFlyout = m_drpDisplayMode->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpResolution ) { FlyoutMenu *pFlyout = m_drpResolution->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpLockMouse ) { if ( m_bLockMouse ) { m_drpLockMouse->SetCurrentSelection( "#L4D360UI_Enabled" ); } else { m_drpLockMouse->SetCurrentSelection( "#L4D360UI_Disabled" ); } FlyoutMenu *pFlyout = m_drpLockMouse->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_sldFilmGrain ) { if ( !bRecommendedSettings ) { m_sldFilmGrain->Reset(); } else { m_sldFilmGrain->SetCurrentValue( m_flFilmGrain ); m_sldFilmGrain->ResetSliderPosAndDefaultMarkers(); } } if ( m_drpModelDetail ) { switch ( m_iModelTextureDetail ) { case 0: m_drpModelDetail->SetCurrentSelection( "ModelDetailLow" ); break; case 1: m_drpModelDetail->SetCurrentSelection( "ModelDetailMedium" ); break; case 2: m_drpModelDetail->SetCurrentSelection( "ModelDetailHigh" ); break; } FlyoutMenu *pFlyout = m_drpModelDetail->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpPagedPoolMem ) { switch ( m_iPagedPoolMem ) { case 0: m_drpPagedPoolMem->SetCurrentSelection( "PagedPoolMemLow" ); break; case 1: m_drpPagedPoolMem->SetCurrentSelection( "PagedPoolMemMedium" ); break; case 2: m_drpPagedPoolMem->SetCurrentSelection( "PagedPoolMemHigh" ); break; } m_drpPagedPoolMem->SetOpenCallback( PagedPoolMemOpenned ); FlyoutMenu *pFlyout = m_drpPagedPoolMem->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpAntialias ) { FlyoutMenu *pFlyout = m_drpAntialias->GetCurrentFlyout(); if ( pFlyout ) { char szCurrentButton[ 32 ]; Q_strncpy( szCurrentButton, VIDEO_ANTIALIAS_COMMAND_PREFIX, sizeof( szCurrentButton ) ); int iCommandNumberPosition = Q_strlen( szCurrentButton ); szCurrentButton[ iCommandNumberPosition + 1 ] = '\0'; // We start with no entries m_nNumAAModes = 0; // Always have the possibility of no AA Assert( m_nNumAAModes < MAX_DYNAMIC_AA_MODES ); szCurrentButton[ iCommandNumberPosition ] = m_nNumAAModes + '0'; SetFlyoutButtonText( szCurrentButton, pFlyout, "#GameUI_None" ); m_nAAModes[m_nNumAAModes].m_nNumSamples = 1; m_nAAModes[m_nNumAAModes].m_nQualityLevel = 0; m_nNumAAModes++; // Add other supported AA settings if ( materials->SupportsMSAAMode(2) ) { Assert( m_nNumAAModes < MAX_DYNAMIC_AA_MODES ); szCurrentButton[ iCommandNumberPosition ] = m_nNumAAModes + '0'; SetFlyoutButtonText( szCurrentButton, pFlyout, "#GameUI_2X" ); m_nAAModes[m_nNumAAModes].m_nNumSamples = 2; m_nAAModes[m_nNumAAModes].m_nQualityLevel = 0; m_nNumAAModes++; } if ( materials->SupportsMSAAMode(4) ) { Assert( m_nNumAAModes < MAX_DYNAMIC_AA_MODES ); szCurrentButton[ iCommandNumberPosition ] = m_nNumAAModes + '0'; SetFlyoutButtonText( szCurrentButton, pFlyout, "#GameUI_4X" ); m_nAAModes[m_nNumAAModes].m_nNumSamples = 4; m_nAAModes[m_nNumAAModes].m_nQualityLevel = 0; m_nNumAAModes++; } if ( materials->SupportsMSAAMode(6) ) { Assert( m_nNumAAModes < MAX_DYNAMIC_AA_MODES ); szCurrentButton[ iCommandNumberPosition ] = m_nNumAAModes + '0'; SetFlyoutButtonText( szCurrentButton, pFlyout, "#GameUI_6X" ); m_nAAModes[m_nNumAAModes].m_nNumSamples = 6; m_nAAModes[m_nNumAAModes].m_nQualityLevel = 0; m_nNumAAModes++; } if ( materials->SupportsCSAAMode(4, 2) ) // nVidia CSAA "8x" { Assert( m_nNumAAModes < MAX_DYNAMIC_AA_MODES ); szCurrentButton[ iCommandNumberPosition ] = m_nNumAAModes + '0'; SetFlyoutButtonText( szCurrentButton, pFlyout, "#GameUI_8X_CSAA" ); m_nAAModes[m_nNumAAModes].m_nNumSamples = 4; m_nAAModes[m_nNumAAModes].m_nQualityLevel = 2; m_nNumAAModes++; } if ( materials->SupportsCSAAMode(4, 4) ) // nVidia CSAA "16x" { Assert( m_nNumAAModes < MAX_DYNAMIC_AA_MODES ); szCurrentButton[ iCommandNumberPosition ] = m_nNumAAModes + '0'; SetFlyoutButtonText( szCurrentButton, pFlyout, "#GameUI_16X_CSAA" ); m_nAAModes[m_nNumAAModes].m_nNumSamples = 4; m_nAAModes[m_nNumAAModes].m_nQualityLevel = 4; m_nNumAAModes++; } if ( materials->SupportsMSAAMode(8) ) { Assert( m_nNumAAModes < MAX_DYNAMIC_AA_MODES ); szCurrentButton[ iCommandNumberPosition ] = m_nNumAAModes + '0'; SetFlyoutButtonText( szCurrentButton, pFlyout, "#GameUI_8X" ); m_nAAModes[m_nNumAAModes].m_nNumSamples = 8; m_nAAModes[m_nNumAAModes].m_nQualityLevel = 0; m_nNumAAModes++; } if ( materials->SupportsCSAAMode(8, 2) ) // nVidia CSAA "16xQ" { Assert( m_nNumAAModes < MAX_DYNAMIC_AA_MODES ); szCurrentButton[ iCommandNumberPosition ] = m_nNumAAModes + '0'; SetFlyoutButtonText( szCurrentButton, pFlyout, "#GameUI_16XQ_CSAA" ); m_nAAModes[m_nNumAAModes].m_nNumSamples = 8; m_nAAModes[m_nNumAAModes].m_nQualityLevel = 2; m_nNumAAModes++; } // Change the height to fit the active items pFlyout->SetBGTall( m_nNumAAModes * 20 + 5 ); // Disable the remaining possible choices for ( int i = m_nNumAAModes; i <= 9; ++i ) { szCurrentButton[ iCommandNumberPosition ] = i + '0'; Button *pButton = pFlyout->FindChildButtonByCommand( szCurrentButton ); if ( pButton ) { pButton->SetVisible( false ); } } // Select the currently set type m_iAntiAlias = FindMSAAMode( m_nAASamples, m_nAAQuality ); szCurrentButton[ iCommandNumberPosition ] = m_iAntiAlias + '0'; m_drpAntialias->SetCurrentSelection( szCurrentButton ); pFlyout->SetListener( this ); } } if ( m_drpFiltering ) { switch ( m_iFiltering ) { case 0: m_drpFiltering->SetCurrentSelection( "#GameUI_Bilinear" ); break; case 1: m_drpFiltering->SetCurrentSelection( "#GameUI_Trilinear" ); break; case 2: m_drpFiltering->SetCurrentSelection( "#GameUI_Anisotropic2X" ); break; case 4: m_drpFiltering->SetCurrentSelection( "#GameUI_Anisotropic4X" ); break; case 8: m_drpFiltering->SetCurrentSelection( "#GameUI_Anisotropic8X" ); break; case 16: m_drpFiltering->SetCurrentSelection( "#GameUI_Anisotropic16X" ); break; default: m_drpFiltering->SetCurrentSelection( "#GameUI_Trilinear" ); m_iFiltering = 1; break; } FlyoutMenu *pFlyout = m_drpFiltering->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpVSync ) { if ( m_bVSync ) { if ( m_bTripleBuffered ) { m_drpVSync->SetCurrentSelection( "VSyncTripleBuffered" ); } else { m_drpVSync->SetCurrentSelection( "VSyncEnabled" ); } } else { m_drpVSync->SetCurrentSelection( "VSyncDisabled" ); } FlyoutMenu *pFlyout = m_drpVSync->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpQueuedMode ) { // Only allow the options on multi-processor machines. if ( GetCPUInformation().m_nPhysicalProcessors >= 2 ) { if ( m_iQueuedMode != 0 ) { m_drpQueuedMode->SetCurrentSelection( "QueuedModeEnabled" ); } else { m_drpQueuedMode->SetCurrentSelection( "QueuedModeDisabled" ); } FlyoutMenu *pFlyout = m_drpQueuedMode->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } else { m_drpQueuedMode->SetEnabled( false ); } } if ( m_drpShaderDetail ) { switch ( m_iGPUDetail ) { case 0: m_drpShaderDetail->SetCurrentSelection( "ShaderDetailLow" ); break; case 1: m_drpShaderDetail->SetCurrentSelection( "ShaderDetailMedium" ); break; case 2: m_drpShaderDetail->SetCurrentSelection( "ShaderDetailHigh" ); break; case 3: m_drpShaderDetail->SetCurrentSelection( "ShaderDetailVeryHigh" ); break; } FlyoutMenu *pFlyout = m_drpShaderDetail->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpCPUDetail ) { switch ( m_iCPUDetail ) { case 0: m_drpCPUDetail->SetCurrentSelection( "CPUDetailLow" ); break; case 1: m_drpCPUDetail->SetCurrentSelection( "CPUDetailMedium" ); break; case 2: m_drpCPUDetail->SetCurrentSelection( "CPUDetailHigh" ); break; } FlyoutMenu *pFlyout = m_drpCPUDetail->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if( m_drpLighting ) { if( deferred_lighting_enabled.GetBool() ) m_drpLighting->SetCurrentSelection( "DeferredLighting" ); else m_drpLighting->SetCurrentSelection( "StandardLighting" ); FlyoutMenu *pFlyout = m_drpLighting->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } UpdateFooter(); if ( !bRecommendedSettings ) { if ( m_drpAspectRatio ) { if ( m_ActiveControl ) m_ActiveControl->NavigateFrom( ); m_drpAspectRatio->NavigateTo(); m_ActiveControl = m_drpAspectRatio; } } }
//============================================================================= void Audio::Activate() { BaseClass::Activate(); if ( m_sldGameVolume ) { m_sldGameVolume->Reset(); } if ( m_sldMusicVolume ) { m_sldMusicVolume->Reset(); } if ( m_drpSpeakerConfiguration ) { CGameUIConVarRef snd_surround_speakers("Snd_Surround_Speakers"); switch ( snd_surround_speakers.GetInt() ) { case 2: m_drpSpeakerConfiguration->SetCurrentSelection( "#GameUI_2Speakers" ); break; case 4: m_drpSpeakerConfiguration->SetCurrentSelection( "#GameUI_4Speakers" ); break; case 5: m_drpSpeakerConfiguration->SetCurrentSelection( "#GameUI_5Speakers" ); break; case 0: default: m_drpSpeakerConfiguration->SetCurrentSelection( "#GameUI_Headphones" ); break; } FlyoutMenu *pFlyout = m_drpSpeakerConfiguration->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpSoundQuality ) { CGameUIConVarRef Snd_PitchQuality("Snd_PitchQuality"); CGameUIConVarRef dsp_slow_cpu("dsp_slow_cpu"); int quality = 0; if ( dsp_slow_cpu.GetBool() == false ) { quality = 1; } if ( Snd_PitchQuality.GetBool() ) { quality = 2; } switch ( quality ) { case 1: m_drpSoundQuality->SetCurrentSelection( "#GameUI_Medium" ); break; case 2: m_drpSoundQuality->SetCurrentSelection( "#GameUI_High" ); break; case 0: default: m_drpSoundQuality->SetCurrentSelection( "#GameUI_Low" ); break; } FlyoutMenu *pFlyout = m_drpSoundQuality->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpCaptioning ) { CGameUIConVarRef closecaption("closecaption"); CGameUIConVarRef cc_subtitles("cc_subtitles"); if ( !closecaption.GetBool() ) { m_drpCaptioning->SetCurrentSelection( "#L4D360UI_AudioOptions_CaptionOff" ); } else { if ( cc_subtitles.GetBool() ) { m_drpCaptioning->SetCurrentSelection( "#L4D360UI_AudioOptions_CaptionSubtitles" ); } else { m_drpCaptioning->SetCurrentSelection( "#L4D360UI_AudioOptions_CaptionOn" ); } } FlyoutMenu *pFlyout = m_drpCaptioning->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpLanguage ) { char szCurrentLanguage[50] = ""; char szAvailableLanguages[512] = ""; szAvailableLanguages[0] = '\0'; // Fallback to current engine language engine->GetUILanguage( szCurrentLanguage, sizeof( szCurrentLanguage )); // In a Steam environment we get the current language #if !defined( NO_STEAM ) // When Steam isn't running we can't get the language info... if ( steamapicontext->SteamApps() ) { Q_strncpy( szCurrentLanguage, steamapicontext->SteamApps()->GetCurrentGameLanguage(), sizeof(szCurrentLanguage) ); Q_strncpy( szAvailableLanguages, steamapicontext->SteamApps()->GetAvailableGameLanguages(), sizeof(szAvailableLanguages) ); } #endif // Get the spoken language and store it for comparison purposes m_nCurrentAudioLanguage = PchLanguageToELanguage( szCurrentLanguage ); // Set up the base string for each button command char szCurrentButton[ 32 ]; Q_strncpy( szCurrentButton, VIDEO_LANGUAGE_COMMAND_PREFIX, sizeof( szCurrentButton ) ); int iCommandNumberPosition = Q_strlen( szCurrentButton ); szCurrentButton[ iCommandNumberPosition + 1 ] = '\0'; // Check to see if we have a list of languages from Steam if ( szAvailableLanguages[0] != '\0' ) { int iSelectedLanguage = 0; FlyoutMenu *pLanguageFlyout = m_drpLanguage->GetCurrentFlyout(); // Loop through all the languages CSplitString languagesList( szAvailableLanguages, "," ); for ( m_nNumAudioLanguages = 0; m_nNumAudioLanguages < languagesList.Count() && m_nNumAudioLanguages < MAX_DYNAMIC_AUDIO_LANGUAGES; ++m_nNumAudioLanguages ) { szCurrentButton[ iCommandNumberPosition ] = m_nNumAudioLanguages + '0'; m_nAudioLanguages[ m_nNumAudioLanguages ].languageCode = PchLanguageToELanguage( languagesList[ m_nNumAudioLanguages ] ); SetFlyoutButtonText( szCurrentButton, pLanguageFlyout, GetLanguageVGUILocalization( m_nAudioLanguages[ m_nNumAudioLanguages ].languageCode ) ); if ( m_nCurrentAudioLanguage == m_nAudioLanguages[ m_nNumAudioLanguages ].languageCode ) { iSelectedLanguage = m_nNumAudioLanguages; } } // Change the height to fit the active items pLanguageFlyout->SetBGTall( m_nNumAudioLanguages * 20 + 5 ); // Disable the remaining possible choices for ( int i = m_nNumAudioLanguages; i < MAX_DYNAMIC_AUDIO_LANGUAGES; ++i ) { szCurrentButton[ iCommandNumberPosition ] = i + '0'; Button *pButton = pLanguageFlyout->FindChildButtonByCommand( szCurrentButton ); if ( pButton ) { pButton->SetVisible( false ); } } // Set the current selection szCurrentButton[ iCommandNumberPosition ] = iSelectedLanguage + '0'; m_drpLanguage->SetCurrentSelection( szCurrentButton ); m_nSelectedAudioLanguage = m_nAudioLanguages[ iSelectedLanguage ].languageCode; } m_drpLanguage->SetVisible( m_nNumAudioLanguages > 1 ); } UpdateFooter( true ); if ( m_sldGameVolume ) { if ( m_ActiveControl ) m_ActiveControl->NavigateFrom( ); m_sldGameVolume->NavigateTo(); m_ActiveControl = m_sldGameVolume; } }
//============================================================================= void Audio::Activate() { BaseClass::Activate(); if ( m_sldGameVolume ) { m_sldGameVolume->Reset(); } if ( m_sldMusicVolume ) { m_sldMusicVolume->Reset(); } if ( m_sldVoiceThreshold ) { m_sldVoiceThreshold->Reset(); } if ( m_drpSpeakerConfiguration ) { CGameUIConVarRef snd_surround_speakers("Snd_Surround_Speakers"); switch ( snd_surround_speakers.GetInt() ) { case 2: m_drpSpeakerConfiguration->SetCurrentSelection( "#GameUI_2Speakers" ); break; case 4: m_drpSpeakerConfiguration->SetCurrentSelection( "#GameUI_4Speakers" ); break; case 5: m_drpSpeakerConfiguration->SetCurrentSelection( "#GameUI_5Speakers" ); break; case 0: default: m_drpSpeakerConfiguration->SetCurrentSelection( "#GameUI_Headphones" ); break; } FlyoutMenu *pFlyout = m_drpSpeakerConfiguration->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpSoundQuality ) { CGameUIConVarRef Snd_PitchQuality("Snd_PitchQuality"); CGameUIConVarRef dsp_slow_cpu("dsp_slow_cpu"); int quality = 0; if ( dsp_slow_cpu.GetBool() == false ) { quality = 1; } if ( Snd_PitchQuality.GetBool() ) { quality = 2; } switch ( quality ) { case 1: m_drpSoundQuality->SetCurrentSelection( "#GameUI_Medium" ); break; case 2: m_drpSoundQuality->SetCurrentSelection( "#GameUI_High" ); break; case 0: default: m_drpSoundQuality->SetCurrentSelection( "#GameUI_Low" ); break; } FlyoutMenu *pFlyout = m_drpSoundQuality->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpCaptioning ) { CGameUIConVarRef closecaption("closecaption"); CGameUIConVarRef cc_subtitles("cc_subtitles"); if ( !closecaption.GetBool() ) { m_drpCaptioning->SetCurrentSelection( "#L4D360UI_AudioOptions_CaptionOff" ); } else { if ( cc_subtitles.GetBool() ) { m_drpCaptioning->SetCurrentSelection( "#L4D360UI_AudioOptions_CaptionSubtitles" ); } else { m_drpCaptioning->SetCurrentSelection( "#L4D360UI_AudioOptions_CaptionOn" ); } } FlyoutMenu *pFlyout = m_drpCaptioning->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_drpLanguage ) { char szCurrentLanguage[50] = ""; char szAvailableLanguages[512] = ""; szAvailableLanguages[0] = '\0'; // Fallback to current engine language engine->GetUILanguage( szCurrentLanguage, sizeof( szCurrentLanguage )); // In a Steam environment we get the current language #if !defined( NO_STEAM ) // When Steam isn't running we can't get the language info... if ( steamapicontext->SteamApps() ) { Q_strncpy( szCurrentLanguage, steamapicontext->SteamApps()->GetCurrentGameLanguage(), sizeof(szCurrentLanguage) ); Q_strncpy( szAvailableLanguages, steamapicontext->SteamApps()->GetAvailableGameLanguages(), sizeof(szAvailableLanguages) ); } #endif // Get the spoken language and store it for comparison purposes m_nCurrentAudioLanguage = PchLanguageToELanguage( szCurrentLanguage ); // Set up the base string for each button command char szCurrentButton[ 32 ]; Q_strncpy( szCurrentButton, VIDEO_LANGUAGE_COMMAND_PREFIX, sizeof( szCurrentButton ) ); int iCommandNumberPosition = Q_strlen( szCurrentButton ); szCurrentButton[ iCommandNumberPosition + 1 ] = '\0'; // Check to see if we have a list of languages from Steam if ( szAvailableLanguages[0] != '\0' ) { int iSelectedLanguage = 0; FlyoutMenu *pLanguageFlyout = m_drpLanguage->GetCurrentFlyout(); // Loop through all the languages CSplitString languagesList( szAvailableLanguages, "," ); for ( m_nNumAudioLanguages = 0; m_nNumAudioLanguages < languagesList.Count() && m_nNumAudioLanguages < MAX_DYNAMIC_AUDIO_LANGUAGES; ++m_nNumAudioLanguages ) { szCurrentButton[ iCommandNumberPosition ] = m_nNumAudioLanguages + '0'; m_nAudioLanguages[ m_nNumAudioLanguages ].languageCode = PchLanguageToELanguage( languagesList[ m_nNumAudioLanguages ] ); SetFlyoutButtonText( szCurrentButton, pLanguageFlyout, GetLanguageVGUILocalization( m_nAudioLanguages[ m_nNumAudioLanguages ].languageCode ) ); if ( m_nCurrentAudioLanguage == m_nAudioLanguages[ m_nNumAudioLanguages ].languageCode ) { iSelectedLanguage = m_nNumAudioLanguages; } } // Change the height to fit the active items pLanguageFlyout->SetBGTall( m_nNumAudioLanguages * 20 + 5 ); // Disable the remaining possible choices for ( int i = m_nNumAudioLanguages; i < MAX_DYNAMIC_AUDIO_LANGUAGES; ++i ) { szCurrentButton[ iCommandNumberPosition ] = i + '0'; Button *pButton = pLanguageFlyout->FindChildButtonByCommand( szCurrentButton ); if ( pButton ) { pButton->SetVisible( false ); } } // Set the current selection szCurrentButton[ iCommandNumberPosition ] = iSelectedLanguage + '0'; m_drpLanguage->SetCurrentSelection( szCurrentButton ); m_nSelectedAudioLanguage = m_nAudioLanguages[ iSelectedLanguage ].languageCode; } m_drpLanguage->SetVisible( m_nNumAudioLanguages > 1 ); } if ( !m_pVoiceTweak ) { SetControlVisible( "DrpVoiceCommunication", false ); SetControlVisible( "SldVoiceTransmitVolume", false ); SetControlVisible( "SldVoiceReceiveVolume", false ); SetControlVisible( "DrpBoostMicrophone", false ); SetControlVisible( "BtnTestMicrophone", false ); SetControlVisible( "MicMeter", false ); SetControlVisible( "MicMeter2", false ); } else { CGameUIConVarRef voice_modenable("voice_modenable"); CGameUIConVarRef voice_enable("voice_enable"); bool bVoiceEnabled = voice_enable.GetBool() && voice_modenable.GetBool(); if ( m_drpVoiceCommunication ) { if ( bVoiceEnabled ) { m_drpVoiceCommunication->SetCurrentSelection( "#L4D360UI_Enabled" ); } else { m_drpVoiceCommunication->SetCurrentSelection( "#L4D360UI_Disabled" ); } FlyoutMenu *pFlyout = m_drpVoiceCommunication->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } CGameUIConVarRef voice_vox("voice_vox"); if ( m_drpVoiceCommunicationStyle ) { m_drpVoiceCommunicationStyle->SetEnabled( bVoiceEnabled ); if ( voice_vox.GetBool() ) { m_drpVoiceCommunicationStyle->SetCurrentSelection( "#L4D360UI_OpenMic" ); SetControlEnabled( "SldVoiceVoxThreshold", bVoiceEnabled ); } else { m_drpVoiceCommunicationStyle->SetCurrentSelection( "#L4D360UI_PushToTalk" ); SetControlEnabled( "SldVoiceVoxThreshold", false ); } FlyoutMenu *pFlyout = m_drpVoiceCommunicationStyle->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_sldTransmitVolume ) { bool bMicVolumeFound = m_pVoiceTweak->IsControlFound( MicrophoneVolume ); float micVolume = m_pVoiceTweak->GetControlFloat( MicrophoneVolume ); m_sldTransmitVolume->SetCurrentValue( (int)( 100.0f * micVolume ) ); m_sldTransmitVolume->ResetSliderPosAndDefaultMarkers(); m_sldTransmitVolume->SetEnabled( bVoiceEnabled && bMicVolumeFound ); } if ( m_sldRecieveVolume ) { float flRecVolume = m_pVoiceTweak->GetControlFloat( OtherSpeakerScale ); m_sldRecieveVolume->Reset(); m_sldRecieveVolume->SetCurrentValue( flRecVolume ); m_sldRecieveVolume->SetEnabled( bVoiceEnabled ); } if ( m_drpBoostMicrophoneGain ) { float fMicBoost = m_pVoiceTweak->GetControlFloat( MicBoost ); if ( fMicBoost != 0.0f ) { m_drpBoostMicrophoneGain->SetCurrentSelection( "#L4D360UI_Enabled" ); } else { m_drpBoostMicrophoneGain->SetCurrentSelection( "#L4D360UI_Disabled" ); } m_drpBoostMicrophoneGain->SetEnabled( bVoiceEnabled ); FlyoutMenu *pFlyout = m_drpBoostMicrophoneGain->GetCurrentFlyout(); if ( pFlyout ) { pFlyout->SetListener( this ); } } if ( m_pMicMeter ) { m_pMicMeter->SetVisible( bVoiceEnabled ); } if ( m_pMicMeter2 ) { m_pMicMeter2->SetVisible( false ); } if ( m_pMicMeterIndicator ) { m_pMicMeterIndicator->SetVisible( false ); } } UpdateFooter( true ); if ( m_sldGameVolume ) { if ( m_ActiveControl ) m_ActiveControl->NavigateFrom( ); m_sldGameVolume->NavigateTo(); m_ActiveControl = m_sldGameVolume; } }
void Multiplayer::InitLogoList() { if ( !m_drpSpraypaint ) { return; } FlyoutMenu *pFlyout = m_drpSpraypaint->GetCurrentFlyout(); char szCurrentButton[ 32 ]; Q_strncpy( szCurrentButton, MULTIPLAYER_SPRAYPAINT_COMMAND_PREFIX, sizeof( szCurrentButton ) ); int iCommandNumberPosition = Q_strlen( szCurrentButton ); szCurrentButton[ iCommandNumberPosition + 1 ] = '\0'; // Find our logos int initialItem = 0; CGameUIConVarRef cl_logofile( "cl_logofile", true ); if ( !cl_logofile.IsValid() ) return; const char *logofile = cl_logofile.GetString(); m_nNumSpraypaintLogos = 0; KeyValues *pSpraysManifest = new KeyValues( "sprays_manifest" ); KeyValues::AutoDelete autoDelete( pSpraysManifest ); pSpraysManifest->LoadFromFile( g_pFullFileSystem, "scripts/sprays_manifest.txt", NULL ); KeyValues *pSprayKey = pSpraysManifest->GetFirstSubKey(); while ( m_nNumSpraypaintLogos < MAX_SPRAYPAINT_LOGOS - 1 && pSprayKey ) { char filename[ MAX_PATH ]; Q_snprintf( filename, sizeof(filename), MULTIPLAYER_SPRAY_FOLDER "%s", pSprayKey->GetString() ); if ( g_pFullFileSystem->FileExists( filename, "GAME" ) ) { Q_SetExtension( filename, ".vmt", sizeof( filename ) ); if ( g_pFullFileSystem->FileExists( filename, "GAME" ) ) { Q_strncpy( filename, pSprayKey->GetString(), sizeof(filename) ); Q_StripExtension( filename, m_nSpraypaint[ m_nNumSpraypaintLogos ].m_szFilename, sizeof(m_nSpraypaint[ m_nNumSpraypaintLogos ].m_szFilename) ); m_nSpraypaint[ m_nNumSpraypaintLogos ].m_bCustom = false; szCurrentButton[ iCommandNumberPosition ] = m_nNumSpraypaintLogos + '0'; SetFlyoutButtonText( szCurrentButton, pFlyout, pSprayKey->GetName() ); // check to see if this is the one we have set Q_snprintf( filename, sizeof(filename), MULTIPLAYER_SPRAY_FOLDER "%s", pSprayKey->GetString() ); if (!Q_stricmp(filename, logofile)) { initialItem = m_nNumSpraypaintLogos; } ++m_nNumSpraypaintLogos; } } pSprayKey = pSprayKey->GetNextKey(); } // Look for custom sprays char directory[ MAX_PATH ]; Q_strncpy( directory, MULTIPLAYER_SPRAY_FOLDER MULTIPLAYER_CUSTOM_SPRAY_FOLDER "*.vtf", sizeof( directory ) ); FileFindHandle_t fh; const char *fn = g_pFullFileSystem->FindFirst( directory, &fh ); if ( fn ) { char filename[ MAX_PATH ]; Q_snprintf( filename, sizeof(filename), MULTIPLAYER_SPRAY_FOLDER MULTIPLAYER_CUSTOM_SPRAY_FOLDER "%s", fn ); Q_SetExtension( filename, ".vmt", sizeof( filename ) ); if ( g_pFullFileSystem->FileExists( filename, "GAME" ) ) { // Found at least one custom logo szCurrentButton[ iCommandNumberPosition ] = m_nNumSpraypaintLogos + '0'; SetFlyoutButtonText( szCurrentButton, pFlyout, "#L4D360UI_Multiplayer_Cutsom_Logo" ); m_nSpraypaint[ m_nNumSpraypaintLogos ].m_szFilename[ 0 ] = '\0'; m_nSpraypaint[ m_nNumSpraypaintLogos ].m_bCustom = true; ++m_nNumSpraypaintLogos; Q_strncpy( filename, logofile, sizeof(filename) ); Q_StripFilename( filename ); Q_strncat( filename, "/", sizeof(filename) ); // If their current spray is one of the custom ones if ( Q_stricmp( filename, MULTIPLAYER_SPRAY_FOLDER MULTIPLAYER_CUSTOM_SPRAY_FOLDER ) == 0 ) { // Check if the file exists if ( g_pFullFileSystem->FileExists( logofile, "GAME" ) ) { // Check if it has a matching VMT Q_strncpy( filename, logofile, sizeof( filename ) ); Q_SetExtension( filename, ".vmt", sizeof( filename ) ); if ( g_pFullFileSystem->FileExists( filename, "GAME" ) ) { // Set this custom logo as our initial item const char *pchShortName = Q_UnqualifiedFileName( logofile ); initialItem = m_nNumSpraypaintLogos - 1; Q_StripExtension( pchShortName, m_nSpraypaint[ initialItem ].m_szFilename, sizeof(m_nSpraypaint[ initialItem ].m_szFilename) ); } } } } } g_pFullFileSystem->FindClose( fh ); // Change the height to fit the active items pFlyout->SetBGTall( m_nNumSpraypaintLogos * 20 + 5 ); // Disable the remaining possible choices for ( int i = m_nNumSpraypaintLogos; i < MAX_SPRAYPAINT_LOGOS; ++i ) { szCurrentButton[ iCommandNumberPosition ] = i + '0'; Button *pButton = pFlyout->FindChildButtonByCommand( szCurrentButton ); if ( pButton ) { pButton->SetVisible( false ); } } szCurrentButton[ iCommandNumberPosition ] = initialItem + '0'; m_drpSpraypaint->SetCurrentSelection( szCurrentButton ); }