fix AV if create new steps then back out w/o saving
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user