From c8ffc122ab3a65609ade7b166fc6c05fd9ac8331 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Wed, 18 May 2005 03:31:36 +0000 Subject: [PATCH] re-add revert from disk --- stepmania/src/ScreenEdit.cpp | 34 ++++++++++++++++++++++++++++++++++ stepmania/src/ScreenEdit.h | 2 ++ 2 files changed, 36 insertions(+) diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index 31f48e0afc..95ccbe12b6 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -64,6 +64,7 @@ AutoScreenMessage( SM_BackFromInsertAttackPlayerOptions ) AutoScreenMessage( SM_BackFromPrefs ) AutoScreenMessage( SM_BackFromCourseModeMenu ) AutoScreenMessage( SM_DoRevertToLastSave ) +AutoScreenMessage( SM_DoRevertFromDisk ) AutoScreenMessage( SM_BackFromBPMChange ) AutoScreenMessage( SM_BackFromStopChange ) AutoScreenMessage( SM_DoSaveAndExit ) @@ -373,6 +374,7 @@ static Menu g_MainMenu( MenuRow( ScreenEdit::play_current_beat_to_end, "Play Current Beat to End", true, EDIT_MODE_PRACTICE, 0, NULL ), MenuRow( ScreenEdit::save, "Save", true, EDIT_MODE_HOME, 0, NULL ), MenuRow( ScreenEdit::revert_to_last_save, "Revert to Last Save", true, EDIT_MODE_HOME, 0, NULL ), + MenuRow( ScreenEdit::revert_from_disk, "Revert from Disk", true, EDIT_MODE_FULL, 0, NULL ), MenuRow( ScreenEdit::player_options, "Player Options", true, EDIT_MODE_PRACTICE, 0, NULL ), MenuRow( ScreenEdit::song_options, "Song Options", true, EDIT_MODE_PRACTICE, 0, NULL ), MenuRow( ScreenEdit::edit_song_info, "Edit Song Info", true, EDIT_MODE_FULL, 0, NULL ), @@ -1660,6 +1662,16 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM ) m_Undo.ClearAll(); } } + else if( SM == SM_DoRevertFromDisk ) + { + if( ScreenPrompt::s_LastAnswer == ANSWER_YES ) + { + RevertFromDisk(); + m_pSteps->GetNoteData( m_NoteDataEdit ); + m_bHasUndo = false; + m_Undo.ClearAll(); + } + } else if( SM == SM_DoSaveAndExit ) // just asked "save before exiting? yes, no, cancel" { switch( ScreenPrompt::s_LastAnswer ) @@ -1941,6 +1953,11 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector &iAns "Do you want to revert to your last save?\n\nThis will destroy all unsaved changes.", PROMPT_YES_NO, ANSWER_NO ); break; + case revert_from_disk: + SCREENMAN->Prompt( SM_DoRevertFromDisk, + "Do you want to revert from disk?\n\nThis will destroy all unsaved changes.", + PROMPT_YES_NO, ANSWER_NO ); + break; case player_options: SCREENMAN->AddNewScreenToTop( "ScreenPlayerOptionsEdit" ); break; @@ -2685,6 +2702,23 @@ void ScreenEdit::CopyFromLastSave() *GAMESTATE->m_pCurSteps[PLAYER_1] = m_stepsLastSave; } +void ScreenEdit::RevertFromDisk() +{ + StepsID id; + if( GAMESTATE->m_pCurSteps[PLAYER_1] ) + id.FromSteps( GAMESTATE->m_pCurSteps[PLAYER_1] ); + + CString sSongDir = GAMESTATE->m_pCurSong->GetSongDir(); + GAMESTATE->m_pCurSong->LoadFromSongDir( sSongDir ); + + if( id.IsValid() ) + GAMESTATE->m_pCurSteps[PLAYER_1].Set( id.ToSteps( GAMESTATE->m_pCurSong, false ) ); + + m_songLastSave = *GAMESTATE->m_pCurSong; + if( GAMESTATE->m_pCurSteps[PLAYER_1] ) + m_stepsLastSave = *GAMESTATE->m_pCurSteps[PLAYER_1]; +} + void ScreenEdit::SaveUndo() { m_bHasUndo = true; diff --git a/stepmania/src/ScreenEdit.h b/stepmania/src/ScreenEdit.h index 5425c4816e..ca2ddae434 100644 --- a/stepmania/src/ScreenEdit.h +++ b/stepmania/src/ScreenEdit.h @@ -201,6 +201,7 @@ protected: // used for reverting void CopyToLastSave(); void CopyFromLastSave(); + void RevertFromDisk(); Song m_songLastSave; Steps m_stepsLastSave; @@ -232,6 +233,7 @@ public: play_current_beat_to_end, save, revert_to_last_save, + revert_from_disk, player_options, song_options, edit_song_info,