TapSteps -> TapNotes

This commit is contained in:
Chris Danford
2004-05-24 04:26:54 +00:00
parent b31996b97f
commit d65404e750
12 changed files with 57 additions and 54 deletions
+2
View File
@@ -148,6 +148,8 @@ void GameState::Reset()
FOREACH_PlayerNumber( p ) FOREACH_PlayerNumber( p )
m_pCurNotes[p] = NULL; m_pCurNotes[p] = NULL;
m_pCurCourse = NULL; m_pCurCourse = NULL;
FOREACH_PlayerNumber( p )
m_pCurTrail[p] = NULL;
SAFE_DELETE( m_pPosition ); SAFE_DELETE( m_pPosition );
m_pPosition = new NoteFieldPositioning("Positioning.ini"); m_pPosition = new NoteFieldPositioning("Positioning.ini");
+1
View File
@@ -142,6 +142,7 @@ public:
Song* m_pCurSong; Song* m_pCurSong;
Steps* m_pCurNotes[NUM_PLAYERS]; Steps* m_pCurNotes[NUM_PLAYERS];
Course* m_pCurCourse; Course* m_pCurCourse;
Course* m_pCurTrail[NUM_PLAYERS];
// //
+22 -22
View File
@@ -42,14 +42,14 @@ void NoteData::SetNumTracks( int iNewNumTracks )
// Make sure that all tracks are of the same length // Make sure that all tracks are of the same length
ASSERT( m_iNumTracks > 0 ); ASSERT( m_iNumTracks > 0 );
int rows = m_TapSteps[0].size(); int rows = m_TapNotes[0].size();
for( int t=0; t<MAX_NOTE_TRACKS; t++ ) for( int t=0; t<MAX_NOTE_TRACKS; t++ )
{ {
if( t<m_iNumTracks ) if( t<m_iNumTracks )
m_TapSteps[t].resize( rows, TAP_EMPTY ); m_TapNotes[t].resize( rows, TAP_EMPTY );
else else
m_TapSteps[t].clear(); m_TapNotes[t].clear();
} }
/* Remove all hold notes that are out of bounds. */ /* Remove all hold notes that are out of bounds. */
@@ -74,7 +74,7 @@ void NoteData::ClearRange( int iNoteIndexBegin, int iNoteIndexEnd )
void NoteData::ClearAll() void NoteData::ClearAll()
{ {
for( int t=0; t<m_iNumTracks; t++ ) for( int t=0; t<m_iNumTracks; t++ )
m_TapSteps[t].clear(); m_TapNotes[t].clear();
m_HoldNotes.clear(); m_HoldNotes.clear();
} }
@@ -124,7 +124,7 @@ void NoteData::CopyAll( const NoteData* pFrom )
ClearAll(); ClearAll();
for( int c=0; c<m_iNumTracks; c++ ) for( int c=0; c<m_iNumTracks; c++ )
m_TapSteps[c] = pFrom->m_TapSteps[c]; m_TapNotes[c] = pFrom->m_TapNotes[c];
m_HoldNotes = pFrom->m_HoldNotes; m_HoldNotes = pFrom->m_HoldNotes;
m_AttackMap = pFrom->m_AttackMap; m_AttackMap = pFrom->m_AttackMap;
} }
@@ -376,7 +376,7 @@ int NoteData::GetFirstRow() const
int i; int i;
for( i=0; i < int(m_TapSteps[0].size()); i++ ) for( i=0; i < int(m_TapNotes[0].size()); i++ )
{ {
if( !IsRowEmpty(i) ) if( !IsRowEmpty(i) )
{ {
@@ -409,7 +409,7 @@ int NoteData::GetLastRow() const
int i; int i;
for( i = int(m_TapSteps[0].size()); i>=0; i-- ) // iterate back to front for( i = int(m_TapNotes[0].size()); i>=0; i-- ) // iterate back to front
{ {
if( !IsRowEmpty(i) ) if( !IsRowEmpty(i) )
{ {
@@ -432,7 +432,7 @@ float NoteData::GetLastBeat() const
return NoteRowToBeat( GetLastRow() ); return NoteRowToBeat( GetLastRow() );
} }
int NoteData::GetNumTapSteps( float fStartBeat, float fEndBeat ) const int NoteData::GetNumTapNotes( float fStartBeat, float fEndBeat ) const
{ {
int iNumNotes = 0; int iNumNotes = 0;
@@ -755,7 +755,7 @@ void NoteData::LoadTransformed( const NoteData* pOriginal, int iNewNumTracks, co
if( iOriginalTrack == -1 ) if( iOriginalTrack == -1 )
continue; continue;
m_TapSteps[t] = Original.m_TapSteps[iOriginalTrack]; m_TapNotes[t] = Original.m_TapNotes[iOriginalTrack];
} }
Convert4sToHoldNotes(); Convert4sToHoldNotes();
@@ -795,7 +795,7 @@ void NoteData::LoadOverlapped( const NoteData* pOriginal, int iNewNumTracks )
const int iTrackFrom = i; const int iTrackFrom = i;
int &iTrackTo = DestRow[i]; int &iTrackTo = DestRow[i];
const TapNote iStepFrom = in.m_TapSteps[iTrackFrom][row]; const TapNote iStepFrom = in.m_TapNotes[iTrackFrom][row];
if( iStepFrom == TAP_EMPTY ) if( iStepFrom == TAP_EMPTY )
continue; continue;
@@ -891,49 +891,49 @@ void NoteData::LoadTransformedSlidingWindow( const NoteData* pOriginal, int iNew
m_AttackMap = Original.GetAttackMap(); m_AttackMap = Original.GetAttackMap();
} }
void NoteData::PadTapSteps(int rows) void NoteData::PadTapNotes(int rows)
{ {
int needed = rows - m_TapSteps[0].size() + 1; int needed = rows - m_TapNotes[0].size() + 1;
if(needed < 0) if(needed < 0)
return; return;
needed += 100; /* optimization: give it a little more than it needs */ needed += 100; /* optimization: give it a little more than it needs */
for(int track = 0; track < m_iNumTracks; ++track) for(int track = 0; track < m_iNumTracks; ++track)
m_TapSteps[track].insert(m_TapSteps[track].end(), needed, TAP_EMPTY); m_TapNotes[track].insert(m_TapNotes[track].end(), needed, TAP_EMPTY);
} }
void NoteData::MoveTapNoteTrack(int dest, int src) void NoteData::MoveTapNoteTrack(int dest, int src)
{ {
if(dest == src) return; if(dest == src) return;
m_TapSteps[dest] = m_TapSteps[src]; m_TapNotes[dest] = m_TapNotes[src];
m_TapSteps[src].clear(); m_TapNotes[src].clear();
} }
void NoteData::SetTapNote(int track, int row, TapNote t) void NoteData::SetTapNote(int track, int row, TapNote t)
{ {
if(row < 0) return; if(row < 0) return;
PadTapSteps(row); PadTapNotes(row);
m_TapSteps[track][row]=t; m_TapNotes[track][row]=t;
} }
void NoteData::ReserveRows( int row ) void NoteData::ReserveRows( int row )
{ {
for(int track = 0; track < m_iNumTracks; ++track) for(int track = 0; track < m_iNumTracks; ++track)
m_TapSteps[track].reserve( row ); m_TapNotes[track].reserve( row );
} }
void NoteData::EliminateAllButOneTap(int row) void NoteData::EliminateAllButOneTap(int row)
{ {
if(row < 0) return; if(row < 0) return;
PadTapSteps(row); PadTapNotes(row);
int track; int track;
for(track = 0; track < m_iNumTracks; ++track) for(track = 0; track < m_iNumTracks; ++track)
{ {
if( m_TapSteps[track][row] == TAP_TAP ) if( m_TapNotes[track][row] == TAP_TAP )
break; break;
} }
@@ -941,8 +941,8 @@ void NoteData::EliminateAllButOneTap(int row)
for( ; track < m_iNumTracks; ++track) for( ; track < m_iNumTracks; ++track)
{ {
if( m_TapSteps[track][row] == TAP_TAP ) if( m_TapNotes[track][row] == TAP_TAP )
m_TapSteps[track][row] = TAP_EMPTY; m_TapNotes[track][row] = TAP_EMPTY;
} }
} }
+8 -8
View File
@@ -23,15 +23,15 @@
class NoteData class NoteData
{ {
/* Keep this aligned, so that they all have the same size. */ /* Keep this aligned, so that they all have the same size. */
vector<TapNote> m_TapSteps[MAX_NOTE_TRACKS]; vector<TapNote> m_TapNotes[MAX_NOTE_TRACKS];
int m_iNumTracks; int m_iNumTracks;
vector<HoldNote> m_HoldNotes; vector<HoldNote> m_HoldNotes;
map<TapNote,Attack> m_AttackMap; map<TapNote,Attack> m_AttackMap;
/* Pad m_TapSteps so it includes the row "rows". */ /* Pad m_TapNotes so it includes the row "rows". */
void PadTapSteps(int rows); void PadTapNotes(int rows);
void LoadOverlapped( const NoteData* pOriginal, int iNewNumTracks ); void LoadOverlapped( const NoteData* pOriginal, int iNewNumTracks );
@@ -56,8 +56,8 @@ public:
* range; pretend the song goes on with TAP_EMPTYs indefinitely. */ * range; pretend the song goes on with TAP_EMPTYs indefinitely. */
inline TapNote GetTapNote(unsigned track, int row) const inline TapNote GetTapNote(unsigned track, int row) const
{ {
if(row < 0 || row >= (int) m_TapSteps[track].size()) return TapNote(TAP_EMPTY); if(row < 0 || row >= (int) m_TapNotes[track].size()) return TapNote(TAP_EMPTY);
return m_TapSteps[track][row]; return m_TapNotes[track][row];
} }
void ReserveRows( int row ); void ReserveRows( int row );
@@ -65,7 +65,7 @@ public:
* which is much faster. Be sure that 0 <= row < GetMaxRow(). */ * which is much faster. Be sure that 0 <= row < GetMaxRow(). */
inline TapNote GetTapNoteX(unsigned track, int row) const inline TapNote GetTapNoteX(unsigned track, int row) const
{ {
return m_TapSteps[track][row]; return m_TapNotes[track][row];
} }
void MoveTapNoteTrack(int dest, int src); void MoveTapNoteTrack(int dest, int src);
void SetTapNote(int track, int row, TapNote t); void SetTapNote(int track, int row, TapNote t);
@@ -116,13 +116,13 @@ public:
/* Return the highest beat/row that might contain notes. (Use GetLastBeat if you need /* Return the highest beat/row that might contain notes. (Use GetLastBeat if you need
* accuracy.) */ * accuracy.) */
float GetMaxBeat() const { return NoteRowToBeat(GetMaxRow()); } float GetMaxBeat() const { return NoteRowToBeat(GetMaxRow()); }
int GetMaxRow() const { return int(m_TapSteps[0].size()); } int GetMaxRow() const { return int(m_TapNotes[0].size()); }
float GetFirstBeat() const; // return the beat number of the first note float GetFirstBeat() const; // return the beat number of the first note
int GetFirstRow() const; int GetFirstRow() const;
float GetLastBeat() const; // return the beat number of the last note float GetLastBeat() const; // return the beat number of the last note
int GetLastRow() const; int GetLastRow() const;
int GetNumTapSteps( const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetNumTapNotes( const float fStartBeat = 0, const float fEndBeat = -1 ) const;
int GetNumMines( const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetNumMines( const float fStartBeat = 0, const float fEndBeat = -1 ) const;
int GetNumHands( const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetNumHands( const float fStartBeat = 0, const float fEndBeat = -1 ) const;
int GetNumRowsWithTap( const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetNumRowsWithTap( const float fStartBeat = 0, const float fEndBeat = -1 ) const;
+2 -2
View File
@@ -321,7 +321,7 @@ float NoteDataUtil::GetStreamRadarValue( const NoteData &in, float fSongSeconds
if( !fSongSeconds ) if( !fSongSeconds )
return 0.0f; return 0.0f;
// density of steps // density of steps
int iNumNotes = in.GetNumTapSteps() + in.GetNumHoldNotes(); int iNumNotes = in.GetNumTapNotes() + in.GetNumHoldNotes();
float fNotesPerSecond = iNumNotes/fSongSeconds; float fNotesPerSecond = iNumNotes/fSongSeconds;
float fReturn = fNotesPerSecond / 7; float fReturn = fNotesPerSecond / 7;
return min( fReturn, 1.0f ); return min( fReturn, 1.0f );
@@ -342,7 +342,7 @@ float NoteDataUtil::GetVoltageRadarValue( const NoteData &in, float fSongSeconds
for( int i=0; i<=int(fLastBeat); i+=BEAT_WINDOW ) for( int i=0; i<=int(fLastBeat); i+=BEAT_WINDOW )
{ {
int iNumNotesThisWindow = in.GetNumTapSteps((float)i,(float)i+BEAT_WINDOW) + in.GetNumHoldNotes((float)i,(float)i+BEAT_WINDOW); int iNumNotesThisWindow = in.GetNumTapNotes((float)i,(float)i+BEAT_WINDOW) + in.GetNumHoldNotes((float)i,(float)i+BEAT_WINDOW);
float fDensityThisWindow = iNumNotesThisWindow/(float)BEAT_WINDOW; float fDensityThisWindow = iNumNotesThisWindow/(float)BEAT_WINDOW;
fMaxDensitySoFar = max( fMaxDensitySoFar, fDensityThisWindow ); fMaxDensitySoFar = max( fMaxDensitySoFar, fDensityThisWindow );
} }
+7 -7
View File
@@ -31,9 +31,9 @@ void NoteDataWithScoring::Init()
m_HoldNoteScores.clear(); m_HoldNoteScores.clear();
} }
int NoteDataWithScoring::GetNumTapStepsWithScore( TapNoteScore tns, const float fStartBeat, float fEndBeat ) const int NoteDataWithScoring::GetNumTapNotesWithScore( TapNoteScore tns, const float fStartBeat, float fEndBeat ) const
{ {
int iNumSuccessfulTapSteps = 0; int iNumSuccessfulTapNotes = 0;
if(fEndBeat == -1) if(fEndBeat == -1)
fEndBeat = GetMaxBeat()+1; fEndBeat = GetMaxBeat()+1;
@@ -46,11 +46,11 @@ int NoteDataWithScoring::GetNumTapStepsWithScore( TapNoteScore tns, const float
for( int t=0; t<GetNumTracks(); t++ ) for( int t=0; t<GetNumTracks(); t++ )
{ {
if( this->GetTapNote(t, i) != TAP_EMPTY && GetTapNoteScore(t, i) >= tns ) if( this->GetTapNote(t, i) != TAP_EMPTY && GetTapNoteScore(t, i) >= tns )
iNumSuccessfulTapSteps++; iNumSuccessfulTapNotes++;
} }
} }
return iNumSuccessfulTapSteps; return iNumSuccessfulTapNotes;
} }
int NoteDataWithScoring::GetNumNWithScore( TapNoteScore tns, int MinTaps, const float fStartBeat, float fEndBeat ) const int NoteDataWithScoring::GetNumNWithScore( TapNoteScore tns, int MinTaps, const float fStartBeat, float fEndBeat ) const
@@ -281,17 +281,17 @@ float NoteDataWithScoring::GetActualRadarValue( RadarCategory rv, PlayerNumber p
float NoteDataWithScoring::GetActualStreamRadarValue( float fSongSeconds, PlayerNumber pn ) const float NoteDataWithScoring::GetActualStreamRadarValue( float fSongSeconds, PlayerNumber pn ) const
{ {
int TotalSteps = GetNumTapSteps(); int TotalSteps = GetNumTapNotes();
if( !TotalSteps ) if( !TotalSteps )
return 1; return 1;
const int Perfects = GetNumTapStepsWithScore(TNS_PERFECT); const int Perfects = GetNumTapNotesWithScore(TNS_PERFECT);
return clamp( float(Perfects)/TotalSteps, 0.0f, 1.0f ); return clamp( float(Perfects)/TotalSteps, 0.0f, 1.0f );
} }
float NoteDataWithScoring::GetActualVoltageRadarValue( float fSongSeconds, PlayerNumber pn ) const float NoteDataWithScoring::GetActualVoltageRadarValue( float fSongSeconds, PlayerNumber pn ) const
{ {
/* g_CurStageStats.iMaxCombo is unrelated to GetNumTapSteps: m_bComboContinuesBetweenSongs /* g_CurStageStats.iMaxCombo is unrelated to GetNumTapNotes: m_bComboContinuesBetweenSongs
* might be on, and the way combo is counted varies depending on the mode and score * might be on, and the way combo is counted varies depending on the mode and score
* keeper. Instead, let's use the length of the longest recorded combo. This is * keeper. Instead, let's use the length of the longest recorded combo. This is
* only subtly different: it's the percent of the song the longest combo took to get. */ * only subtly different: it's the percent of the song the longest combo took to get. */
+1 -1
View File
@@ -65,7 +65,7 @@ public:
void Init(); void Init();
// statistics // statistics
int GetNumTapStepsWithScore( TapNoteScore tns, const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetNumTapNotesWithScore( TapNoteScore tns, const float fStartBeat = 0, const float fEndBeat = -1 ) const;
int GetNumNWithScore( TapNoteScore tns, int MinTaps, const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetNumNWithScore( TapNoteScore tns, int MinTaps, const float fStartBeat = 0, const float fEndBeat = -1 ) const;
int GetNumHoldNotesWithScore( HoldNoteScore hns, const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetNumHoldNotesWithScore( HoldNoteScore hns, const float fStartBeat = 0, const float fEndBeat = -1 ) const;
int GetSuccessfulMines( const float fStartBeat = 0, const float fEndBeat = -1 ) const; int GetSuccessfulMines( const float fStartBeat = 0, const float fEndBeat = -1 ) const;
+4 -4
View File
@@ -300,7 +300,7 @@ void PlayerMinus::Update( float fDeltaTime )
// //
// Check for TapNote misses // Check for TapNote misses
// //
UpdateTapStepsMissedOlderThan( GetMaxStepDistanceSeconds() ); UpdateTapNotesMissedOlderThan( GetMaxStepDistanceSeconds() );
// //
// update pressed flag // update pressed flag
@@ -847,7 +847,7 @@ void PlayerMinus::Step( int col, RageTimer tm )
/* AI will generate misses here. Don't handle a miss like a regular note because /* AI will generate misses here. Don't handle a miss like a regular note because
* we want the judgment animation to appear delayed. Instead, return early if * we want the judgment animation to appear delayed. Instead, return early if
* AI generated a miss, and let UpdateMissedTapStepsOlderThan() detect and handle the * AI generated a miss, and let UpdateMissedTapNotesOlderThan() detect and handle the
* misses. */ * misses. */
if( score == TNS_MISS ) if( score == TNS_MISS )
return; return;
@@ -1030,9 +1030,9 @@ void PlayerMinus::OnRowCompletelyJudged( int iIndexThatWasSteppedOn )
} }
void PlayerMinus::UpdateTapStepsMissedOlderThan( float fMissIfOlderThanSeconds ) void PlayerMinus::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds )
{ {
//LOG->Trace( "Steps::UpdateTapStepsMissedOlderThan(%f)", fMissIfOlderThanThisBeat ); //LOG->Trace( "Steps::UpdateTapNotesMissedOlderThan(%f)", fMissIfOlderThanThisBeat );
int iMissIfOlderThanThisIndex; int iMissIfOlderThanThisIndex;
{ {
const float fEarliestTime = GAMESTATE->m_fMusicSeconds - fMissIfOlderThanSeconds; const float fEarliestTime = GAMESTATE->m_fMusicSeconds - fMissIfOlderThanSeconds;
+1 -1
View File
@@ -61,7 +61,7 @@ public:
static float GetMaxStepDistanceSeconds(); static float GetMaxStepDistanceSeconds();
protected: protected:
void UpdateTapStepsMissedOlderThan( float fMissIfOlderThanThisBeat ); void UpdateTapNotesMissedOlderThan( float fMissIfOlderThanThisBeat );
void OnRowCompletelyJudged( int iStepIndex ); void OnRowCompletelyJudged( int iStepIndex );
void HandleTapRowScore( unsigned row ); void HandleTapRowScore( unsigned row );
void HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore ); void HandleHoldScore( HoldNoteScore holdScore, TapNoteScore tapScore );
+5 -5
View File
@@ -183,7 +183,7 @@ void ScoreKeeperMAX2::OnNextSong( int iSongInCourseIndex, const Steps* pSteps, c
ASSERT( m_iPointBonus >= 0 ); ASSERT( m_iPointBonus >= 0 );
m_iTapStepsHit = 0; m_iTapNotesHit = 0;
} }
static int GetScore(int p, int B, int S, int n) static int GetScore(int p, int B, int S, int n)
@@ -267,7 +267,7 @@ void ScoreKeeperMAX2::AddScore( TapNoteScore score )
default: p = 0; break; default: p = 0; break;
} }
m_iTapStepsHit++; m_iTapNotesHit++;
const int N = m_iNumTapsAndHolds; const int N = m_iNumTapsAndHolds;
const int sum = (N * (N + 1)) / 2; const int sum = (N * (N + 1)) / 2;
@@ -286,15 +286,15 @@ void ScoreKeeperMAX2::AddScore( TapNoteScore score )
} }
else else
{ {
iScore += GetScore(p, B, sum, m_iTapStepsHit); iScore += GetScore(p, B, sum, m_iTapNotesHit);
const int &iCurrentCombo = g_CurStageStats.iCurCombo[m_PlayerNumber]; const int &iCurrentCombo = g_CurStageStats.iCurCombo[m_PlayerNumber];
g_CurStageStats.iBonus[m_PlayerNumber] += m_ComboBonusFactor[score] * iCurrentCombo; g_CurStageStats.iBonus[m_PlayerNumber] += m_ComboBonusFactor[score] * iCurrentCombo;
} }
/* Subtract the maximum this step could have been worth from the bonus. */ /* Subtract the maximum this step could have been worth from the bonus. */
m_iPointBonus -= GetScore(10, B, sum, m_iTapStepsHit); m_iPointBonus -= GetScore(10, B, sum, m_iTapNotesHit);
if ( m_iTapStepsHit == m_iNumTapsAndHolds && score >= TNS_PERFECT ) if ( m_iTapNotesHit == m_iNumTapsAndHolds && score >= TNS_PERFECT )
{ {
if (!g_CurStageStats.bFailedEarlier[m_PlayerNumber]) if (!g_CurStageStats.bFailedEarlier[m_PlayerNumber])
iScore += m_iPointBonus; iScore += m_iPointBonus;
+1 -1
View File
@@ -20,7 +20,7 @@ class ScoreKeeperMAX2: public ScoreKeeper
{ {
int m_iScoreRemainder; int m_iScoreRemainder;
int m_iMaxPossiblePoints; int m_iMaxPossiblePoints;
int m_iTapStepsHit; // number of notes judged so far, needed by scoring int m_iTapNotesHit; // number of notes judged so far, needed by scoring
int m_iNumTapsAndHolds; int m_iNumTapsAndHolds;
int m_iMaxScoreSoFar; // for nonstop scoring int m_iMaxScoreSoFar; // for nonstop scoring
+3 -3
View File
@@ -554,7 +554,7 @@ void ScreenEdit::Update( float fDeltaTime )
void ScreenEdit::UpdateTextInfo() void ScreenEdit::UpdateTextInfo()
{ {
int iNumTapSteps = m_NoteFieldEdit.GetNumTapSteps(); int iNumTapNotes = m_NoteFieldEdit.GetNumTapNotes();
int iNumHoldNotes = m_NoteFieldEdit.GetNumHoldNotes(); int iNumHoldNotes = m_NoteFieldEdit.GetNumHoldNotes();
CString sNoteType; CString sNoteType;
@@ -588,7 +588,7 @@ void ScreenEdit::UpdateTextInfo()
sText += ssprintf( "Description:\n %s\n", GAMESTATE->m_pCurNotes[PLAYER_1] ? GAMESTATE->m_pCurNotes[PLAYER_1]->GetDescription().c_str() : "no description" ); sText += ssprintf( "Description:\n %s\n", GAMESTATE->m_pCurNotes[PLAYER_1] ? GAMESTATE->m_pCurNotes[PLAYER_1]->GetDescription().c_str() : "no description" );
sText += ssprintf( "Main title:\n %s\n", m_pSong->m_sMainTitle.c_str() ); sText += ssprintf( "Main title:\n %s\n", m_pSong->m_sMainTitle.c_str() );
sText += ssprintf( "Sub title:\n %s\n", m_pSong->m_sSubTitle.c_str() ); sText += ssprintf( "Sub title:\n %s\n", m_pSong->m_sSubTitle.c_str() );
sText += ssprintf( "Tap Steps:\n %d\n", iNumTapSteps ); sText += ssprintf( "Tap Steps:\n %d\n", iNumTapNotes );
sText += ssprintf( "Hold Steps:\n %d\n", iNumHoldNotes ); sText += ssprintf( "Hold Steps:\n %d\n", iNumHoldNotes );
sText += ssprintf( "Beat 0 Offset:\n %.3f secs\n", m_pSong->m_Timing.m_fBeat0OffsetInSeconds ); sText += ssprintf( "Beat 0 Offset:\n %.3f secs\n", m_pSong->m_Timing.m_fBeat0OffsetInSeconds );
sText += ssprintf( "Preview Start:\n %.2f secs\n", m_pSong->m_fMusicSampleStartSeconds ); sText += ssprintf( "Preview Start:\n %.2f secs\n", m_pSong->m_fMusicSampleStartSeconds );
@@ -1561,7 +1561,7 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, int* iAnswers )
g_EditNotesStatistics.rows[meter].defaultChoice = pSteps->GetMeter()-1; g_EditNotesStatistics.rows[meter].defaultChoice = pSteps->GetMeter()-1;
g_EditNotesStatistics.rows[predict_meter].choices.resize(1);g_EditNotesStatistics.rows[predict_meter].choices[0] = ssprintf("%f",pSteps->PredictMeter()); g_EditNotesStatistics.rows[predict_meter].choices.resize(1);g_EditNotesStatistics.rows[predict_meter].choices[0] = ssprintf("%f",pSteps->PredictMeter());
g_EditNotesStatistics.rows[description].choices.resize(1); g_EditNotesStatistics.rows[description].choices[0] = pSteps->GetDescription(); g_EditNotesStatistics.rows[description].choices.resize(1); g_EditNotesStatistics.rows[description].choices[0] = pSteps->GetDescription();
g_EditNotesStatistics.rows[tap_notes].choices.resize(1); g_EditNotesStatistics.rows[tap_notes].choices[0] = ssprintf("%d", m_NoteFieldEdit.GetNumTapSteps()); g_EditNotesStatistics.rows[tap_notes].choices.resize(1); g_EditNotesStatistics.rows[tap_notes].choices[0] = ssprintf("%d", m_NoteFieldEdit.GetNumTapNotes());
g_EditNotesStatistics.rows[hold_notes].choices.resize(1); g_EditNotesStatistics.rows[hold_notes].choices[0] = ssprintf("%d", m_NoteFieldEdit.GetNumHoldNotes()); g_EditNotesStatistics.rows[hold_notes].choices.resize(1); g_EditNotesStatistics.rows[hold_notes].choices[0] = ssprintf("%d", m_NoteFieldEdit.GetNumHoldNotes());
g_EditNotesStatistics.rows[stream].choices.resize(1); g_EditNotesStatistics.rows[stream].choices[0] = ssprintf("%f", NoteDataUtil::GetStreamRadarValue(m_NoteFieldEdit,fMusicSeconds)); g_EditNotesStatistics.rows[stream].choices.resize(1); g_EditNotesStatistics.rows[stream].choices[0] = ssprintf("%f", NoteDataUtil::GetStreamRadarValue(m_NoteFieldEdit,fMusicSeconds));
g_EditNotesStatistics.rows[voltage].choices.resize(1); g_EditNotesStatistics.rows[voltage].choices[0] = ssprintf("%f", NoteDataUtil::GetVoltageRadarValue(m_NoteFieldEdit,fMusicSeconds)); g_EditNotesStatistics.rows[voltage].choices.resize(1); g_EditNotesStatistics.rows[voltage].choices[0] = ssprintf("%f", NoteDataUtil::GetVoltageRadarValue(m_NoteFieldEdit,fMusicSeconds));