fix AV if create new steps then back out w/o saving

This commit is contained in:
Chris Danford
2005-03-08 22:21:18 +00:00
parent 21ae0fc658
commit 359b6d14c9
+11 -7
View File
@@ -765,6 +765,9 @@ void ScreenEdit::Update( float fDeltaTime )
void ScreenEdit::UpdateTextInfo() void ScreenEdit::UpdateTextInfo()
{ {
if( m_pSteps == NULL )
return;
int iNumTapNotes = m_NoteDataEdit.GetNumTapNotes(); int iNumTapNotes = m_NoteDataEdit.GetNumTapNotes();
int iNumHoldNotes = m_NoteDataEdit.GetNumHoldNotes(); int iNumHoldNotes = m_NoteDataEdit.GetNumHoldNotes();
@@ -1502,12 +1505,8 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
switch( SM ) switch( SM )
{ {
case SM_GoToNextScreen: case SM_GoToNextScreen:
CopyFromLastSave();
SCREENMAN->SetNewScreen( "ScreenEditMenu" ); SCREENMAN->SetNewScreen( "ScreenEditMenu" );
GAMESTATE->m_bEditing = false; GAMESTATE->m_bEditing = false;
break; break;
case SM_BackFromMainMenu: case SM_BackFromMainMenu:
HandleMainMenuChoice( (MainMenuChoice)ScreenMiniMenu::s_iLastRowCode, ScreenMiniMenu::s_iLastAnswers ); HandleMainMenuChoice( (MainMenuChoice)ScreenMiniMenu::s_iLastRowCode, ScreenMiniMenu::s_iLastAnswers );
@@ -1591,7 +1590,6 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
if( ScreenPrompt::s_LastAnswer == ANSWER_YES ) if( ScreenPrompt::s_LastAnswer == ANSWER_YES )
{ {
CopyFromLastSave(); CopyFromLastSave();
m_pSteps->GetNoteData( m_NoteDataEdit ); m_pSteps->GetNoteData( m_NoteDataEdit );
} }
break; break;
@@ -1603,6 +1601,7 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
case SM_DoExit: case SM_DoExit:
if( ScreenPrompt::s_LastAnswer != ANSWER_CANCEL ) if( ScreenPrompt::s_LastAnswer != ANSWER_CANCEL )
{ {
// IMPORTANT: CopyFromLastSave before deleteing the Steps below
CopyFromLastSave(); CopyFromLastSave();
// If these steps have never been saved, then we should delete them. // If these steps have never been saved, then we should delete them.
@@ -1613,6 +1612,8 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
{ {
Song* pSong = GAMESTATE->m_pCurSong; Song* pSong = GAMESTATE->m_pCurSong;
pSong->RemoveSteps( pSteps ); pSong->RemoveSteps( pSteps );
m_pSteps = NULL;
GAMESTATE->m_pCurSteps[PLAYER_1].Set( NULL );
} }
m_Out.StartTransitioning( SM_GoToNextScreen ); m_Out.StartTransitioning( SM_GoToNextScreen );
@@ -2421,13 +2422,16 @@ void ScreenEdit::SetupCourseAttacks()
void ScreenEdit::CopyToLastSave() void ScreenEdit::CopyToLastSave()
{ {
m_songLastSave = *GAMESTATE->m_pCurSong; m_songLastSave = *GAMESTATE->m_pCurSong;
m_stepsLastSave = *GAMESTATE->m_pCurSteps[PLAYER_1]; if( GAMESTATE->m_pCurSteps[PLAYER_1] )
m_stepsLastSave = *GAMESTATE->m_pCurSteps[PLAYER_1];
} }
void ScreenEdit::CopyFromLastSave() void ScreenEdit::CopyFromLastSave()
{ {
*GAMESTATE->m_pCurSong = m_songLastSave; *GAMESTATE->m_pCurSong = m_songLastSave;
*GAMESTATE->m_pCurSteps[PLAYER_1] = m_stepsLastSave; if( GAMESTATE->m_pCurSteps[PLAYER_1] )
*GAMESTATE->m_pCurSteps[PLAYER_1] = m_stepsLastSave;
} }
/* /*