Add: Manual (textually inputted) BPM Changes and Stops.
This commit is contained in:
@@ -26,6 +26,7 @@
|
|||||||
#include "ScreenDimensions.h"
|
#include "ScreenDimensions.h"
|
||||||
#include "ThemeMetric.h"
|
#include "ThemeMetric.h"
|
||||||
#include "PlayerState.h"
|
#include "PlayerState.h"
|
||||||
|
#include "ScreenTextEntry.h"
|
||||||
|
|
||||||
const float RECORD_HOLD_SECONDS = 0.3f;
|
const float RECORD_HOLD_SECONDS = 0.3f;
|
||||||
|
|
||||||
@@ -89,6 +90,8 @@ const ScreenMessage SM_BackFromPrefs = (ScreenMessage)(SM_User+11);
|
|||||||
const ScreenMessage SM_BackFromCourseModeMenu = (ScreenMessage)(SM_User+12);
|
const ScreenMessage SM_BackFromCourseModeMenu = (ScreenMessage)(SM_User+12);
|
||||||
const ScreenMessage SM_DoReloadFromDisk = (ScreenMessage)(SM_User+13);
|
const ScreenMessage SM_DoReloadFromDisk = (ScreenMessage)(SM_User+13);
|
||||||
const ScreenMessage SM_DoUpdateTextInfo = (ScreenMessage)(SM_User+14);
|
const ScreenMessage SM_DoUpdateTextInfo = (ScreenMessage)(SM_User+14);
|
||||||
|
const ScreenMessage SM_BackFromBPMChange = (ScreenMessage)(SM_User+15);
|
||||||
|
const ScreenMessage SM_BackFromStopChange = (ScreenMessage)(SM_User+16);
|
||||||
|
|
||||||
const CString HELP_TEXT =
|
const CString HELP_TEXT =
|
||||||
#if !defined(XBOX)
|
#if !defined(XBOX)
|
||||||
@@ -169,6 +172,8 @@ static const MenuRow g_MainMenuItems[] =
|
|||||||
{ "Player Options", true, 0, { NULL } },
|
{ "Player Options", true, 0, { NULL } },
|
||||||
{ "Song Options", true, 0, { NULL } },
|
{ "Song Options", true, 0, { NULL } },
|
||||||
{ "Edit Song Info", true, 0, { NULL } },
|
{ "Edit Song Info", true, 0, { NULL } },
|
||||||
|
{ "Edit BPM Change", true, 0, { NULL } },
|
||||||
|
{ "Edit Stop", true, 0, { NULL } },
|
||||||
{ "Add/Edit BG Change", true, 0, { NULL } },
|
{ "Add/Edit BG Change", true, 0, { NULL } },
|
||||||
{ "Play preview music", true, 0, { NULL } },
|
{ "Play preview music", true, 0, { NULL } },
|
||||||
{ "Preferences", true, 0, { NULL } },
|
{ "Preferences", true, 0, { NULL } },
|
||||||
@@ -1525,6 +1530,44 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
case SM_BackFromEditSongInfo:
|
case SM_BackFromEditSongInfo:
|
||||||
HandleEditSongInfoChoice( (EditSongInfoChoice)ScreenMiniMenu::s_iLastLine, ScreenMiniMenu::s_iLastAnswers );
|
HandleEditSongInfoChoice( (EditSongInfoChoice)ScreenMiniMenu::s_iLastLine, ScreenMiniMenu::s_iLastAnswers );
|
||||||
break;
|
break;
|
||||||
|
case SM_BackFromBPMChange:
|
||||||
|
{
|
||||||
|
float fBPM = atof( ScreenTextEntry::s_sLastAnswer.c_str() );
|
||||||
|
if ( fBPM <= 0 )
|
||||||
|
break;
|
||||||
|
m_pSong->SetBPMAtBeat( GAMESTATE->m_fSongBeat, fBPM );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SM_BackFromStopChange:
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
bool sentinel = false; //Tricky, we can't break out of this loop safely
|
||||||
|
for( i=0; (i<m_pSong->m_Timing.m_StopSegments.size()) && (!sentinel); i++ )
|
||||||
|
{
|
||||||
|
if( m_pSong->m_Timing.m_StopSegments[i].m_fStartBeat == GAMESTATE->m_fSongBeat )
|
||||||
|
sentinel = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( sentinel )
|
||||||
|
i--;
|
||||||
|
|
||||||
|
float fStop = atof( ScreenTextEntry::s_sLastAnswer.c_str() );
|
||||||
|
|
||||||
|
if( i == m_pSong->m_Timing.m_StopSegments.size() ) // there is no BPMSegment at the current beat
|
||||||
|
{
|
||||||
|
if ( fStop > 0 )
|
||||||
|
m_pSong->AddStopSegment( StopSegment(GAMESTATE->m_fSongBeat, fStop ) );
|
||||||
|
}
|
||||||
|
else // StopSegment being modified is m_Timing.m_StopSegments[i]
|
||||||
|
{
|
||||||
|
m_pSong->m_Timing.m_StopSegments[i].m_fStopSeconds = fStop;
|
||||||
|
if( m_pSong->m_Timing.m_StopSegments[i].m_fStopSeconds <= 0 )
|
||||||
|
m_pSong->m_Timing.m_StopSegments.erase( m_pSong->m_Timing.m_StopSegments.begin()+i,
|
||||||
|
m_pSong->m_Timing.m_StopSegments.begin()+i+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
case SM_BackFromBGChange:
|
case SM_BackFromBGChange:
|
||||||
HandleBGChangeChoice( (BGChangeChoice)ScreenMiniMenu::s_iLastLine, ScreenMiniMenu::s_iLastAnswers );
|
HandleBGChangeChoice( (BGChangeChoice)ScreenMiniMenu::s_iLastLine, ScreenMiniMenu::s_iLastAnswers );
|
||||||
break;
|
break;
|
||||||
@@ -1790,10 +1833,23 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, int* iAnswers )
|
|||||||
SCREENMAN->MiniMenu( &g_EditSongInfo, SM_BackFromEditSongInfo );
|
SCREENMAN->MiniMenu( &g_EditSongInfo, SM_BackFromEditSongInfo );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// case edit_bpm:
|
case edit_bpm:
|
||||||
// break;
|
SCREENMAN->TextEntry( SM_BackFromBPMChange, "Enter new BPM value.", ssprintf( "%.4f", m_pSong->GetBPMAtBeat( GAMESTATE->m_fSongBeat ) ) );
|
||||||
// case edit_stop:
|
break;
|
||||||
// break;
|
case edit_stop:
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
for( i=0; i<m_pSong->m_Timing.m_StopSegments.size(); i++ )
|
||||||
|
{
|
||||||
|
if( m_pSong->m_Timing.m_StopSegments[i].m_fStartBeat == GAMESTATE->m_fSongBeat )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ( i == m_pSong->m_Timing.m_StopSegments.size() )
|
||||||
|
SCREENMAN->TextEntry( SM_BackFromStopChange, "Enter new Stop value.", "0.00" );
|
||||||
|
else
|
||||||
|
SCREENMAN->TextEntry( SM_BackFromStopChange, "Enter new Stop value.", ssprintf( "%.4f", m_pSong->m_Timing.m_StopSegments[i].m_fStopSeconds ) );
|
||||||
|
break;
|
||||||
|
}
|
||||||
case edit_bg_change:
|
case edit_bg_change:
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -104,6 +104,8 @@ public:
|
|||||||
player_options,
|
player_options,
|
||||||
song_options,
|
song_options,
|
||||||
edit_song_info,
|
edit_song_info,
|
||||||
|
edit_bpm,
|
||||||
|
edit_stop,
|
||||||
edit_bg_change,
|
edit_bg_change,
|
||||||
play_preview_music,
|
play_preview_music,
|
||||||
preferences,
|
preferences,
|
||||||
|
|||||||
Reference in New Issue
Block a user