Originally, the AdjustSync class always saved to disk, even in edit mode.
In edit mode, though, AdjustSync should only save to memory, giving the user a chance to save later. This change adds a SongChanged message to the MessageManager. Making the ScreenEdit class listen to this message allows the AdjustSync class to mark a song as dirty rather than saving it to disk when in edit mode. R=steve chekoway
This commit is contained in:
@@ -34,11 +34,11 @@
|
||||
*/
|
||||
|
||||
#include "global.h"
|
||||
#include "song.h"
|
||||
#include "AdjustSync.h"
|
||||
#include "GameState.h"
|
||||
#include "song.h"
|
||||
#include "PrefsManager.h"
|
||||
#include "LocalizedString.h"
|
||||
#include "PrefsManager.h"
|
||||
#include "ScreenManager.h"
|
||||
|
||||
TimingData *AdjustSync::s_pTimingDataOriginal = NULL;
|
||||
@@ -51,7 +51,6 @@ float AdjustSync::s_fAverageError = 0.0f;
|
||||
const float AdjustSync::ERROR_TOO_HIGH = 0.025f;
|
||||
int AdjustSync::s_iStepsFiltered = 0;
|
||||
|
||||
|
||||
void AdjustSync::ResetOriginalSyncData()
|
||||
{
|
||||
if( s_pTimingDataOriginal == NULL )
|
||||
@@ -87,8 +86,17 @@ void AdjustSync::SaveSyncChanges()
|
||||
{
|
||||
if( GAMESTATE->IsCourseMode() )
|
||||
return;
|
||||
if( GAMESTATE->m_pCurSong && *s_pTimingDataOriginal != GAMESTATE->m_pCurSong->m_Timing )
|
||||
GAMESTATE->m_pCurSong->Save();
|
||||
if( GAMESTATE->m_pCurSong && *s_pTimingDataOriginal != GAMESTATE->m_pCurSong->m_Timing )
|
||||
{
|
||||
if( GAMESTATE->IsEditing() )
|
||||
{
|
||||
MESSAGEMAN->Broadcast( Message_SongChanged );
|
||||
}
|
||||
else
|
||||
{
|
||||
GAMESTATE->m_pCurSong->Save();
|
||||
}
|
||||
}
|
||||
if( s_fGlobalOffsetSecondsOriginal != PREFSMAN->m_fGlobalOffsetSeconds )
|
||||
PREFSMAN->SavePrefsToDisk();
|
||||
ResetOriginalSyncData();
|
||||
|
||||
@@ -132,6 +132,7 @@ static const char *MessageNames[] = {
|
||||
"ShowHoldJudgmentMuliPlayerP30",
|
||||
"ShowHoldJudgmentMuliPlayerP31",
|
||||
"ShowHoldJudgmentMuliPlayerP32",
|
||||
"MessageSongChanged",
|
||||
};
|
||||
XToString( Message );
|
||||
|
||||
|
||||
@@ -127,6 +127,7 @@ enum Message
|
||||
Message_ShowHoldJudgmentMuliPlayerP30,
|
||||
Message_ShowHoldJudgmentMuliPlayerP31,
|
||||
Message_ShowHoldJudgmentMuliPlayerP32,
|
||||
Message_SongChanged,
|
||||
NUM_Message, // leave this at the end
|
||||
Message_Invalid
|
||||
};
|
||||
|
||||
@@ -763,6 +763,8 @@ void ScreenEdit::Init()
|
||||
|
||||
this->HandleScreenMessage( SM_UpdateTextInfo );
|
||||
m_bTextInfoNeedsUpdate = true;
|
||||
|
||||
SubscribeToMessage( Message_SongChanged );
|
||||
}
|
||||
|
||||
ScreenEdit::~ScreenEdit()
|
||||
@@ -2365,6 +2367,15 @@ void ScreenEdit::ScrollTo( float fDestinationBeat )
|
||||
m_soundChangeLine.Play();
|
||||
}
|
||||
|
||||
void ScreenEdit::HandleMessage( const RString &sMessage )
|
||||
{
|
||||
if( sMessage == MessageToString( Message_SongChanged ) )
|
||||
{
|
||||
SetDirty( true );
|
||||
}
|
||||
Screen::HandleMessage( sMessage );
|
||||
}
|
||||
|
||||
static LocalizedString SAVE_SUCCESSFUL ( "ScreenEdit", "Save successful." );
|
||||
|
||||
void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
|
||||
|
||||
@@ -177,6 +177,7 @@ public:
|
||||
void InputRecord( const InputEventPlus &input, EditButton EditB );
|
||||
void InputRecordPaused( const InputEventPlus &input, EditButton EditB );
|
||||
void InputPlay( const InputEventPlus &input, EditButton EditB );
|
||||
virtual void HandleMessage( const RString& sMessage );
|
||||
virtual void HandleScreenMessage( const ScreenMessage SM );
|
||||
|
||||
void SetDirty( bool bDirty ) { m_bDirty = bDirty; }
|
||||
|
||||
Reference in New Issue
Block a user