diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index cfeeefe077..1d94c76f4a 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -36,13 +36,14 @@ GameState::GameState() /* Don't reset yet; let the first screen do it, so we can * use PREFSMAN. */ // Reset(); + m_pPosition = NULL; ResetLastRanking(); } GameState::~GameState() { - delete m_Position; + SAFE_DELETE( m_pPosition ); } void GameState::Reset() @@ -85,14 +86,12 @@ void GameState::Reset() } m_SongOptions.Init(); for( p=0; pm_sDefaultModifiers ); - } - m_SongOptions.FromString( PREFSMAN->m_sDefaultModifiers ); - for( p=0; pSwitchNoteSkin( PlayerNumber(p), PREFSMAN->m_sDefaultNoteSkin ); - - m_Position = new NoteFieldPositioning("Positioning.ini"); + m_sPositioning[p] = ""; + SAFE_DELETE( m_pPosition ); + m_pPosition = new NoteFieldPositioning("Positioning.ini"); + + // apply defaults + this->ApplyModifiers( PREFSMAN->m_sDefaultModifiers ); for( p=0; p& } +void GameState::ApplyModifiers( CString sModifiers ) +{ + for( int p=0; pDoesNoteSkinExist(sBit) ) + for( int p=0; pSwitchNoteSkin( (PlayerNumber)p, sBit ); + if( m_pPosition->IsValidModeForCurrentGame(sBit) ) + for( int p=0; pm_PlayerOptions[pn].m_sPositioning); + const int ModeNum = GetID(GAMESTATE->m_sPositioning[pn]); if(ModeNum == -1) return; /* No, only use the style table settings. */ diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index fc470f133d..2df9cd8208 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -89,7 +89,7 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, ScoreDi m_pScoreKeeper = pScoreKeeper; /* Ensure that this is up-to-date. */ - GAMESTATE->m_Position->Load(pn); + GAMESTATE->m_pPosition->Load(pn); const StyleDef* pStyleDef = GAMESTATE->GetCurrentStyleDef(); @@ -416,7 +416,7 @@ void Player::Step( int col ) break; default: ASSERT(0); - score==TNS_NONE; + score=TNS_NONE; } if( score==TNS_MARVELOUS && !PREFSMAN->m_bMarvelousTiming ) diff --git a/stepmania/src/PlayerOptions.cpp b/stepmania/src/PlayerOptions.cpp index a9f8402ff3..87542c9159 100644 --- a/stepmania/src/PlayerOptions.cpp +++ b/stepmania/src/PlayerOptions.cpp @@ -33,7 +33,6 @@ void PlayerOptions::Init() m_bTimingAssist = false; m_fPerspectiveTilt = 0; m_bTimeSpacing = false; - m_sPositioning = ""; } void PlayerOptions::Approach( const PlayerOptions& other, float fDeltaSeconds ) @@ -127,7 +126,6 @@ CString PlayerOptions::GetString() if( !m_bHoldNotes ) sReturn += "NoHolds, "; if( m_bTimingAssist ) sReturn += "TimingAssist, "; - if( m_sPositioning != "" ) sReturn += m_sPositioning + ", "; switch( (int)m_fPerspectiveTilt ) { case -1: sReturn += "Incoming, "; break; @@ -198,8 +196,6 @@ void PlayerOptions::FromString( CString sOptions ) else if( sBit == "timingassist")m_bTimingAssist = true; else if( sBit == "incoming" ) m_fPerspectiveTilt = -1; else if( sBit == "space" ) m_fPerspectiveTilt = +1; - else if( GAMESTATE->m_Position->IsValidModeForCurrentGame(sBit) ) - m_sPositioning = sBit; } } diff --git a/stepmania/src/PlayerOptions.h b/stepmania/src/PlayerOptions.h index eced1e8dbb..a1adf88bde 100644 --- a/stepmania/src/PlayerOptions.h +++ b/stepmania/src/PlayerOptions.h @@ -78,8 +78,6 @@ struct PlayerOptions float m_fPerspectiveTilt; // -1 = near, 0 = overhead, +1 = space bool m_bTimeSpacing; // instead of Beat spacing - /* The current positioning mode, or empty to use the normal positions. */ - CString m_sPositioning; void NextAccel(); void NextEffect(); diff --git a/stepmania/src/ScreenPlayerOptions.cpp b/stepmania/src/ScreenPlayerOptions.cpp index 71d6adea55..f89d7e7468 100644 --- a/stepmania/src/ScreenPlayerOptions.cpp +++ b/stepmania/src/ScreenPlayerOptions.cpp @@ -108,7 +108,7 @@ void ScreenPlayerOptions::ImportOptions() m_OptionRow[PO_PERSPECTIVE].choices.push_back( "SPACE" ); CStringArray arrayPosNames; - GAMESTATE->m_Position->GetNamesForCurrentGame(arrayPosNames); + GAMESTATE->m_pPosition->GetNamesForCurrentGame(arrayPosNames); for( i=0; i &choices = m_OptionRow[PO_PERSPECTIVE].choices; for(unsigned n = 3; n < choices.size(); ++n) - if(!choices[n].CompareNoCase(po.m_sPositioning)) + if(!choices[n].CompareNoCase(GAMESTATE->m_sPositioning[p])) m_iSelectedOption[p][PO_PERSPECTIVE] = n; } @@ -241,7 +241,7 @@ void ScreenPlayerOptions::ExportOptions() if(m_iSelectedOption[p][PO_PERSPECTIVE] > 2) { const int choice = m_iSelectedOption[p][PO_PERSPECTIVE]; - po.m_sPositioning = m_OptionRow[PO_PERSPECTIVE].choices[choice]; + GAMESTATE->m_sPositioning[p] = m_OptionRow[PO_PERSPECTIVE].choices[choice]; } } } diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index b5261754f5..67c861a13e 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -234,6 +234,7 @@ void ScreenSelectMusic::TweenOffScreen() OFF_COMMAND( m_MusicSortDisplay ); m_MusicWheel.TweenOffScreen(); OFF_COMMAND( m_MusicWheel ); + OFF_COMMAND( m_sprBalloon ); for( int p=0; pReadGamePrefsFromDisk(); INPUTMAPPER->ReadMappingsFromDisk(); + /* + GameState::Reset() will switch the NoteSkin for( int p=0; pSwitchNoteSkin( pn, asNoteSkinNames[0] ); } } + */ if( !THEME->DoesThemeExist( THEME->GetCurThemeName() ) ) { CString sGameName = GAMESTATE->GetCurrentGameDef()->m_szName;