void UnlockSystem::UnlockSong( const Song *song ) { const UnlockEntry *p = FindSong( song ); if( !p ) return; // does not exist if( p->m_iCode == -1 ) return; UnlockCode( p->m_iCode ); }
bool UnlockSystem::SongIsLocked( const Song *song ) const { if( !PREFSMAN->m_bUseUnlockSystem ) return false; const UnlockEntry *p = FindSong( song ); if( p == NULL ) return false; return p->IsLocked(); }
/* Return true if the song is *only* available in roulette. */ bool UnlockSystem::SongIsRouletteOnly( const Song *song ) const { if( !PREFSMAN->m_bUseUnlockSystem ) return false; const UnlockEntry *p = FindSong( song ); if( !p ) return false; /* If the song is locked by a code, and it's a roulette code, honor IsLocked. */ if( p->m_iCode == -1 || m_RouletteCodes.find( p->m_iCode ) == m_RouletteCodes.end() ) return false; return p->IsLocked(); }
int UnlockManager::FindCode( const CString &sName ) const { const UnlockEntry *pEntry = NULL; const Song *pSong = SONGMAN->FindSong( sName ); if( pSong != NULL ) pEntry = FindSong( pSong ); const Course *pCourse = SONGMAN->FindCourse( sName ); if( pCourse != NULL ) pEntry = FindCourse( pCourse ); if( pEntry == NULL ) pEntry = FindModifier( sName ); if( pEntry == NULL ) { LOG->Warn( "Couldn't find locked entry \"%s\"", sName.c_str() ); return -1; } return pEntry->m_iCode; }