本文整理汇总了C++中KeyValues::GetBool方法的典型用法代码示例。如果您正苦于以下问题:C++ KeyValues::GetBool方法的具体用法?C++ KeyValues::GetBool怎么用?C++ KeyValues::GetBool使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KeyValues
的用法示例。
在下文中一共展示了KeyValues::GetBool方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadFilterSettings
//-----------------------------------------------------------------------------
// Purpose: loads filter settings (from disk) from the keyvalues
//-----------------------------------------------------------------------------
void CBaseMapsPage::LoadFilterSettings()
{
KeyValues *filter = MapSelectorDialog().GetFilterSaveData(GetName());
//Game-mode selection
m_iGameModeFilter = filter->GetInt("gamemode", 0);
m_pGameModeFilter->ActivateItemByRow(m_iGameModeFilter);
//"Map"
Q_strncpy(m_szMapFilter, filter->GetString("map"), sizeof(m_szMapFilter));
m_pMapFilter->SetText(m_szMapFilter);
//Map layout
m_iMapLayoutFilter = filter->GetInt("maplayout", 0);
m_pMapLayoutFilter->ActivateItemByRow(m_iMapLayoutFilter);
//HideCompleted maps
m_bFilterHideCompleted = filter->GetBool("HideCompleted", false);
m_pHideCompletedFilterCheck->SetSelected(m_bFilterHideCompleted);
//Difficulty
m_iDifficultyFilter = filter->GetInt("difficulty");
if (m_iDifficultyFilter)
{
char buf[32];
Q_snprintf(buf, sizeof(buf), "< %d", m_iDifficultyFilter);
m_pDifficultyFilter->SetText(buf);
}
// apply to the controls
OnLoadFilter(filter);
UpdateFilterSettings();
ApplyGameFilters();
}
示例2: CreatePanelContents
void CRuleInstanceNodePanel::CreatePanelContents()
{
KeyValues *pNodeKV = GetData();
// If this rule instance is wrapped in a dummy key values node, move down a level.
if ( HasDummyContainerNode() )
{
pNodeKV = pNodeKV->GetFirstSubKey();
}
m_bDisabled = pNodeKV->GetBool( "disabled", false );
m_pChangeRuleButton = new Button( this, "ChangeRule", "Change", this, "ChangeRule" );
AddHeadingElement( m_pChangeRuleButton, 0.0f );
m_pDisableRuleButton = new Button( this, "DisableRule", m_bDisabled ? "Enable" : "Disable", this, "DisableRule" );
AddHeadingElement( m_pDisableRuleButton, 0.0f );
Assert( pNodeKV != NULL );
const char *pRuleName = pNodeKV->GetString( "name", NULL );
if ( pRuleName == NULL )
{
Q_snprintf( m_NodeLabel, m_nNameLength, "No Rule specified" );
}
else
{
const CTilegenMissionPreprocessor *pPreprocessor = GetEditor()->GetPreprocessor();
const CTilegenRule *pRule = pPreprocessor->FindRule( pRuleName );
if ( pRule != NULL )
{
GetTooltip()->SetText( pRule->GetDescription() );
if ( !m_bDisabled )
{
for ( int i = 0; i < pRule->GetParameterCount(); ++ i )
{
// @TODO: need to error if a non-optional parameter is missing
const char *pParameterName = pRule->GetParameterName( i );
KeyValues *pInstanceParameterKV = pNodeKV->FindKey( pParameterName );
CRuleInstanceParameterPanel *pPanel = new CRuleInstanceParameterPanel( this, "text_entry", pRule, i );
pPanel->SetEditor( GetEditor() );
pPanel->SetData( pInstanceParameterKV );
AddChild( pPanel, 0 );
}
}
Q_snprintf( m_NodeLabel, m_nNameLength, "%s", pRule->GetFriendlyName() );
}
else
{
Q_snprintf( m_NodeLabel, m_nNameLength, "Rule '%s' not found!", pRuleName );
}
}
}
示例3: LoadFromFile
bool CMapzoneData::LoadFromFile(const char *szMapName)
{
bool toReturn = false;
char zoneFilePath[MAX_PATH];
Q_strcpy(zoneFilePath, c_mapPath);
Q_strcat(zoneFilePath, szMapName, MAX_PATH);
Q_strncat(zoneFilePath, c_zoneFileEnding, MAX_PATH);
DevLog("Looking for zone file: %s \n", zoneFilePath);
KeyValues* zoneKV = new KeyValues(szMapName);
if (zoneKV->LoadFromFile(filesystem, zoneFilePath, "MOD"))
{
// Go through checkpoints
for (KeyValues *cp = zoneKV->GetFirstSubKey(); cp; cp = cp->GetNextKey())
{
// Load position information (will default to 0 if the keys don't exist)
Vector* pos = new Vector(cp->GetFloat("xPos"), cp->GetFloat("yPos"), cp->GetFloat("zPos"));
QAngle* rot = new QAngle(cp->GetFloat("xRot"), cp->GetFloat("yRot"), cp->GetFloat("zRot"));
Vector* scaleMins = new Vector(cp->GetFloat("xScaleMins"), cp->GetFloat("yScaleMins"), cp->GetFloat("zScaleMins"));
Vector* scaleMaxs = new Vector(cp->GetFloat("xScaleMaxs"), cp->GetFloat("yScaleMaxs"), cp->GetFloat("zScaleMaxs"));
// Do specific things for different types of checkpoints
// 0 = start, 1 = checkpoint, 2 = end, 3 = Onehop, 4 = OnehopReset, 5 = Checkpoint_teleport, 6 = Multihop, 7 = stage
int zoneType = -1;
int index = -1;
bool shouldStop = false;
bool shouldTilt = true;
float holdTime = 1.0f;
//int destinationIndex = -1;
bool limitingspeed = true;
float maxleavespeed = 290.0f;
const char * linkedtrigger = NULL;
if (Q_strcmp(cp->GetName(), "start") == 0)
{
zoneType = MOMZONETYPE_START;
limitingspeed = cp->GetBool("limitingspeed");
maxleavespeed = cp->GetFloat("leavespeed");
}
else if (Q_strcmp(cp->GetName(), "checkpoint") == 0)
{
zoneType = MOMZONETYPE_CP;
index = cp->GetInt("number", -1);
}
else if (Q_strcmp(cp->GetName(), "end") == 0)
{
zoneType = MOMZONETYPE_STOP;
}
else if (Q_strcmp(cp->GetName(), "onehop") == 0)
{
zoneType = MOMZONETYPE_ONEHOP;
shouldStop = cp->GetBool("stop", false);
shouldTilt = cp->GetBool("resetang", true);
holdTime = cp->GetFloat("hold", 1);
//destinationIndex = cp->GetInt("destination", 1);
linkedtrigger = cp->GetString("destinationname", NULL);
}
else if (Q_strcmp(cp->GetName(), "resetonehop") == 0)
{
zoneType = MOMZONETYPE_RESETONEHOP;
}
else if (Q_strcmp(cp->GetName(), "checkpoint_teleport") == 0)
{
zoneType = MOMZONETYPE_CPTELE;
//destinationIndex = cp->GetInt("destination", -1);
shouldStop = cp->GetBool("stop", false);
shouldTilt = cp->GetBool("resetang", true);
linkedtrigger = cp->GetString("destinationname", NULL);
}
else if (Q_strcmp(cp->GetName(), "multihop") == 0)
{
zoneType = MOMZONETYPE_MULTIHOP;
shouldStop = cp->GetBool("stop", false);
shouldTilt = cp->GetBool("resetang", true);
holdTime = cp->GetFloat("hold", 1);
//destinationIndex = cp->GetInt("destination", 1);
linkedtrigger = cp->GetString("destinationname", NULL);
}
else if (Q_strcmp(cp->GetName(), "stage") == 0)
{
zoneType = MOMZONETYPE_STAGE;
index = cp->GetInt("number", 0);
}
else
{
Warning("Error while reading zone file: Unknown mapzone type %s!\n", cp->GetName());
continue;
}
// Add element
m_zones.AddToTail(new CMapzone(zoneType, pos, rot, scaleMins, scaleMaxs, index, shouldStop, shouldTilt,
holdTime, limitingspeed, maxleavespeed, MAKE_STRING(linkedtrigger)));
}
DevLog("Successfully loaded map zone file %s!\n", zoneFilePath);
toReturn = true;
}
zoneKV->deleteThis();
return toReturn;
}
示例4: ApplySchemeSettings
//=============================================================================
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();
}
示例5: LoadGameFromFile
// reads in current save data from a keyvalues file
bool CASW_Campaign_Save::LoadGameFromFile(const char *szFileName)
{
// make sure the path and extension are correct
char szFullFileName[256];
char tempbuffer[256];
Q_snprintf(tempbuffer, sizeof(tempbuffer), "%s", szFileName);
Q_SetExtension( tempbuffer, ".campaignsave", sizeof(tempbuffer) );
const char *pszNoPathName = Q_UnqualifiedFileName(tempbuffer);
Q_snprintf(szFullFileName, sizeof(szFullFileName), "save/%s", pszNoPathName);
KeyValues *pSaveKeyValues = new KeyValues( szFileName );
if (pSaveKeyValues->LoadFromFile(filesystem, szFullFileName))
{
m_CurrentSaveFileName = AllocPooledString(szFullFileName);
m_iVersion = pSaveKeyValues->GetInt("Version");
m_iLowestSkillLevelPlayed = pSaveKeyValues->GetInt("SkillLevel");
Q_strncpy( m_CampaignName.GetForModify(), pSaveKeyValues->GetString("CampaignName"), 255 );
m_iCurrentPosition = pSaveKeyValues->GetInt("CurrentPosition");
m_iNumMissionsComplete = pSaveKeyValues->GetInt("NumMissionsComplete");
m_iInitialNumMissionsComplete = pSaveKeyValues->GetInt("InitialNumMissionsComplete");
m_bMultiplayerGame = pSaveKeyValues->GetInt("Multiplayer") != 0;
Q_strncpy( m_DateTime.GetForModify(), pSaveKeyValues->GetString("DateTime"), 255 );
m_iNumDeaths = pSaveKeyValues->GetInt("NumDeaths");
m_bFixedSkillPoints = !asw_custom_skill_points.GetBool(); //pSaveKeyValues->GetBool( "FixedSkillPoints", true );
m_iNumPlayers = pSaveKeyValues->GetInt("NumPlayers");
m_PlayerNames.Purge();
m_PlayerIDs.Purge();
// go through each sub section, adding the relevant details
KeyValues *pkvSubSection = pSaveKeyValues->GetFirstSubKey();
while ( pkvSubSection )
{
// mission details
if (Q_stricmp(pkvSubSection->GetName(), "MISSION")==0)
{
int MissionID = pkvSubSection->GetInt("MissionID");
if (MissionID >=0 && MissionID < ASW_MAX_MISSIONS_PER_CAMPAIGN)
{
m_MissionComplete.Set(MissionID, pkvSubSection->GetInt("MissionComplete"));
m_NumRetries.Set(MissionID, pkvSubSection->GetInt("NumRetries"));
}
}
// marine details
if (Q_stricmp(pkvSubSection->GetName(), "MARINE")==0)
{
int MarineID = pkvSubSection->GetInt("MarineID");
if (MarineID >=0 && MarineID < ASW_NUM_MARINE_PROFILES)
{
m_iMarineSkill[MarineID][ASW_SKILL_SLOT_0] = pkvSubSection->GetInt("SkillSlot0");
m_iMarineSkill[MarineID][ASW_SKILL_SLOT_1] = pkvSubSection->GetInt("SkillSlot1");
m_iMarineSkill[MarineID][ASW_SKILL_SLOT_2] = pkvSubSection->GetInt("SkillSlot2");
m_iMarineSkill[MarineID][ASW_SKILL_SLOT_3] = pkvSubSection->GetInt("SkillSlot3");
m_iMarineSkill[MarineID][ASW_SKILL_SLOT_4] = pkvSubSection->GetInt("SkillSlot4");
m_iMarineSkill[MarineID][ASW_SKILL_SLOT_SPARE] = pkvSubSection->GetInt("SkillSlotSpare");
m_iPreviousMarineSkill[MarineID][ASW_SKILL_SLOT_0] = pkvSubSection->GetInt("UndoSkillSlot0");
m_iPreviousMarineSkill[MarineID][ASW_SKILL_SLOT_1] = pkvSubSection->GetInt("UndoSkillSlot1");
m_iPreviousMarineSkill[MarineID][ASW_SKILL_SLOT_2] = pkvSubSection->GetInt("UndoSkillSlot2");
m_iPreviousMarineSkill[MarineID][ASW_SKILL_SLOT_3] = pkvSubSection->GetInt("UndoSkillSlot3");
m_iPreviousMarineSkill[MarineID][ASW_SKILL_SLOT_4] = pkvSubSection->GetInt("UndoSkillSlot4");
m_iPreviousMarineSkill[MarineID][ASW_SKILL_SLOT_SPARE] = pkvSubSection->GetInt("UndoSkillSlotSpare");
m_iParasitesKilled[MarineID] = pkvSubSection->GetInt("ParasitesKilled");
m_MissionsCompleteNames.Set(MarineID, AllocPooledString(pkvSubSection->GetString("MissionsCompleted")));
m_Medals.Set(MarineID, AllocPooledString(pkvSubSection->GetString("Medals")));
m_bMarineWounded.Set(MarineID, (pkvSubSection->GetInt("Wounded") == 1));
m_bMarineDead.Set(MarineID, (pkvSubSection->GetInt("Dead") == 1));
//Ch1ckensCoop: Hack to give marines skill points for the first mission in a campaign. I'm too lazy to edit missionchooser.
if (m_iCurrentPosition == 1)
{
m_iMarineSkill[MarineID][ASW_SKILL_SLOT_SPARE] = sk_asw_points_per_mission.GetInt();
m_iPreviousMarineSkill[MarineID][ASW_SKILL_SLOT_SPARE] = sk_asw_points_per_mission.GetInt();
}
}
}
// player name
if (Q_stricmp(pkvSubSection->GetName(), "PLAYER")==0)
{
string_t stringName = AllocPooledString(pkvSubSection->GetString("PlayerName"));
m_PlayerNames.AddToTail(stringName);
}
// player ID
if (Q_stricmp(pkvSubSection->GetName(), "DATA")==0)
{
string_t stringID = AllocPooledString(pkvSubSection->GetString("DataBlock"));
m_PlayerIDs.AddToTail(stringID);
}
// last commanders
if (Q_stricmp(pkvSubSection->GetName(), "COMM")==0)
{
for (int i=0;i<ASW_NUM_MARINE_PROFILES;i++)
{
//.........这里部分代码省略.........
示例6: LoadObjectInfos
void LoadObjectInfos( IBaseFileSystem *pFileSystem )
{
const char *pFilename = "scripts/objects.txt";
// Make sure this stuff hasn't already been loaded.
Assert( !AreObjectInfosLoaded() );
KeyValues *pValues = new KeyValues( "Object descriptions" );
if ( !pValues->LoadFromFile( pFileSystem, pFilename, "GAME" ) )
{
Error( "Can't open %s for object info.", pFilename );
pValues->deleteThis();
return;
}
// Now read each class's information in.
for ( int iObj=0; iObj < ARRAYSIZE( g_ObjectInfos ); iObj++ )
{
CObjectInfo *pInfo = &g_ObjectInfos[iObj];
KeyValues *pSub = pValues->FindKey( pInfo->m_pObjectName );
if ( !pSub )
{
Error( "Missing section '%s' from %s.", pInfo->m_pObjectName, pFilename );
pValues->deleteThis();
return;
}
// Read all the info in.
if ( (pInfo->m_flBuildTime = pSub->GetFloat( "BuildTime", -999 )) == -999 ||
(pInfo->m_nMaxObjects = pSub->GetInt( "MaxObjects", -999 )) == -999 ||
(pInfo->m_Cost = pSub->GetInt( "Cost", -999 )) == -999 ||
(pInfo->m_CostMultiplierPerInstance = pSub->GetFloat( "CostMultiplier", -999 )) == -999 ||
(pInfo->m_UpgradeCost = pSub->GetInt( "UpgradeCost", -999 )) == -999 ||
(pInfo->m_flUpgradeDuration = pSub->GetFloat( "UpgradeDuration", -999)) == -999 ||
(pInfo->m_MaxUpgradeLevel = pSub->GetInt( "MaxUpgradeLevel", -999 )) == -999 ||
(pInfo->m_SelectionSlot = pSub->GetInt( "SelectionSlot", -999 )) == -999 ||
(pInfo->m_BuildCount = pSub->GetInt( "BuildCount", -999 )) == -999 ||
(pInfo->m_SelectionPosition = pSub->GetInt( "SelectionPosition", -999 )) == -999 )
{
Error( "Missing data for object '%s' in %s.", pInfo->m_pObjectName, pFilename );
pValues->deleteThis();
return;
}
pInfo->m_pClassName = ReadAndAllocStringValue( pSub, "ClassName", pFilename );
pInfo->m_pStatusName = ReadAndAllocStringValue( pSub, "StatusName", pFilename );
pInfo->m_pBuilderWeaponName = ReadAndAllocStringValue( pSub, "BuilderWeaponName", pFilename );
pInfo->m_pBuilderPlacementString = ReadAndAllocStringValue( pSub, "BuilderPlacementString", pFilename );
pInfo->m_bSolidToPlayerMovement = pSub->GetInt( "SolidToPlayerMovement", 0 ) ? true : false;
pInfo->m_pIconActive = ReadAndAllocStringValue( pSub, "IconActive", pFilename );
pInfo->m_pIconInactive = ReadAndAllocStringValue( pSub, "IconInactive", pFilename );
pInfo->m_pIconMenu = ReadAndAllocStringValue( pSub, "IconMenu", pFilename );
pInfo->m_bUseItemInfo = pSub->GetInt( "UseItemInfo", 0 ) ? true : false;
pInfo->m_pViewModel = ReadAndAllocStringValue( pSub, "Viewmodel", pFilename );
pInfo->m_pPlayerModel = ReadAndAllocStringValue( pSub, "Playermodel", pFilename );
pInfo->m_iDisplayPriority = pSub->GetInt( "DisplayPriority", 0 );
pInfo->m_pHudStatusIcon = ReadAndAllocStringValue( pSub, "HudStatusIcon", pFilename );
pInfo->m_bVisibleInWeaponSelection = ( pSub->GetInt( "VisibleInWeaponSelection", 1 ) > 0 );
pInfo->m_pExplodeSound = ReadAndAllocStringValue( pSub, "ExplodeSound", pFilename );
pInfo->m_pUpgradeSound = ReadAndAllocStringValue( pSub, "UpgradeSound", pFilename );
pInfo->m_pExplosionParticleEffect = ReadAndAllocStringValue( pSub, "ExplodeEffect", pFilename );
pInfo->m_bAutoSwitchTo = ( pSub->GetInt( "autoswitchto", 0 ) > 0 );
pInfo->m_iMetalToDropInGibs = pSub->GetInt( "MetalToDropInGibs", 0 );
pInfo->m_bRequiresOwnBuilder = pSub->GetBool( "RequiresOwnBuilder", 0 );
// PistonMiner: Added Object Mode key
KeyValues *pAltModes = pSub->FindKey("AltModes");
if (pAltModes)
{
for (int i = 0; i < 4; ++i) // load at most 4 object modes
{
char altModeBuffer[256]; // Max size of 0x100
V_snprintf(altModeBuffer, ARRAYSIZE(altModeBuffer), "AltMode%d", i);
KeyValues *pCurAltMode = pAltModes->FindKey(altModeBuffer);
if (!pCurAltMode)
break;
// Save logic here
pInfo->m_AltModes.AddToTail(ReadAndAllocStringValue( pCurAltMode, "StatusName", pFilename ));
pInfo->m_AltModes.AddToTail(ReadAndAllocStringValue( pCurAltMode, "ModeName", pFilename ));
pInfo->m_AltModes.AddToTail(ReadAndAllocStringValue( pCurAltMode, "IconMenu", pFilename ));
}
}
}
pValues->deleteThis();
}
示例7: ApplySettings
void GameModes::ApplySettings( KeyValues *pInResourceData )
{
BaseClass::ApplySettings( pInResourceData );
vgui::HScheme hScheme = vgui::scheme()->GetScheme( "SwarmScheme" );
vgui::IScheme *pScheme = vgui::scheme()->GetIScheme( hScheme );
if ( !pScheme )
return;
const char *pImageName = pInResourceData->GetString( "borderimage", "" );
m_nBorderImageId = vgui::surface()->DrawGetTextureId( pImageName );
if ( m_nBorderImageId == -1 )
{
m_nBorderImageId = vgui::surface()->CreateNewTextureID();
vgui::surface()->DrawSetTextureFile( m_nBorderImageId, pImageName, true, false );
}
pImageName = pInResourceData->GetString( "leftarrow", "" );
m_nLeftArrowId = vgui::surface()->DrawGetTextureId( pImageName );
if ( m_nLeftArrowId == -1 )
{
m_nLeftArrowId = vgui::surface()->CreateNewTextureID();
vgui::surface()->DrawSetTextureFile( m_nLeftArrowId, pImageName, true, false );
}
pImageName = pInResourceData->GetString( "rightarrow", "" );
m_nRightArrowId = vgui::surface()->DrawGetTextureId( pImageName );
if ( m_nRightArrowId == -1 )
{
m_nRightArrowId = vgui::surface()->CreateNewTextureID();
vgui::surface()->DrawSetTextureFile( m_nRightArrowId, pImageName, true, false );
}
m_nPicOffsetX = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "picoffsetx", 0 ) );
m_nPicWidth = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "picwidth", 0 ) );
m_nPicHeight = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "picheight", 0 ) );
m_nMenuTitleX = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "menutitlex", 0 ) );
m_nMenuTitleY = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "menutitley", 0 ) );
m_nMenuTitleWide = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "menutitlewide", 0 ) );
m_nMenuTitleTall = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "menutitletall", 0 ) );
m_nSubPics = pInResourceData->GetInt( "subpics", 0 );
m_nSubPicGap = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "subpicgap", 0 ) );
m_nSubPicOffsetX = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "subpicoffsetx", 0 ) );
m_nSubPicOffsetY = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "subpicoffsety", 0 ) );
m_nSubPicWidth = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "subpicwidth", 0 ) );
m_nSubPicHeight = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "subpicheight", 0 ) );
m_bHideLabels = !!vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "hidelabels", 0 ) );
m_nArrowWidth = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "arrowwidth", 0 ) );
m_nArrowHeight = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "arrowheight", 0 ) );
m_nArrowOffsetY = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "arrowoffsety", 0 ) );
m_nRightArrowOffsetX = vgui::scheme()->GetProportionalScaledValue( pInResourceData->GetInt( "rightarrowoffsetx", 0 ) );
m_hNameFont = pScheme->GetFont( pInResourceData->GetString( "subpicnamefont", "" ), true );
m_nNameFontHeight = vgui::surface()->GetFontTall( m_hNameFont );
const char *pNavUp = pInResourceData->GetString( "navUp", "" );
const char *pNavDown = pInResourceData->GetString( "navDown", "" );
int wideAtOpen = pInResourceData->GetInt( "wideatopen", 0 );
// need to reset due to video mode change, alt+tab, etc
m_GameModeInfos.Purge();
// find all modes
for ( KeyValues *pModeKey = pInResourceData->GetFirstTrueSubKey(); pModeKey; pModeKey = pModeKey->GetNextTrueSubKey() )
{
pImageName = pModeKey->GetString( "image", "" );
int nImageId = vgui::surface()->DrawGetTextureId( pImageName );
if ( nImageId == -1 )
{
nImageId = vgui::surface()->CreateNewTextureID();
vgui::surface()->DrawSetTextureFile( nImageId, pImageName, true, false );
}
int iIndex = m_GameModeInfos.AddToTail();
m_GameModeInfos[iIndex].m_NameId = pModeKey->GetString( "id", "" );
m_GameModeInfos[iIndex].m_NameText = pModeKey->GetString( "name", "" );
m_GameModeInfos[iIndex].m_CommandText = pModeKey->GetString( "command", "" );
m_GameModeInfos[iIndex].m_TitleText = pModeKey->GetString( "menutitle", "" );
m_GameModeInfos[iIndex].m_HintText = pModeKey->GetString( "menuhint", "" );
m_GameModeInfos[iIndex].m_HintTextDisabled = pModeKey->GetString( "menuhintdisabled", "" );
m_GameModeInfos[iIndex].m_nImageId = nImageId;
m_GameModeInfos[iIndex].m_bEnabled = pModeKey->GetBool( "enabled", true );
m_GameModeInfos[iIndex].m_pHybridButton = new BaseModHybridButton(
this,
m_GameModeInfos[iIndex].m_NameId,
m_GameModeInfos[iIndex].m_TitleText,
this->GetParent(),
m_GameModeInfos[iIndex].m_CommandText );
KeyValues *pKV = new KeyValues( "BtnGameMode" );
int buttonX = vgui::scheme()->GetProportionalNormalizedValue( m_nMenuTitleX );
int buttonY = vgui::scheme()->GetProportionalNormalizedValue( m_nPicHeight + m_nMenuTitleY );
int buttonW = vgui::scheme()->GetProportionalNormalizedValue( m_nMenuTitleWide );
int buttonH = vgui::scheme()->GetProportionalNormalizedValue( m_nMenuTitleTall );
//.........这里部分代码省略.........