本文整理汇总了C++中sstring_t类的典型用法代码示例。如果您正苦于以下问题:C++ sstring_t类的具体用法?C++ sstring_t怎么用?C++ sstring_t使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了sstring_t类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: Music_BuildFileName
// the 2nd param here is pretty kludgy (sigh), and only used for testing for the "boss" type.
// Unfortunately two of the places that calls this doesn't have much other access to the state other than
// a string, not an enum, so for those cases they only pass in BOSS or EXPLORE, so don't rely on it totally.
//
static LPCSTR Music_BuildFileName(LPCSTR psFileNameBase, MusicState_e eMusicState )
{
static sstring_t sFileName;
//HACK!
if (eMusicState == eBGRNDTRACK_DEATH)
{
return "music/death_music.mp3";
}
LPCSTR psDirName = (eMusicState == eBGRNDTRACK_BOSS) ? gsLevelNameForBossLoad.c_str() : gsLevelNameForLoad.c_str();
sFileName = va("music/%s/%s.mp3",psDirName,psFileNameBase);
return sFileName.c_str();
}
开发者ID:3ddy,项目名称:Jedi-Academy,代码行数:19,代码来源:snd_music.cpp
示例2: Music_ParseLeveldata
static sboolean Music_ParseLeveldata(const char *psLevelName)
{
sboolean bReturn = qfalse;
if (MusicData == NULL)
{
MusicData = new MusicData_t;
}
// already got this data?
//
if (MusicData->size() && !Q_stricmp(psLevelName,gsLevelNameForCompare.c_str()))
{
return qtrue;
}
MusicData->clear();
char sLevelName[MAX_QPATH];
Q_strncpyz(sLevelName,psLevelName,sizeof(sLevelName));
gsLevelNameForLoad = sLevelName; // harmless to init here even if we fail to parse dms.dat file
gsLevelNameForCompare = sLevelName; // harmless to init here even if we fail to parse dms.dat file
gsLevelNameForBossLoad = sLevelName; // harmless to init here even if we fail to parse dms.dat file
char *pText = NULL;
/*int iTotalBytesLoaded = */FS_ReadFile(sFILENAME_DMS, (void **)&pText );
if (pText)
{
char *psStrippedText = StripTrailingWhiteSpaceOnEveryLine(pText);
CGenericParser2 Parser;
char *psDataPtr = psStrippedText; // because ptr gets advanced, so we supply a clone that GP can alter
if (Parser.Parse(&psDataPtr, true))
{
CGPGroup *pFileGroup = Parser.GetBaseParseGroup();
if (pFileGroup)
{
CGPGroup *pgMusicFiles = pFileGroup->FindSubGroup(sKEY_MUSICFILES);
if (pgMusicFiles)
{
CGPGroup *pgLevelMusic = pFileGroup->FindSubGroup(sKEY_LEVELMUSIC);
if (pgLevelMusic)
{
CGPGroup *pgThisLevelMusic = NULL;
//
// check for new USE keyword...
//
int iSanityLimit = 0;
sstring_t sSearchName(sLevelName);
while (sSearchName.c_str()[0] && iSanityLimit < 10)
{
gsLevelNameForLoad = sSearchName;
gsLevelNameForBossLoad = sSearchName;
pgThisLevelMusic = pgLevelMusic->FindSubGroup(sSearchName.c_str());
if (pgThisLevelMusic)
{
CGPValue *pValue = pgThisLevelMusic->FindPair(sKEY_USES);
if (pValue)
{
// re-search using the USE param...
//
sSearchName = pValue->GetTopValue();
iSanityLimit++;
// Com_DPrintf("Using \"%s\"\n",sSearchName.c_str());
}
else
{
// no new USE keyword found...
//
sSearchName = "";
}
}
else
{
// level entry not found...
//
break;
}
}
// now go ahead and use the final music set we've decided on...
//
if (pgThisLevelMusic && iSanityLimit < 10)
{
// these are optional fields, so see which ones we find...
//
LPCSTR psName_Explore = NULL;
LPCSTR psName_Action = NULL;
LPCSTR psName_Boss = NULL;
LPCSTR psName_Death = NULL;
//
LPCSTR psName_UseBoss = NULL;
for (CGPValue *pValue = pgThisLevelMusic->GetPairs(); pValue; pValue = pValue->GetNext())
{
LPCSTR psKey = pValue->GetName();
LPCSTR psValue = pValue->GetTopValue();
//.........这里部分代码省略.........
开发者ID:3ddy,项目名称:Jedi-Academy,代码行数:101,代码来源:snd_music.cpp
示例3: stricmp
// sort by menu entry, then by reference within menu...
//
bool operator < (const Reference_t& _X) const
{
int i = stricmp(sMenu.c_str(),_X.sMenu.c_str());
if (i)
return i<0;
return !!(stricmp(sReference.c_str(),_X.sReference.c_str()) < 0);
}
开发者ID:Agustinlv,项目名称:BlueHarvest,代码行数:10,代码来源:ui_debug.cpp
示例4: va
// info only, used in "soundinfo" command...
//
const char *Music_GetLevelSetName(void)
{
if (Q_stricmp(gsLevelNameForCompare.c_str(), gsLevelNameForLoad.c_str()))
{
// music remap via USES command...
//
return va("%s -> %s",gsLevelNameForCompare.c_str(), gsLevelNameForLoad.c_str());
}
return gsLevelNameForLoad.c_str();
}
开发者ID:3ddy,项目名称:Jedi-Academy,代码行数:13,代码来源:snd_music.cpp
示例5: EnterGoodRef
static void EnterGoodRef(LPCSTR ps4LetterType, LPCSTR psReference, LPCSTR psPackageReference, LPCSTR psText)
{
EnterRef(psReference, psText, sCurrentMenu.c_str());
ReferencesAndPackage[psReference].insert(psPackageReference);
MenusUsed.insert(psPackageReference);
}
开发者ID:Agustinlv,项目名称:BlueHarvest,代码行数:7,代码来源:ui_debug.cpp
示例6: Music_DynamicDataAvailable
// where label is (eg) "kejim_base"...
//
sboolean Music_DynamicDataAvailable(const char *psDynamicMusicLabel)
{
char sLevelName[MAX_QPATH];
Q_strncpyz(sLevelName,COM_SkipPath( const_cast<char*>( (psDynamicMusicLabel&&psDynamicMusicLabel[0])?psDynamicMusicLabel:gsLevelNameFromServer.c_str() ) ),sizeof(sLevelName));
strlwr(sLevelName);
if (strlen(sLevelName)) // avoid error messages when there's no music waiting to be played and we try and restart it...
{
if (Music_ParseLeveldata(sLevelName))
{
return !!( Music_GetBaseMusicFile( eBGRNDTRACK_EXPLORE ) &&
Music_GetBaseMusicFile( eBGRNDTRACK_ACTION )
);
}
}
return qfalse;
}
开发者ID:3ddy,项目名称:Jedi-Academy,代码行数:20,代码来源:snd_music.cpp
示例7: Music_ParseLeveldata
static qboolean Music_ParseLeveldata( gsl::czstring psLevelName )
{
qboolean bReturn = qfalse;
if (MusicData == NULL)
{
// sorry vv, false leaks make it hard to find true leaks
static MusicData_t singleton;
MusicData = &singleton;
}
// already got this data?
//
if (MusicData->size() && !Q_stricmp(psLevelName,gsLevelNameForCompare.c_str()))
{
return qtrue;
}
MusicData->clear();
char sLevelName[MAX_QPATH];
Q_strncpyz(sLevelName,psLevelName,sizeof(sLevelName));
gsLevelNameForLoad = sLevelName; // harmless to init here even if we fail to parse dms.dat file
gsLevelNameForCompare = sLevelName; // harmless to init here even if we fail to parse dms.dat file
gsLevelNameForBossLoad = sLevelName; // harmless to init here even if we fail to parse dms.dat file
gsl::czstring filename = sFILENAME_DMS;
CGenericParser2 Parser;
if( !Parser.Parse( filename ) )
{
Music_Parse_Error( filename, "Error using GP to parse file\n" );
}
else
{
const CGPGroup& pFileGroup = Parser.GetBaseParseGroup();
const CGPGroup* pgMusicFiles = pFileGroup.FindSubGroup( sKEY_MUSICFILES );
if( !pgMusicFiles )
{
Music_Parse_Error(filename, build_string( "Unable to find subgroup \"", sKEY_MUSICFILES ,"\"\n" ) );
}
else
{
const CGPGroup* pgLevelMusic = pFileGroup.FindSubGroup( sKEY_LEVELMUSIC );
if( !pgLevelMusic )
{
Music_Parse_Error( filename, build_string( "Unable to find subgroup \"", sKEY_MUSICFILES, "\"\n" ) );
}
else
{
const CGPGroup *pgThisLevelMusic = nullptr;
//
// check for new USE keyword...
//
int steps = 0;
gsl::cstring_view searchName{ &sLevelName[ 0 ], &sLevelName[ strlen( &sLevelName[ 0 ] ) ] };
const int sanityLimit = 10;
while( !searchName.empty() && steps < sanityLimit )
{
gsLevelNameForLoad = StringViewToSString( searchName );
gsLevelNameForBossLoad = gsLevelNameForLoad;
pgThisLevelMusic = pgLevelMusic->FindSubGroup( searchName );
if( pgThisLevelMusic )
{
const CGPProperty* pValue = pgThisLevelMusic->FindProperty( sKEY_USES );
if( pValue )
{
// re-search using the USE param...
//
searchName = pValue->GetTopValue();
steps++;
// Com_DPrintf("Using \"%s\"\n",sSearchName.c_str());
}
else
{
// no new USE keyword found...
//
searchName = {};
}
}
else
{
// level entry not found...
//
break;
}
}
// now go ahead and use the final music set we've decided on...
//
if( !pgThisLevelMusic || steps >= sanityLimit )
{
Music_Parse_Warning( build_string( "Unable to find entry for \"", sLevelName, "\" in \"", filename, "\"\n" ) );
}
else
{
// these are optional fields, so see which ones we find...
//.........这里部分代码省略.........
开发者ID:FeniksFire,项目名称:OpenJK,代码行数:101,代码来源:snd_music.cpp
注:本文中的sstring_t类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论