diff --git a/stepmania/src/GhostArrowRow.cpp b/stepmania/src/GhostArrowRow.cpp index 5ff5af0f85..326fc3ecde 100644 --- a/stepmania/src/GhostArrowRow.cpp +++ b/stepmania/src/GhostArrowRow.cpp @@ -37,9 +37,13 @@ void GhostArrowRow::Load( PlayerNumber pn ) // init arrows for( int c=0; cGetPathTo(pn, c, "tap explosion dim") ); - m_GhostArrowRowBright[c].Load( NOTESKIN->GetPathTo(pn, c, "tap explosion bright") ); - m_HoldGhostArrowRow[c].Load( NOTESKIN->GetPathTo(pn, c, "hold explosion") ); + CString Button = g_NoteFieldMode[m_PlayerNumber].GhostButtonNames[c]; + if(Button == "") + Button = NoteSkinManager::ColToButtonName(c); + + m_GhostArrowRow[c].Load( NOTESKIN->GetPathTo(pn, Button, "tap explosion dim") ); + m_GhostArrowRowBright[c].Load( NOTESKIN->GetPathTo(pn, Button, "tap explosion bright") ); + m_HoldGhostArrowRow[c].Load( NOTESKIN->GetPathTo(pn, Button, "hold explosion") ); m_GhostArrowRow[c].SetX( pStyleDef->m_ColumnInfo[pn][c].fXOffset ); m_GhostArrowRowBright[c].SetX( pStyleDef->m_ColumnInfo[pn][c].fXOffset ); diff --git a/stepmania/src/GrayArrowRow.cpp b/stepmania/src/GrayArrowRow.cpp index 43b48825db..f7e75e6531 100644 --- a/stepmania/src/GrayArrowRow.cpp +++ b/stepmania/src/GrayArrowRow.cpp @@ -36,7 +36,11 @@ void GrayArrowRow::Load( PlayerNumber pn ) for( int c=0; cGetPathTo(pn, c, "receptor"); + CString Button = g_NoteFieldMode[m_PlayerNumber].GrayButtonNames[c]; + if(Button == "") + Button = NoteSkinManager::ColToButtonName(c); + + CString sPath = NOTESKIN->GetPathTo(pn, Button, "receptor"); m_GrayArrow[c].Load( sPath ); // XXX if( m_GrayArrow[c].GetNumStates() != 2 && diff --git a/stepmania/src/NoteDisplay.cpp b/stepmania/src/NoteDisplay.cpp index 8f9cb88b28..dc5d11077f 100644 --- a/stepmania/src/NoteDisplay.cpp +++ b/stepmania/src/NoteDisplay.cpp @@ -24,6 +24,7 @@ #include #include "RageDisplay.h" #include "NoteTypes.h" +#include "NoteFieldPositioning.h" #define DRAW_HOLD_HEAD_FOR_TAPS_ON_SAME_ROW NOTESKIN->GetMetricB(pn,name,"DrawHoldHeadForTapsOnSameRow") @@ -117,7 +118,11 @@ void NoteDisplay::Load( int iColNum, PlayerNumber pn ) { m_PlayerNumber = pn; - cache->Load( pn, NoteSkinManager::ColToButtonName(iColNum) ); + CString Button = g_NoteFieldMode[m_PlayerNumber].NoteButtonNames[iColNum]; + if(Button == "") + Button = NoteSkinManager::ColToButtonName(iColNum); + + cache->Load( pn, Button ); // Look up note names once and store them here. CString sNoteType[ NOTE_COLOR_IMAGES ]; @@ -128,81 +133,81 @@ void NoteDisplay::Load( int iColNum, PlayerNumber pn ) if( cache->m_bTapNoteAnimationIsNoteColor ) { for( int i=0; iGetPathTo(pn, iColNum, "tap note "+sNoteType[i]) ); + m_sprTapNote[i].Load( NOTESKIN->GetPathTo(pn, Button, "tap note "+sNoteType[i]) ); } else { - m_sprTapNote[0].Load( NOTESKIN->GetPathTo(pn, iColNum, "tap note") ); + m_sprTapNote[0].Load( NOTESKIN->GetPathTo(pn, Button, "tap note") ); } if( cache->m_bHoldHeadAnimationIsNoteColor ) { for( int i=0; iGetPathTo(pn, iColNum, "hold head active "+sNoteType[i]) ); - m_sprHoldHeadInactive[i].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold head inactive "+sNoteType[i]) ); + m_sprHoldHeadActive[i].Load( NOTESKIN->GetPathTo(pn, Button, "hold head active "+sNoteType[i]) ); + m_sprHoldHeadInactive[i].Load( NOTESKIN->GetPathTo(pn, Button, "hold head inactive "+sNoteType[i]) ); } } else { - m_sprHoldHeadActive[0].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold head active") ); - m_sprHoldHeadInactive[0].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold head inactive") ); + m_sprHoldHeadActive[0].Load( NOTESKIN->GetPathTo(pn, Button, "hold head active") ); + m_sprHoldHeadInactive[0].Load( NOTESKIN->GetPathTo(pn, Button, "hold head inactive") ); } if( cache->m_bHoldTopCapAnimationIsNoteColor ) { for( int i=0; iGetPathTo(pn, iColNum, "hold topcap active "+sNoteType[i]) ); - m_sprHoldTopCapInactive[i].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold topcap inactive "+sNoteType[i]) ); + m_sprHoldTopCapActive[i].Load( NOTESKIN->GetPathTo(pn, Button, "hold topcap active "+sNoteType[i]) ); + m_sprHoldTopCapInactive[i].Load( NOTESKIN->GetPathTo(pn, Button, "hold topcap inactive "+sNoteType[i]) ); } } else { - m_sprHoldTopCapActive[0].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold topcap active") ); - m_sprHoldTopCapInactive[0].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold topcap inactive") ); + m_sprHoldTopCapActive[0].Load( NOTESKIN->GetPathTo(pn, Button, "hold topcap active") ); + m_sprHoldTopCapInactive[0].Load( NOTESKIN->GetPathTo(pn, Button, "hold topcap inactive") ); } if( cache->m_bHoldBodyAnimationIsNoteColor ) { for( int i=0; iGetPathTo(pn, iColNum, "hold body active "+sNoteType[i]) ); - m_sprHoldBodyInactive[i].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold body inactive "+sNoteType[i]) ); + m_sprHoldBodyActive[i].Load( NOTESKIN->GetPathTo(pn, Button, "hold body active "+sNoteType[i]) ); + m_sprHoldBodyInactive[i].Load( NOTESKIN->GetPathTo(pn, Button, "hold body inactive "+sNoteType[i]) ); } } else { - m_sprHoldBodyActive[0].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold body active") ); - m_sprHoldBodyInactive[0].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold body inactive") ); + m_sprHoldBodyActive[0].Load( NOTESKIN->GetPathTo(pn, Button, "hold body active") ); + m_sprHoldBodyInactive[0].Load( NOTESKIN->GetPathTo(pn, Button, "hold body inactive") ); } if( cache->m_bHoldBottomCapAnimationIsNoteColor ) { for( int i=0; iGetPathTo(pn, iColNum, "hold bottomcap active "+sNoteType[i]) ); - m_sprHoldBottomCapInactive[i].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold bottomcap inactive "+sNoteType[i]) ); + m_sprHoldBottomCapActive[i].Load( NOTESKIN->GetPathTo(pn, Button, "hold bottomcap active "+sNoteType[i]) ); + m_sprHoldBottomCapInactive[i].Load( NOTESKIN->GetPathTo(pn, Button, "hold bottomcap inactive "+sNoteType[i]) ); } } else { - m_sprHoldBottomCapActive[0].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold bottomcap active") ); - m_sprHoldBottomCapInactive[0].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold bottomcap inactive") ); + m_sprHoldBottomCapActive[0].Load( NOTESKIN->GetPathTo(pn, Button, "hold bottomcap active") ); + m_sprHoldBottomCapInactive[0].Load( NOTESKIN->GetPathTo(pn, Button, "hold bottomcap inactive") ); } if( cache->m_bHoldTailAnimationIsNoteColor ) { for( int i=0; iGetPathTo(pn, iColNum, "hold tail active "+sNoteType[i]) ); - m_sprHoldTailInactive[i].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold tail inactive "+sNoteType[i]) ); + m_sprHoldTailActive[i].Load( NOTESKIN->GetPathTo(pn, Button, "hold tail active "+sNoteType[i]) ); + m_sprHoldTailInactive[i].Load( NOTESKIN->GetPathTo(pn, Button, "hold tail inactive "+sNoteType[i]) ); } } else { - m_sprHoldTailActive[0].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold tail active") ); - m_sprHoldTailInactive[0].Load( NOTESKIN->GetPathTo(pn, iColNum, "hold tail inactive") ); + m_sprHoldTailActive[0].Load( NOTESKIN->GetPathTo(pn, Button, "hold tail active") ); + m_sprHoldTailInactive[0].Load( NOTESKIN->GetPathTo(pn, Button, "hold tail inactive") ); } } diff --git a/stepmania/src/NoteFieldPositioning.cpp b/stepmania/src/NoteFieldPositioning.cpp index 2064a9db9a..18a84b5f43 100644 --- a/stepmania/src/NoteFieldPositioning.cpp +++ b/stepmania/src/NoteFieldPositioning.cpp @@ -96,6 +96,15 @@ void NoteFieldMode::Load(IniFile &ini, CString id) { GetValueCmd( ini, id, ssprintf("Center%i", t+1), m_CenterTrack[t] ); GetValueCmd( ini, id, ssprintf("Position%i", t+1), m_PositionTrack[t] ); + + ini.GetValue( id, ssprintf("GrayButton", t+1), GrayButtonNames[t] ); + ini.GetValue( id, ssprintf("GrayButton%i", t+1), GrayButtonNames[t] ); + + ini.GetValue( id, ssprintf("NoteButton", t+1), NoteButtonNames[t] ); + ini.GetValue( id, ssprintf("NoteButton%i", t+1), NoteButtonNames[t] ); + + ini.GetValue( id, ssprintf("GhostButton", t+1), GhostButtonNames[t] ); + ini.GetValue( id, ssprintf("GhostButton%i", t+1), GhostButtonNames[t] ); } CString sGames; diff --git a/stepmania/src/NoteFieldPositioning.h b/stepmania/src/NoteFieldPositioning.h index 1deddf903f..04b8c685f5 100644 --- a/stepmania/src/NoteFieldPositioning.h +++ b/stepmania/src/NoteFieldPositioning.h @@ -32,6 +32,10 @@ struct NoteFieldMode Actor m_Center; Actor m_CenterTrack[MAX_NOTE_TRACKS]; + CString GrayButtonNames[MAX_NOTE_TRACKS]; + CString NoteButtonNames[MAX_NOTE_TRACKS]; + CString GhostButtonNames[MAX_NOTE_TRACKS]; + /* 0 = no perspective */ float m_fFov, m_fNear, m_fFar; Actor m_Position; diff --git a/stepmania/src/NoteSkinManager.cpp b/stepmania/src/NoteSkinManager.cpp index b30ae93787..c32b6dba1a 100644 --- a/stepmania/src/NoteSkinManager.cpp +++ b/stepmania/src/NoteSkinManager.cpp @@ -161,10 +161,15 @@ CString NoteSkinManager::ColToButtonName(int col) return pGameDef->m_szButtonNames[GI.button]; } -CString NoteSkinManager::GetPathTo( PlayerNumber pn, int col, CString sFileName ) // looks in GAMESTATE for the current Style +CString NoteSkinManager::GetPathTo( PlayerNumber pn, int col, CString sFileName ) { CString sButtonName = ColToButtonName(col); + return GetPathTo( pn, sButtonName, sFileName ); +} + +CString NoteSkinManager::GetPathTo( PlayerNumber pn, CString sButtonName, CString sFileName ) // looks in GAMESTATE for the current Style +{ CString sCurNoteSkinName = m_sCurNoteSkinName[pn]; CString ret = GetPathTo( sCurNoteSkinName, sButtonName, sFileName ); diff --git a/stepmania/src/NoteSkinManager.h b/stepmania/src/NoteSkinManager.h index 4af30b929f..b14657c59e 100644 --- a/stepmania/src/NoteSkinManager.h +++ b/stepmania/src/NoteSkinManager.h @@ -31,6 +31,7 @@ public: CString GetCurNoteSkinName( PlayerNumber pn ) const { return m_sCurNoteSkinName[pn]; }; CString GetPathTo( PlayerNumber pn, int col, CString sFileName ); + CString GetPathTo( PlayerNumber pn, CString sButtonName, CString sFileName ); CString GetPathTo( CString sSkinName, CString sButtonName, CString sFileName ); CString GetMetric( PlayerNumber pn, CString sButtonName, CString sValueName );