Combos branch: allow editing combo factor.

Need to check something on the default branch
before this gets pushed there: something may still
be off.
This commit is contained in:
Jason Felds
2011-03-05 01:44:58 -05:00
parent 994e7d9fa1
commit 6204de38a7
7 changed files with 63 additions and 9 deletions
+2
View File
@@ -842,6 +842,7 @@ Edit time signature=Edit time signature (not working yet)
Edit time signature (top)=Edit time signature (beats per measure) Edit time signature (top)=Edit time signature (beats per measure)
Edit time signature (bottom)=Edit time signature (single beat note value) Edit time signature (bottom)=Edit time signature (single beat note value)
Edit tickcount=Edit tickcount Edit tickcount=Edit tickcount
Edit combo=Edit combo
Editor options=Options Editor options=Options
EditorShowBGChangesPlay=Show Backgrounds EditorShowBGChangesPlay=Show Backgrounds
Effect=Effect Effect=Effect
@@ -1207,6 +1208,7 @@ Enter a new Delay value.=Enter a new Delay value.
Enter a new Time Signature numerator value.=Enter the number of beats per measure. Enter a new Time Signature numerator value.=Enter the number of beats per measure.
Enter a new Time Signature denominator value.=Enter the note value that represents one beat. Enter a new Time Signature denominator value.=Enter the note value that represents one beat.
Enter a new Tickcount value.=Enter a new Tickcount value. Enter a new Tickcount value.=Enter a new Tickcount value.
Enter a new Combo value.=Enter a new Combo value.
Enter a new artist transliteration.=Enter a new artist transliteration. Enter a new artist transliteration.=Enter a new artist transliteration.
Enter a new artist.=Enter a new artist. Enter a new artist.=Enter a new artist.
Enter a new genre.=Enter a new genre. Enter a new genre.=Enter a new genre.
+3
View File
@@ -956,18 +956,21 @@ StopColor=color("0.8,0.8,0,1")
DelayColor=color("0,0.8,0.8,1") DelayColor=color("0,0.8,0.8,1")
TimeSignatureColor=color("1,0.55,0,1") TimeSignatureColor=color("1,0.55,0,1")
TickcountColor=color("0,1,0,1") TickcountColor=color("0,1,0,1")
ComboColor=color("0.55,1,0,1")
# #
BPMIsLeftSide=true BPMIsLeftSide=true
StopIsLeftSide=true StopIsLeftSide=true
DelayIsLeftSide=true DelayIsLeftSide=true
TimeSignatureIsLeftSide=true TimeSignatureIsLeftSide=true
TickcountIsLeftSide=false TickcountIsLeftSide=false
ComboIsLeftSide=false
# #
BPMOffsetX=60 BPMOffsetX=60
StopOffsetX=10 StopOffsetX=10
DelayOffsetX=10 DelayOffsetX=10
TimeSignatureOffsetX=30 TimeSignatureOffsetX=30
TickcountOffsetX=10 TickcountOffsetX=10
ComboOffsetX=30
[PlayerStageStats] [PlayerStageStats]
# Original CVS Grading # Original CVS Grading
+33
View File
@@ -424,16 +424,19 @@ static ThemeMetric<RageColor> STOP_COLOR ( "NoteField", "StopColor" );
static ThemeMetric<RageColor> DELAY_COLOR ( "NoteField", "DelayColor" ); static ThemeMetric<RageColor> DELAY_COLOR ( "NoteField", "DelayColor" );
static ThemeMetric<RageColor> TIME_SIGNATURE_COLOR ( "NoteField", "TimeSignatureColor" ); static ThemeMetric<RageColor> TIME_SIGNATURE_COLOR ( "NoteField", "TimeSignatureColor" );
static ThemeMetric<RageColor> TICKCOUNT_COLOR ( "NoteField", "TickcountColor" ); static ThemeMetric<RageColor> TICKCOUNT_COLOR ( "NoteField", "TickcountColor" );
static ThemeMetric<RageColor> COMBO_COLOR ( "NoteField", "ComboColor" );
static ThemeMetric<bool> BPM_IS_LEFT_SIDE ( "NoteField", "BPMIsLeftSide" ); static ThemeMetric<bool> BPM_IS_LEFT_SIDE ( "NoteField", "BPMIsLeftSide" );
static ThemeMetric<bool> STOP_IS_LEFT_SIDE ( "NoteField", "StopIsLeftSide" ); static ThemeMetric<bool> STOP_IS_LEFT_SIDE ( "NoteField", "StopIsLeftSide" );
static ThemeMetric<bool> DELAY_IS_LEFT_SIDE ( "NoteField", "DelayIsLeftSide" ); static ThemeMetric<bool> DELAY_IS_LEFT_SIDE ( "NoteField", "DelayIsLeftSide" );
static ThemeMetric<bool> TIME_SIGNATURE_IS_LEFT_SIDE ( "NoteField", "TimeSignatureIsLeftSide" ); static ThemeMetric<bool> TIME_SIGNATURE_IS_LEFT_SIDE ( "NoteField", "TimeSignatureIsLeftSide" );
static ThemeMetric<bool> TICKCOUNT_IS_LEFT_SIDE ( "NoteField", "TickcountIsLeftSide" ); static ThemeMetric<bool> TICKCOUNT_IS_LEFT_SIDE ( "NoteField", "TickcountIsLeftSide" );
static ThemeMetric<bool> COMBO_IS_LEFT_SIDE ( "NoteField", "ComboIsLeftSide" );
static ThemeMetric<float> BPM_OFFSETX ( "NoteField", "BPMOffsetX" ); static ThemeMetric<float> BPM_OFFSETX ( "NoteField", "BPMOffsetX" );
static ThemeMetric<float> STOP_OFFSETX ( "NoteField", "StopOffsetX" ); static ThemeMetric<float> STOP_OFFSETX ( "NoteField", "StopOffsetX" );
static ThemeMetric<float> DELAY_OFFSETX ( "NoteField", "DelayOffsetX" ); static ThemeMetric<float> DELAY_OFFSETX ( "NoteField", "DelayOffsetX" );
static ThemeMetric<float> TIME_SIGNATURE_OFFSETX ( "NoteField", "TimeSignatureOffsetX" ); static ThemeMetric<float> TIME_SIGNATURE_OFFSETX ( "NoteField", "TimeSignatureOffsetX" );
static ThemeMetric<float> TICKCOUNT_OFFSETX ( "NoteField", "TickcountOffsetX" ); static ThemeMetric<float> TICKCOUNT_OFFSETX ( "NoteField", "TickcountOffsetX" );
static ThemeMetric<float> COMBO_OFFSETX ( "NoteField", "ComboOffsetX" );
void NoteField::DrawBPMText( const float fBeat, const float fBPM ) void NoteField::DrawBPMText( const float fBeat, const float fBPM )
{ {
@@ -512,6 +515,23 @@ void NoteField::DrawTickcountText( const float fBeat, int iTicks )
m_textMeasureNumber.Draw(); m_textMeasureNumber.Draw();
} }
void NoteField::DrawComboText( const float fBeat, int iCombo )
{
const float fYOffset = ArrowEffects::GetYOffset( m_pPlayerState, 0, fBeat );
const float fYPos = ArrowEffects::GetYPos( m_pPlayerState, 0, fYOffset, m_fYReverseOffsetPixels );
const float fZoom = ArrowEffects::GetZoom( m_pPlayerState );
const float xBase = GetWidth()/2.f;
const float xOffset = COMBO_OFFSETX * fZoom;
m_textMeasureNumber.SetZoom( fZoom );
m_textMeasureNumber.SetHorizAlign( COMBO_IS_LEFT_SIDE ? align_right : align_left );
m_textMeasureNumber.SetDiffuse( COMBO_COLOR );
m_textMeasureNumber.SetGlow( RageColor(1,1,1,RageFastCos(RageTimer::GetTimeSinceStartFast()*2)/2+0.5f) );
m_textMeasureNumber.SetText( ssprintf("%d", iCombo) );
m_textMeasureNumber.SetXY( (COMBO_IS_LEFT_SIDE ? -xBase - xOffset : xBase + xOffset), fYPos );
m_textMeasureNumber.Draw();
}
void NoteField::DrawAttackText( const float fBeat, const Attack &attack ) void NoteField::DrawAttackText( const float fBeat, const Attack &attack )
{ {
const float fYOffset = ArrowEffects::GetYOffset( m_pPlayerState, 0, fBeat ); const float fYOffset = ArrowEffects::GetYOffset( m_pPlayerState, 0, fBeat );
@@ -776,6 +796,19 @@ void NoteField::DrawPrimitives()
DrawTickcountText( fBeat, tTickcountSegments[i].m_iTicks ); DrawTickcountText( fBeat, tTickcountSegments[i].m_iTicks );
} }
} }
// Combo text
const vector<ComboSegment> &tComboSegments = GAMESTATE->m_pCurSong->m_Timing.m_ComboSegments;
for( unsigned i=0; i<tComboSegments.size(); i++ )
{
if( tComboSegments[i].m_iStartRow >= iFirstRowToDraw &&
tComboSegments[i].m_iStartRow <= iLastRowToDraw)
{
float fBeat = NoteRowToBeat(tComboSegments[i].m_iStartRow);
if( IS_ON_SCREEN(fBeat) )
DrawComboText( fBeat, tComboSegments[i].m_iCombo );
}
}
// todo: add warp text -aj // todo: add warp text -aj
+1
View File
@@ -59,6 +59,7 @@ protected:
void DrawFreezeText( const float fBeat, const float fBPM, const float bDelay ); void DrawFreezeText( const float fBeat, const float fBPM, const float bDelay );
void DrawTimeSignatureText( const float fBeat, int iNumerator, int iDenominator ); void DrawTimeSignatureText( const float fBeat, int iNumerator, int iDenominator );
void DrawTickcountText( const float fBeat, int iTicks ); void DrawTickcountText( const float fBeat, int iTicks );
void DrawComboText( const float fBeat, int iCombo );
void DrawAttackText( const float fBeat, const Attack &attack ); void DrawAttackText( const float fBeat, const Attack &attack );
void DrawBGChangeText( const float fBeat, const RString sNewBGName ); void DrawBGChangeText( const float fBeat, const RString sNewBGName );
float GetWidth() const; float GetWidth() const;
+22 -1
View File
@@ -78,6 +78,7 @@ AutoScreenMessage( SM_BackFromDelayChange );
AutoScreenMessage( SM_BackFromTimeSignatureNumeratorChange ); AutoScreenMessage( SM_BackFromTimeSignatureNumeratorChange );
AutoScreenMessage( SM_BackFromTimeSignatureDenominatorChange ); AutoScreenMessage( SM_BackFromTimeSignatureDenominatorChange );
AutoScreenMessage( SM_BackFromTickcountChange ); AutoScreenMessage( SM_BackFromTickcountChange );
AutoScreenMessage( SM_BackFromComboChange );
AutoScreenMessage( SM_DoSaveAndExit ); AutoScreenMessage( SM_DoSaveAndExit );
AutoScreenMessage( SM_DoExit ); AutoScreenMessage( SM_DoExit );
AutoScreenMessage( SM_SaveSuccessful ); AutoScreenMessage( SM_SaveSuccessful );
@@ -578,7 +579,8 @@ static MenuDef g_TimingDataInformation(
MenuRowDef( ScreenEdit::delay, "Edit delay", true, EditMode_Full, true, true, 0, NULL ), MenuRowDef( ScreenEdit::delay, "Edit delay", true, EditMode_Full, true, true, 0, NULL ),
MenuRowDef( ScreenEdit::time_signature_numerator, "Edit time signature (top)", true, EditMode_Full, true, true, 0, NULL ), MenuRowDef( ScreenEdit::time_signature_numerator, "Edit time signature (top)", true, EditMode_Full, true, true, 0, NULL ),
MenuRowDef( ScreenEdit::time_signature_denominator, "Edit time signature (bottom)", true, EditMode_Full, true, true, 0, NULL ), MenuRowDef( ScreenEdit::time_signature_denominator, "Edit time signature (bottom)", true, EditMode_Full, true, true, 0, NULL ),
MenuRowDef( ScreenEdit::tickcount, "Edit tickcount", true, EditMode_Full, true, true, 0, NULL ) MenuRowDef( ScreenEdit::tickcount, "Edit tickcount", true, EditMode_Full, true, true, 0, NULL ),
MenuRowDef( ScreenEdit::combo, "Edit combo", true, EditMode_Full, true, true, 0, NULL )
); );
enum { song_bganimation, song_movie, song_bitmap, global_bganimation, global_movie, global_movie_song_group, global_movie_song_group_and_genre, dynamic_random, baked_random, none }; enum { song_bganimation, song_movie, song_bitmap, global_bganimation, global_movie, global_movie_song_group, global_movie_song_group_and_genre, dynamic_random, baked_random, none };
@@ -2651,6 +2653,15 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
} }
SetDirty( true ); SetDirty( true );
} }
else if ( SM == SM_BackFromComboChange )
{
int iCombo = atoi( ScreenTextEntry::s_sLastAnswer );
if ( iCombo >= 0 )
{
m_pSong->m_Timing.SetComboAtBeat( GAMESTATE->m_fSongBeat, iCombo );
}
SetDirty( true );
}
else if( SM == SM_BackFromBGChange ) else if( SM == SM_BackFromBGChange )
{ {
HandleBGChangeChoice( (BGChangeChoice)ScreenMiniMenu::s_iLastRowCode, ScreenMiniMenu::s_viLastAnswers ); HandleBGChangeChoice( (BGChangeChoice)ScreenMiniMenu::s_iLastRowCode, ScreenMiniMenu::s_viLastAnswers );
@@ -3169,6 +3180,7 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector<int> &iAns
g_TimingDataInformation.rows[time_signature_numerator].SetOneUnthemedChoice( ssprintf("%d", pTime.GetTimeSignatureNumeratorAtBeat( fBeat ) ) ); g_TimingDataInformation.rows[time_signature_numerator].SetOneUnthemedChoice( ssprintf("%d", pTime.GetTimeSignatureNumeratorAtBeat( fBeat ) ) );
g_TimingDataInformation.rows[time_signature_denominator].SetOneUnthemedChoice( ssprintf("%d", pTime.GetTimeSignatureDenominatorAtBeat( fBeat ) ) ); g_TimingDataInformation.rows[time_signature_denominator].SetOneUnthemedChoice( ssprintf("%d", pTime.GetTimeSignatureDenominatorAtBeat( fBeat ) ) );
g_TimingDataInformation.rows[tickcount].SetOneUnthemedChoice( ssprintf("%d", pTime.GetTickcountAtBeat( fBeat ) ) ); g_TimingDataInformation.rows[tickcount].SetOneUnthemedChoice( ssprintf("%d", pTime.GetTickcountAtBeat( fBeat ) ) );
g_TimingDataInformation.rows[combo].SetOneUnthemedChoice( ssprintf("%d", pTime.GetComboAtBeat( fBeat ) ) );
EditMiniMenu( &g_TimingDataInformation, SM_BackFromTimingDataInformation ); EditMiniMenu( &g_TimingDataInformation, SM_BackFromTimingDataInformation );
} }
@@ -3620,6 +3632,7 @@ static LocalizedString ENTER_DELAY_VALUE ( "ScreenEdit", "Enter a new Delay va
static LocalizedString ENTER_TIME_SIGNATURE_NUMERATOR_VALUE ( "ScreenEdit", "Enter a new Time Signature numerator value." ); static LocalizedString ENTER_TIME_SIGNATURE_NUMERATOR_VALUE ( "ScreenEdit", "Enter a new Time Signature numerator value." );
static LocalizedString ENTER_TIME_SIGNATURE_DENOMINATOR_VALUE ( "ScreenEdit", "Enter a new Time Signature denominator value." ); static LocalizedString ENTER_TIME_SIGNATURE_DENOMINATOR_VALUE ( "ScreenEdit", "Enter a new Time Signature denominator value." );
static LocalizedString ENTER_TICKCOUNT_VALUE ( "ScreenEdit", "Enter a new Tickcount value." ); static LocalizedString ENTER_TICKCOUNT_VALUE ( "ScreenEdit", "Enter a new Tickcount value." );
static LocalizedString ENTER_COMBO_VALUE ( "ScreenEdit", "Enter a new Combo value." );
void ScreenEdit::HandleTimingDataInformationChoice( TimingDataInformationChoice c, const vector<int> &iAnswers ) void ScreenEdit::HandleTimingDataInformationChoice( TimingDataInformationChoice c, const vector<int> &iAnswers )
{ {
switch( c ) switch( c )
@@ -3676,6 +3689,14 @@ void ScreenEdit::HandleTimingDataInformationChoice( TimingDataInformationChoice
2 2
); );
break; break;
case combo:
ScreenTextEntry::TextEntry(
SM_BackFromComboChange,
ENTER_COMBO_VALUE,
ssprintf( "%d", m_pSong->m_Timing.GetComboAtBeat( GAMESTATE->m_fSongBeat ) ),
4
);
break;
} }
} }
+1
View File
@@ -448,6 +448,7 @@ public:
time_signature_numerator, time_signature_numerator,
time_signature_denominator, time_signature_denominator,
tickcount, tickcount,
combo,
NUM_TIMING_DATA_INFORMATION_CHOICES NUM_TIMING_DATA_INFORMATION_CHOICES
}; };
+1 -8
View File
@@ -227,14 +227,7 @@ float TimingData::GetDelayAtRow( int iRow ) const
int TimingData::GetComboAtRow( int iNoteRow ) const int TimingData::GetComboAtRow( int iNoteRow ) const
{ {
for( unsigned i=0; i<m_ComboSegments.size(); i++ ) return m_ComboSegments[GetComboSegmentIndexAtRow( iNoteRow )].m_iCombo;
{
if( m_ComboSegments[i].m_iStartRow == iNoteRow )
{
return m_ComboSegments[i].m_iCombo;
}
}
return 0;
} }
int TimingData::GetWarpToRow( int iWarpBeginRow ) const int TimingData::GetWarpToRow( int iWarpBeginRow ) const