Alt+B to bake random from song group

fix AV when deleting last BGChange in song
This commit is contained in:
Chris Danford
2005-06-07 09:42:57 +00:00
parent f39c970c43
commit 54962cbe9c
2 changed files with 55 additions and 41 deletions
+24 -11
View File
@@ -151,9 +151,12 @@ void ScreenEdit::InitEditMappings()
g_EditMappings.button[EDIT_BUTTON_OPEN_COURSE_MENU][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cc); g_EditMappings.button[EDIT_BUTTON_OPEN_COURSE_MENU][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cc);
g_EditMappings.button[EDIT_BUTTON_OPEN_INPUT_HELP][0] = DeviceInput(DEVICE_KEYBOARD, KEY_F1); g_EditMappings.button[EDIT_BUTTON_OPEN_INPUT_HELP][0] = DeviceInput(DEVICE_KEYBOARD, KEY_F1);
g_EditMappings.button[EDIT_BUTTON_NEW_BAKED_RANDOM_FILE_FOR_BGCHANGE][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cb); g_EditMappings.button[EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cb);
g_EditMappings.hold[EDIT_BUTTON_NEW_BAKED_RANDOM_FILE_FOR_BGCHANGE][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LCTRL); g_EditMappings.hold[EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LALT);
g_EditMappings.hold[EDIT_BUTTON_NEW_BAKED_RANDOM_FILE_FOR_BGCHANGE][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RCTRL); g_EditMappings.hold[EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RALT);
g_EditMappings.button[EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP_AND_GENRE][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cb);
g_EditMappings.hold[EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP_AND_GENRE][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LCTRL);
g_EditMappings.hold[EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP_AND_GENRE][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RCTRL);
g_EditMappings.button[EDIT_BUTTON_PLAY_FROM_START][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cp); g_EditMappings.button[EDIT_BUTTON_PLAY_FROM_START][0] = DeviceInput(DEVICE_KEYBOARD, KEY_Cp);
g_EditMappings.hold[EDIT_BUTTON_PLAY_FROM_START][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LCTRL); g_EditMappings.hold[EDIT_BUTTON_PLAY_FROM_START][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LCTRL);
@@ -503,7 +506,7 @@ static bool EnabledIfSet2GlobalMovie() { return ScreenMiniMenu::s_viLastAnsw
static bool EnabledIfSet2GlobalMovieSongGroup() { return ScreenMiniMenu::s_viLastAnswers[ScreenEdit::file2_type] == global_movie_song_group && !g_BackgroundChange.rows[ScreenEdit::file2_global_movie_song_group].choices.empty(); } static bool EnabledIfSet2GlobalMovieSongGroup() { return ScreenMiniMenu::s_viLastAnswers[ScreenEdit::file2_type] == global_movie_song_group && !g_BackgroundChange.rows[ScreenEdit::file2_global_movie_song_group].choices.empty(); }
static bool EnabledIfSet2GlobalMovieSongGroupAndGenre() { return ScreenMiniMenu::s_viLastAnswers[ScreenEdit::file2_type] == global_movie_song_group_and_genre && !g_BackgroundChange.rows[ScreenEdit::file2_global_movie_song_group_and_genre].choices.empty(); } static bool EnabledIfSet2GlobalMovieSongGroupAndGenre() { return ScreenMiniMenu::s_viLastAnswers[ScreenEdit::file2_type] == global_movie_song_group_and_genre && !g_BackgroundChange.rows[ScreenEdit::file2_global_movie_song_group_and_genre].choices.empty(); }
static CString GetOneBakedRandomFile( Song *pSong ) static CString GetOneBakedRandomFile( Song *pSong, bool bTryGenre = true )
{ {
vector<CString> vsPathsOut; vector<CString> vsPathsOut;
vector<CString> vsNamesOut; vector<CString> vsNamesOut;
@@ -511,7 +514,8 @@ static CString GetOneBakedRandomFile( Song *pSong )
pSong, pSong,
"", "",
vsPathsOut, vsPathsOut,
vsNamesOut ); vsNamesOut,
bTryGenre );
if( !vsNamesOut.empty() ) if( !vsNamesOut.empty() )
return vsNamesOut[rand()%vsNamesOut.size()]; return vsNamesOut[rand()%vsNamesOut.size()];
else else
@@ -1406,9 +1410,12 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
SCREENMAN->MiniMenu( &g_CourseMode, SM_BackFromCourseModeMenu ); SCREENMAN->MiniMenu( &g_CourseMode, SM_BackFromCourseModeMenu );
break; break;
} }
case EDIT_BUTTON_NEW_BAKED_RANDOM_FILE_FOR_BGCHANGE: case EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP:
case EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP_AND_GENRE:
{ {
if( GetOneBakedRandomFile(m_pSong).empty() ) bool bTryGenre = EditB == EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP_AND_GENRE;
CString sName = GetOneBakedRandomFile(m_pSong, bTryGenre);
if( sName.empty() )
{ {
SCREENMAN->PlayInvalidSound(); SCREENMAN->PlayInvalidSound();
SCREENMAN->SystemMessage( "No backgrounds available" ); SCREENMAN->SystemMessage( "No backgrounds available" );
@@ -1426,9 +1433,10 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
bAlreadyBGChangeHere = true; bAlreadyBGChangeHere = true;
bgChange = *bgc; bgChange = *bgc;
m_pSong->GetBackgroundChanges(iLayer).erase( bgc ); m_pSong->GetBackgroundChanges(iLayer).erase( bgc );
break;
} }
} }
bgChange.m_def.m_sFile1 = GetOneBakedRandomFile( m_pSong ); bgChange.m_def.m_sFile1 = sName;
m_pSong->AddBackgroundChange( iLayer, bgChange ); m_pSong->AddBackgroundChange( iLayer, bgChange );
m_soundMarker.Play(); m_soundMarker.Play();
} }
@@ -2733,9 +2741,6 @@ void ScreenEdit::HandleBGChangeChoice( BGChangeChoice c, const vector<int> &iAns
} }
} }
if( c == delete_change )
return; // don't add
newChange.m_fStartBeat = GAMESTATE->m_fSongBeat; newChange.m_fStartBeat = GAMESTATE->m_fSongBeat;
newChange.m_fRate = strtof( g_BackgroundChange.rows[rate].choices[iAnswers[rate]], NULL )/100.f; newChange.m_fRate = strtof( g_BackgroundChange.rows[rate].choices[iAnswers[rate]], NULL )/100.f;
newChange.m_sTransition = g_BackgroundChange.rows[transition].choices[iAnswers[transition]]; newChange.m_sTransition = g_BackgroundChange.rows[transition].choices[iAnswers[transition]];
@@ -2781,7 +2786,15 @@ void ScreenEdit::HandleBGChangeChoice( BGChangeChoice c, const vector<int> &iAns
break; break;
} }
if( c == delete_change || newChange.m_def.m_sFile1.empty() )
{
// don't add
}
else
{
m_pSong->AddBackgroundChange( g_CurrentBGChangeLayer, newChange ); m_pSong->AddBackgroundChange( g_CurrentBGChangeLayer, newChange );
}
g_CurrentBGChangeLayer = BACKGROUND_LAYER_INVALID; g_CurrentBGChangeLayer = BACKGROUND_LAYER_INVALID;
} }
+2 -1
View File
@@ -64,7 +64,8 @@ enum EditButton
EDIT_BUTTON_OPEN_COURSE_MENU, EDIT_BUTTON_OPEN_COURSE_MENU,
EDIT_BUTTON_OPEN_INPUT_HELP, EDIT_BUTTON_OPEN_INPUT_HELP,
EDIT_BUTTON_NEW_BAKED_RANDOM_FILE_FOR_BGCHANGE, EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP,
EDIT_BUTTON_BAKE_RANDOM_FROM_SONG_GROUP_AND_GENRE,
EDIT_BUTTON_PLAY_FROM_START, EDIT_BUTTON_PLAY_FROM_START,
EDIT_BUTTON_PLAY_FROM_CURSOR, EDIT_BUTTON_PLAY_FROM_CURSOR,