RString CourseEntry::GetTextDescription() const { vector<RString> vsEntryDescription; Song *pSong = songID.ToSong(); if( pSong ) vsEntryDescription.push_back( pSong->GetTranslitFullTitle() ); else vsEntryDescription.push_back( "Random" ); if( !songCriteria.m_sGroupName.empty() ) vsEntryDescription.push_back( songCriteria.m_sGroupName ); if( songCriteria.m_bUseSongGenreAllowedList ) vsEntryDescription.push_back( join(",",songCriteria.m_vsSongGenreAllowedList) ); if( stepsCriteria.m_difficulty != Difficulty_Invalid && stepsCriteria.m_difficulty != Difficulty_Medium ) vsEntryDescription.push_back( CourseDifficultyToLocalizedString(stepsCriteria.m_difficulty) ); if( stepsCriteria.m_iLowMeter != -1 ) vsEntryDescription.push_back( ssprintf("Low meter: %d", stepsCriteria.m_iLowMeter) ); if( stepsCriteria.m_iHighMeter != -1 ) vsEntryDescription.push_back( ssprintf("High meter: %d", stepsCriteria.m_iHighMeter) ); if( songSort != SongSort_Randomize ) vsEntryDescription.push_back( "Sort: %d" + SongSortToLocalizedString(songSort) ); if( songSort != SongSort_Randomize && iChooseIndex != 0 ) vsEntryDescription.push_back( "Choose " + FormatNumberAndSuffix(iChooseIndex) + " match" ); int iNumModChanges = GetNumModChanges(); if( iNumModChanges != 0 ) vsEntryDescription.push_back( ssprintf("%d mod changes", iNumModChanges) ); if( fGainSeconds != 0 ) vsEntryDescription.push_back( ssprintf("Low meter: %.0f", fGainSeconds) ); RString s = join( ",", vsEntryDescription ); return s; }
static CString GetPromptText() { CString s; { float fOld = GAMESTATE->m_fGlobalOffsetSecondsOriginal; float fNew = PREFSMAN->m_fGlobalOffsetSeconds; float fDelta = fNew - fOld; if( fabs(fDelta) > 0.00001 ) { s += ssprintf( "You have changed the Global Offset\nfrom %+.3f to %+.3f (change of %+.3f, notes %s).\n\n", fOld, fNew, fDelta, fDelta > 0 ? "earlier":"later" ); } } vector<CString> vsSongChanges; { float fOld = GAMESTATE->m_pTimingDataOriginal->m_fBeat0OffsetInSeconds; float fNew = GAMESTATE->m_pCurSong->m_Timing.m_fBeat0OffsetInSeconds; float fDelta = fNew - fOld; if( fabs(fDelta) > 0.00001 ) { vsSongChanges.push_back( ssprintf( "The song offset changed from %+.3f to %+.3f (change of %+.3f, notes %s).\n\n", fOld, fNew, fDelta, fDelta > 0 ? "earlier":"later" ) ); } } for( unsigned i=0; i<GAMESTATE->m_pCurSong->m_Timing.m_BPMSegments.size(); i++ ) { float fOld = GAMESTATE->m_pTimingDataOriginal->m_BPMSegments[i].m_fBPS; float fNew = GAMESTATE->m_pCurSong->m_Timing.m_BPMSegments[i].m_fBPS; float fDelta = fNew - fOld; if( fabs(fDelta) > 0.00001 ) { vsSongChanges.push_back( ssprintf( "The %s BPM segment changed from %+.3f BPS to %+.3f BPS (change of %+.3f).\n\n", FormatNumberAndSuffix(i+1).c_str(), fOld, fNew, fDelta ) ); } } for( unsigned i=0; i<GAMESTATE->m_pCurSong->m_Timing.m_StopSegments.size(); i++ ) { float fOld = GAMESTATE->m_pTimingDataOriginal->m_StopSegments[i].m_fStopSeconds; float fNew = GAMESTATE->m_pCurSong->m_Timing.m_StopSegments[i].m_fStopSeconds; float fDelta = fNew - fOld; if( fabs(fDelta) > 0.00001 ) { vsSongChanges.push_back( ssprintf( "The %s Stop segment changed from %+.3f seconds to %+.3f seconds (change of %+.3f).\n\n", FormatNumberAndSuffix(i+1).c_str(), fOld, fNew, fDelta ) ); } } if( !vsSongChanges.empty() ) { s += ssprintf( "You have changed the timing of\n" "%s:\n" "\n", GAMESTATE->m_pCurSong->GetDisplayFullTitle().c_str() ); s += join( "\n", vsSongChanges ); } s +="\n\n" "Would you like to save these changes to the song file?\n" "Choosing NO will discard your changes."; return s; }
void ScreenSyncOverlay::UpdateText() { CString s; switch( PREFSMAN->m_AutoPlay ) { case PC_HUMAN: break; case PC_AUTOPLAY: s+="AutoPlay\n"; break; case PC_CPU: s+="AutoPlayCPU\n"; break; default: ASSERT(0); } switch( GAMESTATE->m_SongOptions.m_AutosyncType ) { case SongOptions::AUTOSYNC_OFF: break; case SongOptions::AUTOSYNC_SONG: s+="AutoSync Song\n"; break; case SongOptions::AUTOSYNC_MACHINE: s+="AutoSync Machine\n";break; default: ASSERT(0); } if( GAMESTATE->m_pCurSong == NULL || GAMESTATE->IsCourseMode() ) // sync controls not available { m_textStatus.SetText( s ); return; } { float fOld = GAMESTATE->m_fGlobalOffsetSecondsOriginal; float fNew = PREFSMAN->m_fGlobalOffsetSeconds; float fDelta = fNew - fOld; if( fabsf(fDelta) > 0.00001f ) { s += ssprintf( "Global Offset from %+.3f to %+.3f (notes %s)\n", fOld, fNew, fDelta > 0 ? "earlier":"later" ); } } { float fOld = GAMESTATE->m_pTimingDataOriginal->m_fBeat0OffsetInSeconds; float fNew = GAMESTATE->m_pCurSong->m_Timing.m_fBeat0OffsetInSeconds; float fDelta = fNew - fOld; if( fabsf(fDelta) > 0.00001f ) { s += ssprintf( "Song offset from %+.3f to %+.3f (notes %s)\n", fOld, fNew, fDelta > 0 ? "earlier":"later" ); } } ASSERT( GAMESTATE->m_pTimingDataOriginal->m_BPMSegments.size() == GAMESTATE->m_pCurSong->m_Timing.m_BPMSegments.size() ); for( unsigned i=0; i<GAMESTATE->m_pCurSong->m_Timing.m_BPMSegments.size(); i++ ) { float fOld = GAMESTATE->m_pTimingDataOriginal->m_BPMSegments[i].m_fBPS; float fNew = GAMESTATE->m_pCurSong->m_Timing.m_BPMSegments[i].m_fBPS; float fDelta = fNew - fOld; if( fabsf(fDelta) > 0.00001f ) { s += ssprintf( "%s tempo segment from %+.3f BPS to %+.3f BPS\n", FormatNumberAndSuffix(i+1).c_str(), fOld, fNew ); } } m_textStatus.SetText( s ); }
void AdjustSync::GetSyncChangeTextSong( vector<RString> &vsAddTo ) { if( GAMESTATE->m_pCurSong.Get() ) { unsigned int iOriginalSize = vsAddTo.size(); { float fOld = Quantize( AdjustSync::s_pTimingDataOriginal->m_fBeat0OffsetInSeconds, 0.001f ); float fNew = Quantize( GAMESTATE->m_pCurSong->m_Timing.m_fBeat0OffsetInSeconds, 0.001f ); float fDelta = fNew - fOld; if( fabsf(fDelta) > 0.0001f ) { vsAddTo.push_back( ssprintf( SONG_OFFSET_FROM.GetValue(), fOld, fNew, (fDelta > 0 ? EARLIER:LATER).GetValue().c_str() ) ); } } for( unsigned i=0; i<GAMESTATE->m_pCurSong->m_Timing.m_BPMSegments.size(); i++ ) { float fOld = Quantize( AdjustSync::s_pTimingDataOriginal->m_BPMSegments[i].GetBPM(), 0.001f ); float fNew = Quantize( GAMESTATE->m_pCurSong->m_Timing.m_BPMSegments[i].GetBPM(), 0.001f ); float fDelta = fNew - fOld; if( fabsf(fDelta) > 0.0001f ) { if ( i >= 4 ) { vsAddTo.push_back(ETC.GetValue()); break; } vsAddTo.push_back( ssprintf( TEMPO_SEGMENT_FROM.GetValue(), FormatNumberAndSuffix(i+1).c_str(), fOld, fNew ) ); } } for( unsigned i=0; i<GAMESTATE->m_pCurSong->m_Timing.m_StopSegments.size(); i++ ) { float fOld = Quantize( AdjustSync::s_pTimingDataOriginal->m_StopSegments[i].m_fStopSeconds, 0.001f ); float fNew = Quantize( GAMESTATE->m_pCurSong->m_Timing.m_StopSegments[i].m_fStopSeconds, 0.001f ); float fDelta = fNew - fOld; if( fabsf(fDelta) > 0.0001f ) { if ( i >= 4 ) { vsAddTo.push_back(ETC.GetValue()); break; } vsAddTo.push_back( ssprintf( CHANGED_STOP.GetValue(), i+1, fOld, fNew ) ); } } if( vsAddTo.size() > iOriginalSize && s_fAverageError > 0.0f ) { vsAddTo.push_back( ssprintf(ERROR.GetValue(), s_fAverageError) ); } if( vsAddTo.size() > iOriginalSize && s_iStepsFiltered > 0 ) { vsAddTo.push_back( ssprintf(TAPS_IGNORED.GetValue(), s_iStepsFiltered) ); } } }