本文整理汇总了C++中PlayerOptions::FromString方法的典型用法代码示例。如果您正苦于以下问题:C++ PlayerOptions::FromString方法的具体用法?C++ PlayerOptions::FromString怎么用?C++ PlayerOptions::FromString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PlayerOptions
的用法示例。
在下文中一共展示了PlayerOptions::FromString方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RebuildPlayerOptionsFromActiveAttacks
void PlayerState::RebuildPlayerOptionsFromActiveAttacks()
{
// rebuild player options
PlayerOptions po = m_PlayerOptions.GetStage();
SongOptions so = GAMESTATE->m_SongOptions.GetStage();
for( unsigned s=0; s<m_ActiveAttacks.size(); s++ )
{
if( !m_ActiveAttacks[s].bOn )
continue; /* hasn't started yet */
po.FromString( m_ActiveAttacks[s].sModifiers );
so.FromString( m_ActiveAttacks[s].sModifiers );
}
m_PlayerOptions.Assign( ModsLevel_Song, po );
if( m_PlayerNumber == GAMESTATE->GetMasterPlayerNumber() )
GAMESTATE->m_SongOptions.Assign( ModsLevel_Song, so );
int iSumOfAttackLevels = GetSumOfActiveAttackLevels();
if( iSumOfAttackLevels > 0 )
{
m_iLastPositiveSumOfAttackLevels = iSumOfAttackLevels;
m_fSecondsUntilAttacksPhasedOut = 10000; // any positive number that won't run out before the attacks
}
else
{
// don't change! m_iLastPositiveSumOfAttackLevels[p] = iSumOfAttackLevels;
m_fSecondsUntilAttacksPhasedOut = 2; // 2 seconds to phase out
}
}
示例2: SetPlayerOptions
static int SetPlayerOptions( T* p, lua_State *L )
{
ModsLevel m = Enum::Check<ModsLevel>( L, 1 );
PlayerOptions po;
po.FromString( SArg(2) );
p->m_PlayerOptions.Assign( m, po );
return 0;
}
示例3: RadarValues
const RadarValues &Trail::GetRadarValues() const
{
if( m_bRadarValuesCached )
{
return m_CachedRadarValues;
}
if( IsSecret() )
{
// Don't calculate RadarValues for a non-fixed Course. They values are
// worthless because they'll change every time this Trail is
// regenerated.
m_CachedRadarValues = RadarValues();
return m_CachedRadarValues;
}
else
{
RadarValues rv;
rv.Zero();
FOREACH_CONST( TrailEntry, m_vEntries, e )
{
const Steps *pSteps = e->pSteps;
ASSERT( pSteps != NULL );
// Hack: don't calculate for autogen entries
if( !pSteps->IsAutogen() && e->ContainsTransformOrTurn() )
{
NoteData nd;
pSteps->GetNoteData( nd );
RadarValues rv_orig;
GAMESTATE->SetProcessedTimingData(const_cast<TimingData *>(pSteps->GetTimingData()));
NoteDataUtil::CalculateRadarValues( nd, e->pSong->m_fMusicLengthSeconds, rv_orig );
PlayerOptions po;
po.FromString( e->Modifiers );
if( po.ContainsTransformOrTurn() )
{
NoteDataUtil::TransformNoteData(nd, *(pSteps->GetTimingData()), po, pSteps->m_StepsType);
}
NoteDataUtil::TransformNoteData(nd, *(pSteps->GetTimingData()), e->Attacks, pSteps->m_StepsType, e->pSong);
RadarValues transformed_rv;
NoteDataUtil::CalculateRadarValues( nd, e->pSong->m_fMusicLengthSeconds, transformed_rv );
GAMESTATE->SetProcessedTimingData(NULL);
rv += transformed_rv;
}
else
{
rv += pSteps->GetRadarValues( PLAYER_1 );
}
}
/* Hack: SetRadarValues is non-const (a const setter doesn't
* make sense), but it only modifies a mutable value. Just
* cast away const. */
const_cast<Trail*>(this)->SetRadarValues( rv );
return m_CachedRadarValues;
}
}
示例4: ContainsTransformOrTurn
bool TrailEntry::ContainsTransformOrTurn() const
{
PlayerOptions po;
po.FromString( Modifiers );
if( po.ContainsTransformOrTurn() )
return true;
if( Attacks.ContainsTransformOrTurn() )
return true;
return false;
}
示例5: if
const RadarValues &Trail::GetRadarValues() const
{
if( m_bRadarValuesCached )
{
return m_CachedRadarValues;
}
else if( IsSecret() )
{
// Don't calculate RadarValues for a non-fixed Course. The values are
// worthless because they'll change every time this Trail is
// regenerated.
m_CachedRadarValues = RadarValues();
return m_CachedRadarValues;
}
else
{
RadarValues rv;
rv.Zero();
FOREACH_CONST( TrailEntry, m_vEntries, e )
{
const Steps *pSteps = e->pSteps;
ASSERT( pSteps );
/* Hack: don't calculate for autogen entries; it makes writing Catalog.xml
* take way too long. (Tournamix 4 Sample.crs takes me ~10s.) */
if( !pSteps->IsAutogen() && e->ContainsTransformOrTurn() )
{
NoteData nd;
pSteps->GetNoteData( nd );
RadarValues rv_orig;
NoteDataUtil::CalculateRadarValues( nd, e->pSong->MusicLengthSeconds(), rv_orig );
PlayerOptions po;
po.FromString( e->Modifiers );
if( po.ContainsTransformOrTurn() )
NoteDataUtil::TransformNoteData( nd, po, pSteps->m_StepsType );
NoteDataUtil::TransformNoteData( nd, e->Attacks, pSteps->m_StepsType, e->pSong );
RadarValues transformed_rv;
NoteDataUtil::CalculateRadarValues( nd, e->pSong->MusicLengthSeconds(), transformed_rv );
rv += transformed_rv;
}
else
{
rv += pSteps->GetRadarValues();
}
}
/* Hack: SetRadarValues is non-const (a const setter doesn't
* make sense), but it only modifies a mutable value. Just
* cast away const. */
const_cast<Trail*>(this)->SetRadarValues( rv );
return m_CachedRadarValues;
}
}
示例6: Refresh
void ActiveAttackList::Refresh()
{
const AttackArray& attacks = m_pPlayerState->m_ActiveAttacks;
vector<CString> vsThemedMods;
for( unsigned i=0; i<attacks.size(); i++ )
{
const Attack& attack = attacks[i];
if( !attack.bOn )
continue; /* hasn't started yet */
if( !attack.bShowInAttackList )
continue;
PlayerOptions po;
po.FromString( attack.sModifiers, true );
po.GetThemedMods( vsThemedMods );
}
CString s = join( "\n", vsThemedMods );
this->SetText( s ); // BitmapText will not rebuild vertices if these strings are the same.
}
示例7: GetDefaultModifiers
static void GetDefaultModifiers( PlayerOptions &po, SongOptions &so )
{
po.FromString( PREFSMAN->m_sDefaultModifiers );
so.FromString( PREFSMAN->m_sDefaultModifiers );
}
示例8: ContainsTransformOrTurn
bool Attack::ContainsTransformOrTurn() const
{
PlayerOptions po;
po.FromString(sModifiers);
return po.ContainsTransformOrTurn();
}
示例9: OnRowValueChanged
void EditCoursesMenu::OnRowValueChanged( Row row )
{
LOG->Trace( "EditCoursesMenu::OnRowValueChanged(%i)", row );
const bool bCanGoLeft = CanGoLeft(), bCanGoRight = CanGoRight();
m_sprArrows[0].SetDiffuse( bCanGoLeft?RageColor(1,1,1,1):RageColor(0.2f,0.2f,0.2f,1) );
m_sprArrows[1].SetDiffuse( bCanGoRight?RageColor(1,1,1,1):RageColor(0.2f,0.2f,0.2f,1) );
m_sprArrows[0].EnableAnimation( bCanGoLeft );
m_sprArrows[1].EnableAnimation( bCanGoRight );
Course* pCourse = GetSelectedCourse();
CourseEntry* pEntry = GetSelectedEntry();
switch( row )
{
case ROW_COURSE:
CHECKPOINT;
m_textValue[ROW_COURSE].SetText( pCourse->GetFullDisplayTitle() );
m_CourseBanner.LoadFromCourse( pCourse );
m_CourseBanner.ScaleToClipped( COURSE_BANNER_WIDTH, COURSE_BANNER_HEIGHT );
m_iSelection[ROW_ENTRY] = 0;
pEntry = GetSelectedEntry();
if( pEntry == NULL )
{
CourseEntry ce;
const vector<Song*> &apSongs = SONGMAN->GetAllSongs();
ASSERT( !apSongs.empty() );
ce.pSong = apSongs[0];
pCourse->m_entries.push_back( ce );
pEntry = GetSelectedEntry();
}
// fall through
case ROW_COURSE_OPTIONS:
CHECKPOINT;
m_textValue[ROW_COURSE_OPTIONS].SetText(
ssprintf(
"(START) %s, %s, ",
pCourse->m_bRepeat ? "repeat" : "no repeat",
pCourse->m_bRandomize ? "randomize" : "no randomize" ) +
ssprintf(
(pCourse->m_iLives==-1) ? "use bar life" : "%d lives",
pCourse->m_iLives ) );
// fall through
case ROW_ACTION:
CHECKPOINT;
m_textValue[ROW_ACTION].SetText( "(START) " + ActionToString(GetSelectedAction()) );
// fall through
case ROW_ENTRY:
CHECKPOINT;
m_textValue[ROW_ENTRY].SetText( ssprintf("%d of %d",m_iSelection[ROW_ENTRY]+1, (int)GetSelectedCourse()->m_entries.size()) );
m_iSelection[ROW_ENTRY_TYPE] = pEntry->type;
// fall through
case ROW_ENTRY_TYPE:
CHECKPOINT;
m_textValue[ROW_ENTRY_TYPE].SetText( pEntry ? CourseEntryTypeToString(pEntry->type) : CString("(none)") );
// fall through
case ROW_ENTRY_OPTIONS:
CHECKPOINT;
{
CStringArray as;
const bool *bShow = g_bRowEnabledForType[GetSelectedEntry()->type];
if( bShow[song] )
as.push_back( pEntry->pSong ? pEntry->pSong->GetFullTranslitTitle() : CString("(missing song)") );
if( bShow[group] )
as.push_back( pEntry->group_name.empty() ? CString("(no group)") : pEntry->group_name );
if( bShow[difficulty] )
if( pEntry->difficulty != DIFFICULTY_INVALID )
as.push_back( DifficultyToString(pEntry->difficulty) );
if( bShow[low_meter] )
if( pEntry->low_meter > 0 )
as.push_back( ssprintf("low meter %d", pEntry->low_meter) );
if( bShow[high_meter] )
if( pEntry->high_meter > 0 )
as.push_back( ssprintf("high meter %d", pEntry->high_meter) );
if( bShow[best_worst_value] )
if( pEntry->players_index != -1 )
as.push_back( ssprintf("rank %d", pEntry->players_index+1) );
m_textValue[ROW_ENTRY_OPTIONS].SetText( "(START) " + join(", ",as) );
}
// fall through
case ROW_ENTRY_PLAYER_OPTIONS:
CHECKPOINT;
{
CString s = "(START) ";
PlayerOptions po;
po.FromString( pEntry->modifiers );
if( po.GetString().empty() )
s += "(none)";
else
s += po.GetString();
m_textValue[ROW_ENTRY_PLAYER_OPTIONS].SetText( s );
}
// fall through
case ROW_ENTRY_SONG_OPTIONS:
CHECKPOINT;
{
//.........这里部分代码省略.........