//============================================================================= void InGameChapterSelect::ApplySchemeSettings(vgui::IScheme *pScheme) { BaseClass::ApplySchemeSettings(pScheme); SetPaintBackgroundEnabled( true ); // Determine current game settings KeyValues *pGameSettings = g_pMatchFramework->GetMatchNetworkMsgController()->GetActiveServerGameDetails( NULL ); KeyValues::AutoDelete autodelete_pGameSettings( pGameSettings ); char const *szGameMode = pGameSettings->GetString( "game/mode", "campaign" ); if ( !GameModeIsSingleChapter( szGameMode ) ) pGameSettings->SetInt( "game/chapter", 1 ); // Get mission and campaign info KeyValues *pInfoMission = NULL; KeyValues *pInfoChapter = g_pMatchExtSwarm->GetMapInfo( pGameSettings, &pInfoMission ); // Check if this is a custom mission? if ( pInfoMission && !pInfoMission->GetBool( "builtin" ) ) pInfoChapter = pInfoMission = NULL; // trigger to use another builtin mission if ( !pInfoMission || !pInfoChapter ) { KeyValues *pAllMissions = g_pMatchExtSwarm->GetAllMissions(); for ( pInfoMission = pAllMissions ? pAllMissions->GetFirstTrueSubKey() : NULL; pInfoMission; pInfoMission = pInfoMission->GetNextTrueSubKey() ) { if ( !pInfoMission->GetBool( "builtin" ) ) continue; pInfoChapter = pInfoMission->FindKey( CFmtStr( "modes/%s/1", szGameMode ) ); if ( pInfoChapter ) break; } } Assert( pInfoMission && pInfoChapter ); // set the dropdowns DropDownMenu *pMissionDropDown = dynamic_cast< DropDownMenu* >( FindChildByName( "DrpMission" ) ); DropDownMenu *pChapterDropDown = dynamic_cast< DropDownMenu* >( FindChildByName( "DrpChapter" ) ); if( pMissionDropDown && pChapterDropDown ) //missions change what the available campaigns are, we should listen on that flyout as well { pMissionDropDown->SetFlyout( CFmtStr( "FlmMission%s", szGameMode ) ); if ( pInfoMission && pInfoChapter ) { pMissionDropDown->SetCurrentSelection( CFmtStr( "cmd_campaign_%s", pInfoMission->GetString( "name" ) ) ); Q_strncpy( m_chCampaign, pInfoMission->GetString( "name" ), ARRAYSIZE( m_chCampaign ) ); // Set this after setting the mission dropdown, as that will default the chapter to the first in the campaign pChapterDropDown->SetCurrentSelection( CFmtStr( "#L4D360UI_Chapter_%d", pInfoChapter->GetInt( "chapter" ) ) ); m_nChapter = pInfoChapter->GetInt( "chapter" ); } FlyoutMenu *flyout = pMissionDropDown->GetCurrentFlyout(); if( flyout ) { flyout->CloseMenu( NULL ); } flyout = pChapterDropDown->GetCurrentFlyout(); if( flyout ) { flyout->CloseMenu( NULL ); } if ( m_ActiveControl ) { m_ActiveControl->NavigateFrom( ); } pMissionDropDown->NavigateTo(); m_ActiveControl = pMissionDropDown; // Chapters are directly selectable only in some game modes pChapterDropDown->SetEnabled( GameModeIsSingleChapter( szGameMode ) ); } SetPaintBackgroundEnabled( true ); SetupAsDialogStyle(); }
void GameSettings::UpdateMissionImage() { vgui::ImagePanel* imgLevelImage = dynamic_cast< vgui::ImagePanel* >( FindChildByName( "ImgLevelImage" ) ); if( !imgLevelImage ) return; vgui::Label *pMissionLabel = dynamic_cast< vgui::Label* >( FindChildByName( "MissionLabel" ) ); DropDownMenu *menu = dynamic_cast< DropDownMenu* >( FindChildByName( "DrpSelectMission", true ) ); #if 0 IASW_Mission_Chooser_Source *pSource = missionchooser ? missionchooser->LocalMissionSource() : NULL; if ( !pSource || !m_pSettings || !menu ) return; const char *szGameType = m_pSettings->GetString( "game/mode", "campaign" ); if ( !Q_stricmp( szGameType, "campaign" ) ) { const char *szCampaign = m_pSettings->GetString( "game/campaign", NULL ); if ( szCampaign ) { KeyValues *pCampaignKeys = pSource->GetCampaignDetails( szCampaign ); if ( pCampaignKeys ) { //imgLevelImage->SetImage( pCampaignKeys->GetString( "ChooseCampaignTexture" ) ); pMissionLabel->SetText( pCampaignKeys->GetString( "CampaignName" ) ); menu->SetCurrentSelection( pCampaignKeys->GetString( "CampaignName" ) ); } } if ( m_drpStartingMission ) { m_drpStartingMission->SetVisible( true ); const char *szMission = m_pSettings->GetString( "game/mission", NULL ); if ( szMission ) { KeyValues *pMissionKeys = pSource->GetMissionDetails( szMission ); if ( pMissionKeys ) { m_drpStartingMission->SetCurrentSelection( pMissionKeys->GetString( "missiontitle" ) ); imgLevelImage->SetImage( pMissionKeys->GetString( "image" ) ); } } } } else if ( !Q_stricmp( szGameType, "single_mission" ) ) { const char *szMission = m_pSettings->GetString( "game/mission", NULL ); if ( szMission ) { KeyValues *pMissionKeys = pSource->GetMissionDetails( szMission ); if ( pMissionKeys ) { // TODO: Handle missions without an image imgLevelImage->SetImage( pMissionKeys->GetString( "image" ) ); pMissionLabel->SetText( pMissionKeys->GetString( "missiontitle" ) ); menu->SetCurrentSelection( pMissionKeys->GetString( "missiontitle" ) ); } } if ( m_drpStartingMission ) { m_drpStartingMission->SetVisible( false ); } } #else const char *szGameType = m_pSettings->GetString( "game/mode", "sdk" ); if ( !Q_stricmp( szGameType, "sdk" ) ) { const char *szMission = m_pSettings->GetString( "game/mission", NULL ); if ( szMission ) { pMissionLabel->SetText( szMission ); menu->SetCurrentSelection( szMission ); } if ( m_drpStartingMission ) { m_drpStartingMission->SetVisible( false ); } } else if( !Q_stricmp( szGameType, "swarmkeeper" ) ) { const char *szMission = m_pSettings->GetString( "game/mission", NULL ); if ( szMission ) { char path[256]; Q_snprintf( path, 256, "maps/%s.res", szMission ); KeyValues *pData = new KeyValues("Data"); if( pData && pData->LoadFromFile( filesystem, path ) ) { imgLevelImage->SetImage( pData->GetString( "image", "swarm/MissionPics/UnknownMissionPic" ) ); pMissionLabel->SetText( pData->GetString( "title" ) ); menu->SetCurrentSelection( pData->GetString( "title" ) ); } else { imgLevelImage->SetImage( pData->GetString( "image", "swarm/MissionPics/UnknownMissionPic" ) ); pMissionLabel->SetText( szMission ); menu->SetCurrentSelection( szMission ); } if( pData ) pData->deleteThis(); } if ( m_drpStartingMission ) { m_drpStartingMission->SetVisible( false ); } } #endif // 0 }
void GameSettings::UpdateMissionImage() { vgui::ImagePanel* imgLevelImage = dynamic_cast< vgui::ImagePanel* >( FindChildByName( "ImgLevelImage" ) ); if( !imgLevelImage ) return; vgui::Label *pMissionLabel = dynamic_cast< vgui::Label* >( FindChildByName( "MissionLabel" ) ); DropDownMenu *menu = dynamic_cast< DropDownMenu* >( FindChildByName( "DrpSelectMission", true ) ); IASW_Mission_Chooser_Source *pSource = missionchooser ? missionchooser->LocalMissionSource() : NULL; if ( !pSource || !m_pSettings || !menu ) return; const char *szGameType = m_pSettings->GetString( "game/mode", "campaign" ); if ( !Q_stricmp( szGameType, "campaign" ) ) { const char *szCampaign = m_pSettings->GetString( "game/campaign", NULL ); if ( szCampaign ) { KeyValues *pCampaignKeys = pSource->GetCampaignDetails( szCampaign ); if ( pCampaignKeys ) { //imgLevelImage->SetImage( pCampaignKeys->GetString( "ChooseCampaignTexture" ) ); pMissionLabel->SetText( pCampaignKeys->GetString( "CampaignName" ) ); menu->SetCurrentSelection( pCampaignKeys->GetString( "CampaignName" ) ); } } if ( m_drpStartingMission ) { m_drpStartingMission->SetVisible( true ); const char *szMission = m_pSettings->GetString( "game/mission", NULL ); if ( szMission ) { KeyValues *pMissionKeys = pSource->GetMissionDetails( szMission ); if ( pMissionKeys ) { m_drpStartingMission->SetCurrentSelection( pMissionKeys->GetString( "missiontitle" ) ); imgLevelImage->SetImage( pMissionKeys->GetString( "image" ) ); } } } } else if ( !Q_stricmp( szGameType, "single_mission" ) ) { const char *szMission = m_pSettings->GetString( "game/mission", NULL ); if ( szMission ) { KeyValues *pMissionKeys = pSource->GetMissionDetails( szMission ); if ( pMissionKeys ) { // TODO: Handle missions without an image imgLevelImage->SetImage( pMissionKeys->GetString( "image" ) ); pMissionLabel->SetText( pMissionKeys->GetString( "missiontitle" ) ); menu->SetCurrentSelection( pMissionKeys->GetString( "missiontitle" ) ); } } if ( m_drpStartingMission ) { m_drpStartingMission->SetVisible( false ); } } }