fixed a bunch of DWI save bugs.

This commit is contained in:
Chris Danford
2002-09-11 04:49:07 +00:00
parent 9ef03e7fea
commit 45e1d6ef81
13 changed files with 109 additions and 70 deletions
+14 -14
View File
@@ -2,9 +2,21 @@
Fix Fix
///////////////////////// /////////////////////////
test DWI writer
Make Save both SM and DWI
The "groove bar" reports at the results screen is broken.
Getting a nearly full voltage bar on a
song when I barely maitain combo (it should be max combo/max possible combo),
and chaos is always
empty unless you AAA a song.
Ready, here we go closer to start of notes Ready, here we go closer to start of notes
correct songs played show on eval ready, here we go between each stage of a course
all songs played passed show on eval
make sure supports music in "Music" folder make sure supports music in "Music" folder
@@ -18,11 +30,7 @@ about us page
new phpwebhosting account new phpwebhosting account
call BrainStorm guy call BrainStorm guy (Jodi 509-270-6112)
RMA phone
RMA Kiko USB
kitsappt photos kitsappt photos
@@ -34,8 +42,6 @@ sample pop
fix screwed up scroll bar fix screwed up scroll bar
ready, here we go between each stage of a course
send disc to Penny Arcade send disc to Penny Arcade
long ver, marathon balloons long ver, marathon balloons
@@ -174,12 +180,6 @@ This doesn't quite qualify as a "bug," but--tiled scrolling background
animations have very visible seams where the tiles meet; it'd look much much animations have very visible seams where the tiles meet; it'd look much much
better if it was seamless. better if it was seamless.
The "groove bar" reports at the results screen is broken.
Getting a nearly full voltage bar on a
song when I barely maitain combo (it should be max combo/max possible combo),
and chaos is always
empty unless you AAA a song.
#LYRICS: #LYRICS:
e.g. 120=Hey Ho Captian Jack, e.g. 120=Hey Ho Captian Jack,
124=Bring Me Back to the railroad track, 124=Bring Me Back to the railroad track,
+3 -3
View File
@@ -229,7 +229,7 @@ void NoteDisplay::DrawHold( const HoldNote& hn, const bool bActive, const float
const float fAlphaBottom = ArrowGetAlpha( m_PlayerNumber, fYBottom, fPercentFadeToFail ); const float fAlphaBottom = ArrowGetAlpha( m_PlayerNumber, fYBottom, fPercentFadeToFail );
const float fGlowTop = ArrowGetGlow( m_PlayerNumber, fYTop, fPercentFadeToFail ); const float fGlowTop = ArrowGetGlow( m_PlayerNumber, fYTop, fPercentFadeToFail );
const float fGlowBottom = ArrowGetGlow( m_PlayerNumber, fYBottom, fPercentFadeToFail ); const float fGlowBottom = ArrowGetGlow( m_PlayerNumber, fYBottom, fPercentFadeToFail );
const float fColorScale = SCALE(fLife,0,1,0.5f,1); const float fColorScale = SCALE(fLife,0,1,0.2f,1);
const D3DXCOLOR colorDiffuseTop = D3DXCOLOR(fColorScale,fColorScale,fColorScale,fAlphaTop); const D3DXCOLOR colorDiffuseTop = D3DXCOLOR(fColorScale,fColorScale,fColorScale,fAlphaTop);
const D3DXCOLOR colorDiffuseBottom = D3DXCOLOR(fColorScale,fColorScale,fColorScale,fAlphaBottom); const D3DXCOLOR colorDiffuseBottom = D3DXCOLOR(fColorScale,fColorScale,fColorScale,fAlphaBottom);
const D3DXCOLOR colorGlowTop = D3DXCOLOR(1,1,1,fGlowTop); const D3DXCOLOR colorGlowTop = D3DXCOLOR(1,1,1,fGlowTop);
@@ -272,7 +272,7 @@ void NoteDisplay::DrawHold( const HoldNote& hn, const bool bActive, const float
const float fAlphaBottom = ArrowGetAlpha( m_PlayerNumber, fYBottom, fPercentFadeToFail ); const float fAlphaBottom = ArrowGetAlpha( m_PlayerNumber, fYBottom, fPercentFadeToFail );
const float fGlowTop = ArrowGetGlow( m_PlayerNumber, fYTop, fPercentFadeToFail ); const float fGlowTop = ArrowGetGlow( m_PlayerNumber, fYTop, fPercentFadeToFail );
const float fGlowBottom = ArrowGetGlow( m_PlayerNumber, fYBottom, fPercentFadeToFail ); const float fGlowBottom = ArrowGetGlow( m_PlayerNumber, fYBottom, fPercentFadeToFail );
const float fColorScale = SCALE(fLife,0,1,0.5f,1); const float fColorScale = SCALE(fLife,0,1,0.2f,1);
const D3DXCOLOR colorDiffuseTop = D3DXCOLOR(fColorScale,fColorScale,fColorScale,fAlphaTop); const D3DXCOLOR colorDiffuseTop = D3DXCOLOR(fColorScale,fColorScale,fColorScale,fAlphaTop);
const D3DXCOLOR colorDiffuseBottom = D3DXCOLOR(fColorScale,fColorScale,fColorScale,fAlphaBottom); const D3DXCOLOR colorDiffuseBottom = D3DXCOLOR(fColorScale,fColorScale,fColorScale,fAlphaBottom);
const D3DXCOLOR colorGlowTop = D3DXCOLOR(1,1,1,fGlowTop); const D3DXCOLOR colorGlowTop = D3DXCOLOR(1,1,1,fGlowTop);
@@ -301,7 +301,7 @@ void NoteDisplay::DrawHold( const HoldNote& hn, const bool bActive, const float
const float fX = ArrowGetXPos( m_PlayerNumber, iCol, fY ); const float fX = ArrowGetXPos( m_PlayerNumber, iCol, fY );
const float fAlpha = ArrowGetAlpha( m_PlayerNumber, fY, fPercentFadeToFail ); const float fAlpha = ArrowGetAlpha( m_PlayerNumber, fY, fPercentFadeToFail );
const float fGlow = ArrowGetGlow( m_PlayerNumber, fY, fPercentFadeToFail ); const float fGlow = ArrowGetGlow( m_PlayerNumber, fY, fPercentFadeToFail );
const float fColorScale = SCALE(fLife,0,1,0.5f,1); const float fColorScale = SCALE(fLife,0,1,0.2f,1);
const D3DXCOLOR colorDiffuse= D3DXCOLOR(fColorScale,fColorScale,fColorScale,fAlpha); const D3DXCOLOR colorDiffuse= D3DXCOLOR(fColorScale,fColorScale,fColorScale,fAlpha);
const D3DXCOLOR colorGlow = D3DXCOLOR(1,1,1,fGlow); const D3DXCOLOR colorGlow = D3DXCOLOR(1,1,1,fGlow);
+1 -1
View File
@@ -160,7 +160,7 @@ void NoteField::DrawPrimitives()
const int iFirstIndexToDraw = BeatToNoteRow(fFirstBeatToDraw); const int iFirstIndexToDraw = BeatToNoteRow(fFirstBeatToDraw);
const int iLastIndexToDraw = BeatToNoteRow(fLastBeatToDraw); const int iLastIndexToDraw = BeatToNoteRow(fLastBeatToDraw);
LOG->Trace( "Drawing elements %d through %d", iFirstIndexToDraw, iLastIndexToDraw ); // LOG->Trace( "Drawing elements %d through %d", iFirstIndexToDraw, iLastIndexToDraw );
if( GAMESTATE->m_bEditing ) if( GAMESTATE->m_bEditing )
{ {
+10 -7
View File
@@ -20,7 +20,11 @@ D3DXCOLOR NoteTypeToColor( NoteType nt )
case NOTE_TYPE_8TH: return D3DXCOLOR(0,0,1,1); // blue case NOTE_TYPE_8TH: return D3DXCOLOR(0,0,1,1); // blue
case NOTE_TYPE_12TH: return D3DXCOLOR(1,0,1,1); // purple case NOTE_TYPE_12TH: return D3DXCOLOR(1,0,1,1); // purple
case NOTE_TYPE_16TH: return D3DXCOLOR(1,1,0,1); // yellow case NOTE_TYPE_16TH: return D3DXCOLOR(1,1,0,1); // yellow
default: ASSERT(0); return D3DXCOLOR(0.5f,0.5f,0.5f,1); case NOTE_TYPE_24TH: return D3DXCOLOR(0,1,1,1); // light blue
case NOTE_TYPE_32ND: // fall through
default:
ASSERT(0);
return D3DXCOLOR(0.5f,0.5f,0.5f,1); // gray
} }
}; };
@@ -32,6 +36,8 @@ float NoteTypeToBeat( NoteType nt )
case NOTE_TYPE_8TH: return 1.0f/2; // eighth notes case NOTE_TYPE_8TH: return 1.0f/2; // eighth notes
case NOTE_TYPE_12TH: return 1.0f/3; // triplets case NOTE_TYPE_12TH: return 1.0f/3; // triplets
case NOTE_TYPE_16TH: return 1.0f/4; // sixteenth notes case NOTE_TYPE_16TH: return 1.0f/4; // sixteenth notes
case NOTE_TYPE_24TH: return 1.0f/6; // twenty-forth notes
case NOTE_TYPE_32ND: return 1.0f/8; // thirty-second notes
default: ASSERT(0); return 0; default: ASSERT(0); return 0;
} }
} }
@@ -42,6 +48,8 @@ NoteType GetNoteType( int iNoteIndex )
else if( iNoteIndex % (ROWS_PER_MEASURE/8) == 0) return NOTE_TYPE_8TH; else if( iNoteIndex % (ROWS_PER_MEASURE/8) == 0) return NOTE_TYPE_8TH;
else if( iNoteIndex % (ROWS_PER_MEASURE/12) == 0) return NOTE_TYPE_12TH; else if( iNoteIndex % (ROWS_PER_MEASURE/12) == 0) return NOTE_TYPE_12TH;
else if( iNoteIndex % (ROWS_PER_MEASURE/16) == 0) return NOTE_TYPE_16TH; else if( iNoteIndex % (ROWS_PER_MEASURE/16) == 0) return NOTE_TYPE_16TH;
else if( iNoteIndex % (ROWS_PER_MEASURE/24) == 0) return NOTE_TYPE_24TH;
else if( iNoteIndex % (ROWS_PER_MEASURE/32) == 0) return NOTE_TYPE_32ND;
else return NOTE_TYPE_INVALID; else return NOTE_TYPE_INVALID;
}; };
@@ -52,12 +60,7 @@ bool IsNoteOfType( int iNoteIndex, NoteType t )
D3DXCOLOR GetNoteColorFromIndex( int iIndex ) D3DXCOLOR GetNoteColorFromIndex( int iIndex )
{ {
for( int t=0; t<NUM_NOTE_TYPES; t++ ) return NoteTypeToColor( GetNoteType(iIndex) );
{
if( IsNoteOfType( iIndex, (NoteType)t ) )
return NoteTypeToColor( (NoteType)t );
}
return D3DXCOLOR(0.5f,0.5f,0.5f,1);
} }
D3DXCOLOR GetNoteColorFromBeat( float fBeat ) D3DXCOLOR GetNoteColorFromBeat( float fBeat )
+2
View File
@@ -55,6 +55,8 @@ enum NoteType
NOTE_TYPE_8TH, // eighth note NOTE_TYPE_8TH, // eighth note
NOTE_TYPE_12TH, // triplet NOTE_TYPE_12TH, // triplet
NOTE_TYPE_16TH, // sixteenth note NOTE_TYPE_16TH, // sixteenth note
NOTE_TYPE_24TH, // twenty-forth note
NOTE_TYPE_32ND, // thirty-second note
NUM_NOTE_TYPES, NUM_NOTE_TYPES,
NOTE_TYPE_INVALID NOTE_TYPE_INVALID
}; };
+38 -12
View File
@@ -86,6 +86,7 @@ void NotesWriterDWI::WriteDWINotesField( FILE* fp, const Notes &out, int start )
fCurrentIncrementer = 1.0/8 * BEATS_PER_MEASURE; fCurrentIncrementer = 1.0/8 * BEATS_PER_MEASURE;
break; break;
case NOTE_TYPE_12TH: case NOTE_TYPE_12TH:
case NOTE_TYPE_24TH:
fprintf( fp, "[" ); fprintf( fp, "[" );
fCurrentIncrementer = 1.0/24 * BEATS_PER_MEASURE; fCurrentIncrementer = 1.0/24 * BEATS_PER_MEASURE;
break; break;
@@ -96,16 +97,17 @@ void NotesWriterDWI::WriteDWINotesField( FILE* fp, const Notes &out, int start )
default: default:
ASSERT(0); ASSERT(0);
// fall though // fall though
case NOTE_TYPE_32ND:
case NOTE_TYPE_INVALID: case NOTE_TYPE_INVALID:
fprintf( fp, "<" ); fprintf( fp, "{" );
fCurrentIncrementer = 1.0/192 * BEATS_PER_MEASURE; fCurrentIncrementer = 1.0/64 * BEATS_PER_MEASURE;
break; break;
} }
double fFirstBeatInMeasure = m * BEATS_PER_MEASURE; double fFirstBeatInMeasure = m * BEATS_PER_MEASURE;
double fLastBeatInMeasure = (m+1) * BEATS_PER_MEASURE; double fLastBeatInMeasure = (m+1) * BEATS_PER_MEASURE;
for( double b=fFirstBeatInMeasure; b<fLastBeatInMeasure; b+=fCurrentIncrementer ) for( double b=fFirstBeatInMeasure; b<=fLastBeatInMeasure-1/64.0f; b+=fCurrentIncrementer ) // need the -0.0001 to account for rounding errors
{ {
int row = BeatToNoteRow( (float)b ); int row = BeatToNoteRow( (float)b );
@@ -115,15 +117,37 @@ void NotesWriterDWI::WriteDWINotesField( FILE* fp, const Notes &out, int start )
case NOTES_TYPE_DANCE_COUPLE_1: case NOTES_TYPE_DANCE_COUPLE_1:
case NOTES_TYPE_DANCE_COUPLE_2: case NOTES_TYPE_DANCE_COUPLE_2:
case NOTES_TYPE_DANCE_DOUBLE: case NOTES_TYPE_DANCE_DOUBLE:
fprintf( fp, NotesToDWIString( notedata.m_TapNotes[start+0][row], fprintf( fp, NotesToDWIString(
notedata.m_TapNotes[start+1][row], notedata.m_TapNotes[start+0][row],
notedata.m_TapNotes[start+2][row], notedata.m_TapNotes[start+1][row],
notedata.m_TapNotes[start+3][row] ) ); notedata.m_TapNotes[start+2][row],
notedata.m_TapNotes[start+3][row] ) );
// Blank out the notes so we don't write them again if the incrementer is small
notedata.m_TapNotes[start+0][row] = '0';
notedata.m_TapNotes[start+1][row] = '0';
notedata.m_TapNotes[start+2][row] = '0';
notedata.m_TapNotes[start+3][row] = '0';
break; break;
case NOTES_TYPE_DANCE_SOLO: case NOTES_TYPE_DANCE_SOLO:
fprintf( fp, NotesToDWIString( notedata.m_TapNotes[0][row], notedata.m_TapNotes[1][row], notedata.m_TapNotes[2][row], notedata.m_TapNotes[3][row], notedata.m_TapNotes[4][row], notedata.m_TapNotes[5][row] ) ); fprintf( fp, NotesToDWIString(
notedata.m_TapNotes[0][row],
notedata.m_TapNotes[1][row],
notedata.m_TapNotes[2][row],
notedata.m_TapNotes[3][row],
notedata.m_TapNotes[4][row],
notedata.m_TapNotes[5][row] ) );
// Blank out the notes so we don't write them again if the incrementer is small
notedata.m_TapNotes[start+0][row] = '0';
notedata.m_TapNotes[start+1][row] = '0';
notedata.m_TapNotes[start+2][row] = '0';
notedata.m_TapNotes[start+3][row] = '0';
notedata.m_TapNotes[start+4][row] = '0';
notedata.m_TapNotes[start+5][row] = '0';
break; break;
default: return; // not a type supported by DWI default:
ASSERT(0); // not a type supported by DWI. We shouldn't have called in here if that's the case
} }
} }
@@ -133,6 +157,7 @@ void NotesWriterDWI::WriteDWINotesField( FILE* fp, const Notes &out, int start )
case NOTE_TYPE_8TH: case NOTE_TYPE_8TH:
break; break;
case NOTE_TYPE_12TH: case NOTE_TYPE_12TH:
case NOTE_TYPE_24TH:
fprintf( fp, "]" ); fprintf( fp, "]" );
break; break;
case NOTE_TYPE_16TH: case NOTE_TYPE_16TH:
@@ -141,8 +166,9 @@ void NotesWriterDWI::WriteDWINotesField( FILE* fp, const Notes &out, int start )
default: default:
ASSERT(0); ASSERT(0);
// fall though // fall though
case NOTE_TYPE_32ND:
case NOTE_TYPE_INVALID: case NOTE_TYPE_INVALID:
fprintf( fp, ">" ); fprintf( fp, "}" );
break; break;
} }
fprintf( fp, "\n" ); fprintf( fp, "\n" );
@@ -195,7 +221,7 @@ bool NotesWriterDWI::Write( CString sPath, const Song &out )
for( int i=0; i<out.m_StopSegments.GetSize(); i++ ) for( int i=0; i<out.m_StopSegments.GetSize(); i++ )
{ {
const StopSegment &fs = out.m_StopSegments[i]; const StopSegment &fs = out.m_StopSegments[i];
fprintf( fp, "%.2f=%.2f", BeatToNoteRow( fs.m_fStartBeat ) / ROWS_PER_BEAT * 4.0f, fprintf( fp, "%.2f=%.2f", BeatToNoteRow( fs.m_fStartBeat ) * 4.0f / ROWS_PER_BEAT,
roundf(fs.m_fStopSeconds*1000) ); roundf(fs.m_fStopSeconds*1000) );
if( i != out.m_StopSegments.GetSize()-1 ) if( i != out.m_StopSegments.GetSize()-1 )
fprintf( fp, "," ); fprintf( fp, "," );
@@ -209,7 +235,7 @@ bool NotesWriterDWI::Write( CString sPath, const Song &out )
for( int i=1; i<out.m_BPMSegments.GetSize(); i++ ) for( int i=1; i<out.m_BPMSegments.GetSize(); i++ )
{ {
const BPMSegment &bs = out.m_BPMSegments[i]; const BPMSegment &bs = out.m_BPMSegments[i];
fprintf( fp, "%.2f=%.2f", BeatToNoteRow( bs.m_fStartBeat ) / ROWS_PER_BEAT * 4.0f, bs.m_fBPM ); fprintf( fp, "%.2f=%.2f", BeatToNoteRow( bs.m_fStartBeat ) * 4.0f / ROWS_PER_BEAT, bs.m_fBPM );
if( i != out.m_BPMSegments.GetSize()-1 ) if( i != out.m_BPMSegments.GetSize()-1 )
fprintf( fp, "," ); fprintf( fp, "," );
} }
+29 -21
View File
@@ -115,8 +115,7 @@ const CString MENU_ITEM_TEXT[NUM_MENU_ITEMS] = {
"K: Snap selection to nearest sixteenth note", "K: Snap selection to nearest sixteenth note",
"L: Snap selection to nearest triplet or sixteenth note", "L: Snap selection to nearest triplet or sixteenth note",
"M: Play sample music", "M: Play sample music",
"S: Save changes", "S: Save changes as SM and DWI",
"W: Save as DWI (lossy)",
"Q: Quit" "Q: Quit"
}; };
int MENU_ITEM_KEY[NUM_MENU_ITEMS] = { int MENU_ITEM_KEY[NUM_MENU_ITEMS] = {
@@ -143,7 +142,6 @@ int MENU_ITEM_KEY[NUM_MENU_ITEMS] = {
DIK_L, DIK_L,
DIK_M, DIK_M,
DIK_S, DIK_S,
DIK_W,
DIK_Q, DIK_Q,
}; };
@@ -417,10 +415,12 @@ void ScreenEdit::Update( float fDeltaTime )
CString sNoteType; CString sNoteType;
switch( m_SnapDisplay.GetSnapMode() ) switch( m_SnapDisplay.GetSnapMode() )
{ {
case NOTE_TYPE_4TH: sNoteType = "quarter notes"; break; case NOTE_TYPE_4TH: sNoteType = "quarter notes"; break;
case NOTE_TYPE_8TH: sNoteType = "eighth notes"; break; case NOTE_TYPE_8TH: sNoteType = "eighth notes"; break;
case NOTE_TYPE_12TH: sNoteType = "triplets"; break; case NOTE_TYPE_12TH: sNoteType = "triplets"; break;
case NOTE_TYPE_16TH: sNoteType = "sixteenth notes"; break; case NOTE_TYPE_16TH: sNoteType = "sixteenth notes"; break;
case NOTE_TYPE_24TH: sNoteType = "twentyforth notes"; break;
case NOTE_TYPE_32ND: sNoteType = "thirtysecond notes"; break;
default: ASSERT(0); default: ASSERT(0);
} }
@@ -644,7 +644,6 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
SCREENMAN->SetNewScreen( "ScreenEditMenu" ); SCREENMAN->SetNewScreen( "ScreenEditMenu" );
break; break;
case DIK_S: case DIK_S:
case DIK_W:
{ {
// copy edit into current Notes // copy edit into current Notes
// Song* pSong = GAMESTATE->m_pCurSong; // Song* pSong = GAMESTATE->m_pCurSong;
@@ -666,19 +665,9 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
} }
*/ */
pNotes->SetNoteData( (NoteData*)&m_NoteFieldEdit ); pNotes->SetNoteData( (NoteData*)&m_NoteFieldEdit );
switch( DeviceI.button ) GAMESTATE->m_pCurSong->Save();
{ SCREENMAN->SystemMessage( "Saved as SM and DWI." );
case DIK_S:
GAMESTATE->m_pCurSong->SaveToSongFile();
SCREENMAN->SystemMessage( "Saved as SM." );
break;
case DIK_W:
GAMESTATE->m_pCurSong->SaveToSongFileAndDWI();
SCREENMAN->SystemMessage( "Saved as SM and DWI." );
break;
default:
ASSERT(0);
}
SOUND->PlayOnceStreamed( THEME->GetPathTo("Sounds","edit save") ); SOUND->PlayOnceStreamed( THEME->GetPathTo("Sounds","edit save") );
} }
break; break;
@@ -1226,6 +1215,25 @@ void ScreenEdit::InputPlay( const DeviceInput& DeviceI, const InputEventType typ
GAMESTATE->m_fSongBeat = froundf( GAMESTATE->m_fSongBeat, NoteTypeToBeat(m_SnapDisplay.GetSnapMode()) ); GAMESTATE->m_fSongBeat = froundf( GAMESTATE->m_fSongBeat, NoteTypeToBeat(m_SnapDisplay.GetSnapMode()) );
break; break;
case DIK_F11:
case DIK_F12:
{
float fOffsetDelta;
switch( DeviceI.button )
{
case DIK_F11: fOffsetDelta = -0.020f; break;
case DIK_F12: fOffsetDelta = +0.020f; break;
default: ASSERT(0); return;
}
switch( type )
{
case IET_SLOW_REPEAT: fOffsetDelta *= 10; break;
case IET_FAST_REPEAT: fOffsetDelta *= 40; break;
}
m_pSong->m_fBeat0OffsetInSeconds += fOffsetDelta;
}
break;
} }
} }
+1 -1
View File
@@ -22,7 +22,7 @@
#include "SnapDisplay.h" #include "SnapDisplay.h"
const int NUM_MENU_ITEMS = 25; const int NUM_MENU_ITEMS = 24;
class ScreenEdit : public Screen class ScreenEdit : public Screen
+2 -2
View File
@@ -956,7 +956,7 @@ void SaveChanges()
switch( GAMESTATE->m_PlayMode ) switch( GAMESTATE->m_PlayMode )
{ {
case PLAY_MODE_ARCADE: case PLAY_MODE_ARCADE:
GAMESTATE->m_pCurSong->SaveToSongFile(); GAMESTATE->m_pCurSong->Save();
break; break;
case PLAY_MODE_ONI: case PLAY_MODE_ONI:
case PLAY_MODE_ENDLESS: case PLAY_MODE_ENDLESS:
@@ -964,7 +964,7 @@ void SaveChanges()
for( int i=0; i<GAMESTATE->m_pCurCourse->m_iStages; i++ ) for( int i=0; i<GAMESTATE->m_pCurCourse->m_iStages; i++ )
{ {
Song* pSong = GAMESTATE->m_pCurCourse->m_apSongs[i]; Song* pSong = GAMESTATE->m_pCurCourse->m_apSongs[i];
pSong->SaveToSongFile(); pSong->Save();
} }
} }
break; break;
+2 -1
View File
@@ -58,7 +58,7 @@ bool SnapDisplay::PrevSnapMode()
bool SnapDisplay::NextSnapMode() bool SnapDisplay::NextSnapMode()
{ {
if( m_NoteType == NUM_NOTE_TYPES-1 ) if( m_NoteType == NOTE_TYPE_16TH ) // this is the smallest snap we should allow
return false; return false;
m_NoteType = NoteType(m_NoteType+1); m_NoteType = NoteType(m_NoteType+1);
@@ -73,6 +73,7 @@ void SnapDisplay::SnapModeChanged()
for( int i=0; i<2; i++ ) for( int i=0; i<2; i++ )
{ {
m_sprIndicators[i].StopTweening();
m_sprIndicators[i].BeginTweening( 0.3f ); m_sprIndicators[i].BeginTweening( 0.3f );
m_sprIndicators[i].SetTweenDiffuse( color ); m_sprIndicators[i].SetTweenDiffuse( color );
} }
+3 -4
View File
@@ -637,7 +637,7 @@ void Song::SaveToCacheFile()
SaveToSMFile( GetCacheFilePath(), true ); SaveToSMFile( GetCacheFilePath(), true );
} }
void Song::SaveToSongFile() void Song::Save()
{ {
LOG->Trace( "Song::SaveToSongFile()" ); LOG->Trace( "Song::SaveToSongFile()" );
@@ -657,6 +657,7 @@ void Song::SaveToSongFile()
} }
SaveToSMFile( GetSongFilePath(), false ); SaveToSMFile( GetSongFilePath(), false );
SaveToDWIFile();
} }
@@ -744,12 +745,10 @@ void Song::SaveToSMFile( CString sPath, bool bSavingCache )
fclose( fp ); fclose( fp );
} }
void Song::SaveToSongFileAndDWI() void Song::SaveToDWIFile()
{ {
LOG->Trace( "Song::SaveToSongFileAndDWI()" ); LOG->Trace( "Song::SaveToSongFileAndDWI()" );
SaveToSongFile();
CString sPath = GetSongFilePath(); CString sPath = GetSongFilePath();
sPath.Replace( ".sm", ".dwi" ); sPath.Replace( ".sm", ".dwi" );
+2 -2
View File
@@ -59,7 +59,7 @@ IntDir=.\../Release6
TargetDir=\stepmania\stepmania TargetDir=\stepmania\stepmania
TargetName=StepMania TargetName=StepMania
SOURCE="$(InputPath)" SOURCE="$(InputPath)"
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
# End Special Build Tool # End Special Build Tool
@@ -94,7 +94,7 @@ IntDir=.\../Debug6
TargetDir=\stepmania\stepmania TargetDir=\stepmania\stepmania
TargetName=StepMania-debug TargetName=StepMania-debug
SOURCE="$(InputPath)" SOURCE="$(InputPath)"
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
# End Special Build Tool # End Special Build Tool
+2 -2
View File
@@ -62,9 +62,9 @@ public:
void TidyUpData(); // call after loading to clean up invalid data void TidyUpData(); // call after loading to clean up invalid data
void SaveToSMFile( CString sPath, bool bSavingCache ); void SaveToSMFile( CString sPath, bool bSavingCache );
void SaveToSongFileAndDWI(); // saves SM, then saves DWI so that the SM is the master copy and NoteTypes not supported by DWI are not lost void Save(); // saves SM and DWI
void SaveToCacheFile(); void SaveToCacheFile();
void SaveToSongFile(); // no path means save to SongFilePath void SaveToDWIFile();
const CString &GetSongFilePath() const; const CString &GetSongFilePath() const;
CString GetCacheFilePath() const; CString GetCacheFilePath() const;