fixed a bunch of DWI save bugs.
This commit is contained in:
+14
-14
@@ -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,
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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 )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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 )
|
||||||
|
|||||||
@@ -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
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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, "," );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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" );
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user