[default -> sm130futures] Obvious.
This commit is contained in:
@@ -26,6 +26,11 @@ It depends on who you ask.
|
||||
It could be v1.2.5, it could be v1.3.0, it could even be StepMania 5.
|
||||
We will wait and see.
|
||||
|
||||
20110405
|
||||
--------
|
||||
* [ScreenEdit] Allow modifying the #DISPLAYBPM traits in the editor. Look in
|
||||
Edit Song Info to find it. [Wolfman2000]
|
||||
|
||||
20110402
|
||||
--------
|
||||
* Fix a crash (issue 247) when exiting Practice mode from dance-solo,
|
||||
|
||||
@@ -534,6 +534,7 @@ x2.5=2.5x
|
||||
8=8
|
||||
8th=8th
|
||||
9=9
|
||||
Actual=Actual
|
||||
Add=Additive
|
||||
All Music=All Music
|
||||
AllDifficulties=All Difficulties
|
||||
@@ -706,6 +707,7 @@ Song BGAnimation=Song BGAnimation
|
||||
Song Bitmap=Song Bitmap
|
||||
Song Movie=Song Movie
|
||||
Space=Space
|
||||
Specified=Specified
|
||||
Split=Split
|
||||
Standard=Standard
|
||||
Start=Start
|
||||
@@ -822,6 +824,7 @@ Delete=Delete
|
||||
Delete beat and shift up=Delete beat and shift up
|
||||
Description=Description
|
||||
Difficulty=Difficulty
|
||||
Display BPM=Display BPM
|
||||
DisplayAspectRatio=Aspect Ratio
|
||||
DisplayColorDepth=Display Color
|
||||
DisplayResolution=Display Resolution
|
||||
@@ -902,9 +905,11 @@ Low Meter=Low Meter
|
||||
Advanced Options=Advanced Options
|
||||
Main title=Main title
|
||||
Main title transliteration=Main title transliteration
|
||||
Max BPM=Max Specified BPM
|
||||
MaxTextureResolution=Texture Resolution
|
||||
MenuTimer=Menu Timer
|
||||
Meter=Meter
|
||||
Min BPM=Min Specified BPM
|
||||
Mines=Mines
|
||||
MoveRandomToEnd=Random At End
|
||||
More Options=More Options
|
||||
@@ -1225,6 +1230,8 @@ Enter a new main title transliteration.=Enter a new main title transliteration.
|
||||
Enter a new main title.=Enter a new main title.
|
||||
Enter a new sub title transliteration.=Enter a new sub title transliteration.
|
||||
Enter a new sub title.=Enter a new sub title.
|
||||
Enter a new min BPM.=Enter the minimum displayed BPM.
|
||||
Enter a new max BPM.=Enter the maximum displayed BPM.
|
||||
More than %d notes per measure is not allowed. This change has been reverted.=More than %d notes per measure is not allowed. This change has been reverted.
|
||||
No backgrounds available=No backgrounds available
|
||||
EditHelpText=Up/Down:\n change beat\nLeft/Right:\n change snap\nNumber keys:\n add/remove\n tap note\nCreate hold note:\n Hold a number\n while moving\n Up or Down\nCreate roll note:\n Hold Shift,\n then create a\n hold note.\nSpace bar:\n Set area\n marker\nEnter:\n Area Menu\nEscape:\n Main Menu\nF1:\n Show help\n
|
||||
|
||||
+3
-3
@@ -180,8 +180,8 @@ void BPMDisplay::SetBpmFromSong( const Song* pSong )
|
||||
ASSERT( pSong );
|
||||
switch( pSong->m_DisplayBPMType )
|
||||
{
|
||||
case Song::DISPLAY_ACTUAL:
|
||||
case Song::DISPLAY_SPECIFIED:
|
||||
case DISPLAY_BPM_ACTUAL:
|
||||
case DISPLAY_BPM_SPECIFIED:
|
||||
{
|
||||
DisplayBpms bpms;
|
||||
pSong->GetDisplayBpms( bpms );
|
||||
@@ -189,7 +189,7 @@ void BPMDisplay::SetBpmFromSong( const Song* pSong )
|
||||
m_fCycleTime = 1.0f;
|
||||
}
|
||||
break;
|
||||
case Song::DISPLAY_RANDOM:
|
||||
case DISPLAY_BPM_RANDOM:
|
||||
CycleRandomly();
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -500,18 +500,18 @@ bool DWILoader::LoadFromDir( const RString &sPath_, Song &out, set<RString> &Bla
|
||||
* worth bothering with since we don't display fractional BPM anyway.) */
|
||||
if( sscanf( sParams[1], "%i..%i", &iMin, &iMax ) == 2 )
|
||||
{
|
||||
out.m_DisplayBPMType = Song::DISPLAY_SPECIFIED;
|
||||
out.m_DisplayBPMType = DISPLAY_BPM_SPECIFIED;
|
||||
out.m_fSpecifiedBPMMin = (float) iMin;
|
||||
out.m_fSpecifiedBPMMax = (float) iMax;
|
||||
}
|
||||
else if( sscanf( sParams[1], "%i", &iMin ) == 1 )
|
||||
{
|
||||
out.m_DisplayBPMType = Song::DISPLAY_SPECIFIED;
|
||||
out.m_DisplayBPMType = DISPLAY_BPM_SPECIFIED;
|
||||
out.m_fSpecifiedBPMMin = out.m_fSpecifiedBPMMax = (float) iMin;
|
||||
}
|
||||
else
|
||||
{
|
||||
out.m_DisplayBPMType = Song::DISPLAY_RANDOM;
|
||||
out.m_DisplayBPMType = DISPLAY_BPM_RANDOM;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -581,10 +581,10 @@ bool SMLoader::LoadFromSMFile( const RString &sPath, Song &out, bool bFromCache
|
||||
{
|
||||
// #DISPLAYBPM:[xxx][xxx:xxx]|[*];
|
||||
if( sParams[1] == "*" )
|
||||
out.m_DisplayBPMType = Song::DISPLAY_RANDOM;
|
||||
out.m_DisplayBPMType = DISPLAY_BPM_RANDOM;
|
||||
else
|
||||
{
|
||||
out.m_DisplayBPMType = Song::DISPLAY_SPECIFIED;
|
||||
out.m_DisplayBPMType = DISPLAY_BPM_SPECIFIED;
|
||||
out.m_fSpecifiedBPMMin = StringToFloat( sParams[1] );
|
||||
if( sParams[2].empty() )
|
||||
out.m_fSpecifiedBPMMax = out.m_fSpecifiedBPMMin;
|
||||
|
||||
@@ -230,10 +230,10 @@ bool SMALoader::LoadFromSMAFile( const RString &sPath, Song &out )
|
||||
{
|
||||
// #DISPLAYBPM:[xxx][xxx:xxx]|[*];
|
||||
if( sParams[1] == "*" )
|
||||
out.m_DisplayBPMType = Song::DISPLAY_RANDOM;
|
||||
out.m_DisplayBPMType = DISPLAY_BPM_RANDOM;
|
||||
else
|
||||
{
|
||||
out.m_DisplayBPMType = Song::DISPLAY_SPECIFIED;
|
||||
out.m_DisplayBPMType = DISPLAY_BPM_SPECIFIED;
|
||||
out.m_fSpecifiedBPMMin = StringToFloat( sParams[1] );
|
||||
if( sParams[2].empty() )
|
||||
out.m_fSpecifiedBPMMax = out.m_fSpecifiedBPMMin;
|
||||
|
||||
@@ -256,10 +256,10 @@ bool SSCLoader::LoadFromSSCFile( const RString &sPath, Song &out, bool bFromCach
|
||||
{
|
||||
// #DISPLAYBPM:[xxx][xxx:xxx]|[*];
|
||||
if( sParams[1] == "*" )
|
||||
out.m_DisplayBPMType = Song::DISPLAY_RANDOM;
|
||||
out.m_DisplayBPMType = DISPLAY_BPM_RANDOM;
|
||||
else
|
||||
{
|
||||
out.m_DisplayBPMType = Song::DISPLAY_SPECIFIED;
|
||||
out.m_DisplayBPMType = DISPLAY_BPM_SPECIFIED;
|
||||
out.m_fSpecifiedBPMMin = StringToFloat( sParams[1] );
|
||||
if( sParams[2].empty() )
|
||||
out.m_fSpecifiedBPMMax = out.m_fSpecifiedBPMMin;
|
||||
|
||||
@@ -360,16 +360,16 @@ bool NotesWriterDWI::Write( RString sPath, const Song &out )
|
||||
f.PutLine( ssprintf("#CDTITLE:%s;", DwiEscape(out.m_sCDTitleFile).c_str()) );
|
||||
switch( out.m_DisplayBPMType )
|
||||
{
|
||||
case Song::DISPLAY_ACTUAL:
|
||||
case DISPLAY_BPM_ACTUAL:
|
||||
// write nothing
|
||||
break;
|
||||
case Song::DISPLAY_SPECIFIED:
|
||||
case DISPLAY_BPM_SPECIFIED:
|
||||
if( out.m_fSpecifiedBPMMin == out.m_fSpecifiedBPMMax )
|
||||
f.PutLine( ssprintf("#DISPLAYBPM:%i;\n", (int) out.m_fSpecifiedBPMMin) );
|
||||
else
|
||||
f.PutLine( ssprintf("#DISPLAYBPM:%i..%i;\n", (int) out.m_fSpecifiedBPMMin, (int) out.m_fSpecifiedBPMMax) );
|
||||
break;
|
||||
case Song::DISPLAY_RANDOM:
|
||||
case DISPLAY_BPM_RANDOM:
|
||||
f.PutLine( "#DISPLAYBPM:*" );
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -94,17 +94,17 @@ static void WriteGlobalTags( RageFile &f, const Song &out )
|
||||
|
||||
switch( out.m_DisplayBPMType )
|
||||
{
|
||||
case Song::DISPLAY_ACTUAL:
|
||||
case DISPLAY_BPM_ACTUAL:
|
||||
// write nothing
|
||||
break;
|
||||
case Song::DISPLAY_SPECIFIED:
|
||||
case DISPLAY_BPM_SPECIFIED:
|
||||
if( out.m_fSpecifiedBPMMin == out.m_fSpecifiedBPMMax )
|
||||
f.PutLine( ssprintf( "#DISPLAYBPM:%.3f;", out.m_fSpecifiedBPMMin ) );
|
||||
else
|
||||
f.PutLine( ssprintf( "#DISPLAYBPM:%.3f:%.3f;",
|
||||
out.m_fSpecifiedBPMMin, out.m_fSpecifiedBPMMax ) );
|
||||
break;
|
||||
case Song::DISPLAY_RANDOM:
|
||||
case DISPLAY_BPM_RANDOM:
|
||||
f.PutLine( ssprintf( "#DISPLAYBPM:*;" ) );
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -91,16 +91,16 @@ static void WriteGlobalTags( RageFile &f, const Song &out )
|
||||
|
||||
switch( out.m_DisplayBPMType )
|
||||
{
|
||||
case Song::DISPLAY_ACTUAL:
|
||||
case DISPLAY_BPM_ACTUAL:
|
||||
// write nothing
|
||||
break;
|
||||
case Song::DISPLAY_SPECIFIED:
|
||||
case DISPLAY_BPM_SPECIFIED:
|
||||
if( out.m_fSpecifiedBPMMin == out.m_fSpecifiedBPMMax )
|
||||
f.PutLine( ssprintf( "#DISPLAYBPM:%.6f;", out.m_fSpecifiedBPMMin ) );
|
||||
else
|
||||
f.PutLine( ssprintf( "#DISPLAYBPM:%.6f:%.6f;", out.m_fSpecifiedBPMMin, out.m_fSpecifiedBPMMax ) );
|
||||
break;
|
||||
case Song::DISPLAY_RANDOM:
|
||||
case DISPLAY_BPM_RANDOM:
|
||||
f.PutLine( ssprintf( "#DISPLAYBPM:*;" ) );
|
||||
break;
|
||||
}
|
||||
|
||||
+34
-3
@@ -548,7 +548,10 @@ static MenuDef g_SongInformation(
|
||||
MenuRowDef( ScreenEdit::main_title_transliteration, "Main title transliteration", true, EditMode_Practice, true, true, 0, NULL ),
|
||||
MenuRowDef( ScreenEdit::sub_title_transliteration, "Sub title transliteration", true, EditMode_Practice, true, true, 0, NULL ),
|
||||
MenuRowDef( ScreenEdit::artist_transliteration, "Artist transliteration", true, EditMode_Practice, true, true, 0, NULL ),
|
||||
MenuRowDef( ScreenEdit::last_beat_hint, "Last beat hint", true, EditMode_Full, true, true, 0, NULL )
|
||||
MenuRowDef( ScreenEdit::last_beat_hint, "Last beat hint", true, EditMode_Full, true, true, 0, NULL ),
|
||||
MenuRowDef( ScreenEdit::display_bpm, "Display BPM", true, EditMode_Full, true, true, 0, "Actual", "Specified", "Random" ),
|
||||
MenuRowDef( ScreenEdit::min_bpm, "Min BPM", true, EditMode_Full, true, true, 0, NULL ),
|
||||
MenuRowDef( ScreenEdit::min_bpm, "Max BPM", true, EditMode_Full, true, true, 0, NULL )
|
||||
);
|
||||
|
||||
static MenuDef g_TimingDataInformation(
|
||||
@@ -3013,6 +3016,16 @@ static void ChangeLastBeatHint( const RString &sNew )
|
||||
GAMESTATE->m_pCurSong->m_fSpecifiedLastBeat = StringToFloat( sNew );
|
||||
}
|
||||
|
||||
static void ChangeMinBPM( const RString &sNew )
|
||||
{
|
||||
GAMESTATE->m_pCurSong->m_fSpecifiedBPMMin = StringToFloat( sNew );
|
||||
}
|
||||
|
||||
static void ChangeMaxBPM( const RString &sNew )
|
||||
{
|
||||
GAMESTATE->m_pCurSong->m_fSpecifiedBPMMax = StringToFloat( sNew );
|
||||
}
|
||||
|
||||
// End helper functions
|
||||
|
||||
static LocalizedString REVERT_LAST_SAVE ( "ScreenEdit", "Do you want to revert to your last save?" );
|
||||
@@ -3204,6 +3217,9 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector<int> &iAns
|
||||
g_SongInformation.rows[sub_title_transliteration].SetOneUnthemedChoice( pSong->m_sSubTitleTranslit );
|
||||
g_SongInformation.rows[artist_transliteration].SetOneUnthemedChoice( pSong->m_sArtistTranslit );
|
||||
g_SongInformation.rows[last_beat_hint].SetOneUnthemedChoice( ssprintf("%.5f", pSong->m_fSpecifiedLastBeat) );
|
||||
g_SongInformation.rows[display_bpm].iDefaultChoice = pSong->m_DisplayBPMType;
|
||||
g_SongInformation.rows[min_bpm].SetOneUnthemedChoice( ssprintf("%.5f", pSong->m_fSpecifiedBPMMin) );
|
||||
g_SongInformation.rows[max_bpm].SetOneUnthemedChoice( ssprintf("%.5f", pSong->m_fSpecifiedBPMMax) );
|
||||
|
||||
EditMiniMenu( &g_SongInformation, SM_BackFromSongInformation );
|
||||
}
|
||||
@@ -3609,13 +3625,15 @@ static LocalizedString ENTER_MAIN_TITLE_TRANSLIT ("ScreenEdit","Enter a new main
|
||||
static LocalizedString ENTER_SUB_TITLE_TRANSLIT ("ScreenEdit","Enter a new sub title transliteration.");
|
||||
static LocalizedString ENTER_ARTIST_TRANSLIT ("ScreenEdit","Enter a new artist transliteration.");
|
||||
static LocalizedString ENTER_LAST_BEAT_HINT ("ScreenEdit","Enter a new last beat hint.");
|
||||
static LocalizedString ENTER_MIN_BPM ("ScreenEdit","Enter a new min BPM.");
|
||||
static LocalizedString ENTER_MAX_BPM ("ScreenEdit","Enter a new max BPM.");
|
||||
void ScreenEdit::HandleSongInformationChoice( SongInformationChoice c, const vector<int> &iAnswers )
|
||||
{
|
||||
Song* pSong = GAMESTATE->m_pCurSong;
|
||||
pSong->m_DisplayBPMType = static_cast<DisplayBPM>(iAnswers[display_bpm]);
|
||||
|
||||
switch( c )
|
||||
{
|
||||
DEFAULT_FAIL(c);
|
||||
case main_title:
|
||||
ScreenTextEntry::TextEntry( SM_None, ENTER_MAIN_TITLE, pSong->m_sMainTitle, 100, NULL, ChangeMainTitle, NULL );
|
||||
break;
|
||||
@@ -3641,7 +3659,20 @@ void ScreenEdit::HandleSongInformationChoice( SongInformationChoice c, const vec
|
||||
ScreenTextEntry::TextEntry( SM_None, ENTER_ARTIST_TRANSLIT, pSong->m_sArtistTranslit, 100, NULL, ChangeArtistTranslit, NULL );
|
||||
break;
|
||||
case last_beat_hint:
|
||||
ScreenTextEntry::TextEntry( SM_None, ENTER_LAST_BEAT_HINT, ssprintf("%.5f", pSong->m_fSpecifiedLastBeat), 20, ScreenTextEntry::FloatValidate, ChangeLastBeatHint, NULL );
|
||||
ScreenTextEntry::TextEntry( SM_None, ENTER_LAST_BEAT_HINT,
|
||||
ssprintf("%.5f", pSong->m_fSpecifiedLastBeat), 20,
|
||||
ScreenTextEntry::FloatValidate, ChangeLastBeatHint, NULL );
|
||||
break;
|
||||
case min_bpm:
|
||||
ScreenTextEntry::TextEntry( SM_None, ENTER_MIN_BPM,
|
||||
ssprintf("%.5f", pSong->m_fSpecifiedBPMMin), 20,
|
||||
ScreenTextEntry::FloatValidate, ChangeMinBPM, NULL );
|
||||
break;
|
||||
case max_bpm:
|
||||
ScreenTextEntry::TextEntry( SM_None, ENTER_MAX_BPM,
|
||||
ssprintf("%.5f", pSong->m_fSpecifiedBPMMax), 20,
|
||||
ScreenTextEntry::FloatValidate, ChangeMaxBPM, NULL );
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -445,6 +445,9 @@ public:
|
||||
sub_title_transliteration,
|
||||
artist_transliteration,
|
||||
last_beat_hint,
|
||||
display_bpm,
|
||||
min_bpm,
|
||||
max_bpm,
|
||||
NUM_SONG_INFORMATION_CHOICES
|
||||
};
|
||||
void HandleSongInformationChoice( SongInformationChoice c, const vector<int> &iAnswers );
|
||||
|
||||
+4
-4
@@ -74,7 +74,7 @@ Song::Song()
|
||||
m_fSpecifiedLastBeat = -1;
|
||||
m_SelectionDisplay = SHOW_ALWAYS;
|
||||
m_bEnabled = true;
|
||||
m_DisplayBPMType = DISPLAY_ACTUAL;
|
||||
m_DisplayBPMType = DISPLAY_BPM_ACTUAL;
|
||||
m_fSpecifiedBPMMin = 0;
|
||||
m_fSpecifiedBPMMax = 0;
|
||||
m_bIsSymLink = false;
|
||||
@@ -147,7 +147,7 @@ void Song::AddLyricSegment( LyricSegment seg )
|
||||
|
||||
void Song::GetDisplayBpms( DisplayBpms &AddTo ) const
|
||||
{
|
||||
if( m_DisplayBPMType == DISPLAY_SPECIFIED )
|
||||
if( m_DisplayBPMType == DISPLAY_BPM_SPECIFIED )
|
||||
{
|
||||
AddTo.Add( m_fSpecifiedBPMMin );
|
||||
AddTo.Add( m_fSpecifiedBPMMax );
|
||||
@@ -1460,7 +1460,7 @@ bool Song::HasSignificantBpmChangesOrStops() const
|
||||
|
||||
// Don't consider BPM changes that only are only for maintaining sync as
|
||||
// a real BpmChange.
|
||||
if( m_DisplayBPMType == DISPLAY_SPECIFIED )
|
||||
if( m_DisplayBPMType == DISPLAY_BPM_SPECIFIED )
|
||||
{
|
||||
if( m_fSpecifiedBPMMin != m_fSpecifiedBPMMax )
|
||||
return true;
|
||||
@@ -1614,7 +1614,7 @@ public:
|
||||
}
|
||||
static int IsDisplayBpmRandom( T* p, lua_State *L )
|
||||
{
|
||||
lua_pushboolean( L, p->m_DisplayBPMType == Song::DISPLAY_RANDOM );
|
||||
lua_pushboolean( L, p->m_DisplayBPMType == DISPLAY_BPM_RANDOM );
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
+10
-1
@@ -35,6 +35,15 @@ enum BackgroundLayer
|
||||
NUM_BackgroundLayer,
|
||||
BACKGROUND_LAYER_Invalid
|
||||
};
|
||||
|
||||
/** @brief The different ways of displaying the BPM. */
|
||||
enum DisplayBPM
|
||||
{
|
||||
DISPLAY_BPM_ACTUAL, /**< Display the song's actual BPM. */
|
||||
DISPLAY_BPM_SPECIFIED, /**< Display a specified value or values. */
|
||||
DISPLAY_BPM_RANDOM /**< Display a random selection of BPMs. */
|
||||
};
|
||||
|
||||
/** @brief A custom foreach loop for the different background layers. */
|
||||
#define FOREACH_BackgroundLayer( bl ) FOREACH_ENUM( BackgroundLayer, bl )
|
||||
|
||||
@@ -222,7 +231,7 @@ public:
|
||||
float m_fSpecifiedLastBeat; // specified last beat of the song
|
||||
float m_fMusicSampleStartSeconds;
|
||||
float m_fMusicSampleLengthSeconds;
|
||||
enum { DISPLAY_ACTUAL, DISPLAY_SPECIFIED, DISPLAY_RANDOM } m_DisplayBPMType;
|
||||
DisplayBPM m_DisplayBPMType;
|
||||
float m_fSpecifiedBPMMin;
|
||||
float m_fSpecifiedBPMMax; // if a range, then Min != Max
|
||||
|
||||
|
||||
+3
-3
@@ -189,11 +189,11 @@ void Trail::GetDisplayBpms( DisplayBpms &AddTo ) const
|
||||
ASSERT( pSong );
|
||||
switch( pSong->m_DisplayBPMType )
|
||||
{
|
||||
case Song::DISPLAY_ACTUAL:
|
||||
case Song::DISPLAY_SPECIFIED:
|
||||
case DISPLAY_BPM_ACTUAL:
|
||||
case DISPLAY_BPM_SPECIFIED:
|
||||
pSong->GetDisplayBpms( AddTo );
|
||||
break;
|
||||
case Song::DISPLAY_RANDOM:
|
||||
case DISPLAY_BPM_RANDOM:
|
||||
AddTo.Add( -1 );
|
||||
break;
|
||||
DEFAULT_FAIL( pSong->m_DisplayBPMType );
|
||||
|
||||
Reference in New Issue
Block a user