diff --git a/stepmania/NoteSkins/dance/default/metrics.ini b/stepmania/NoteSkins/dance/default/metrics.ini index 6ec4afbeb3..f73e8259ac 100644 --- a/stepmania/NoteSkins/dance/default/metrics.ini +++ b/stepmania/NoteSkins/dance/default/metrics.ini @@ -50,3 +50,9 @@ GoodCommand=diffuse,0.3,0.8,1.0,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffus GreatCommand=diffuse,0.0,1.0,0.4,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 PerfectCommand=diffuse,1.0,1.0,0.3,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 MarvelousCommand=diffuse,1.0,1.0,1.0,1;zoom,1;linear,0.06;zoom,1.1;linear,0.06;diffusealpha,0 + +[ReceptorArrow] +GreatCommand= +PerfectCommand= +MarvelousCommand= + diff --git a/stepmania/src/NoteField.cpp b/stepmania/src/NoteField.cpp index be07e65e39..ab1aa3deea 100644 --- a/stepmania/src/NoteField.cpp +++ b/stepmania/src/NoteField.cpp @@ -654,7 +654,7 @@ void NoteField::FadeToFail() // don't fade all over again if this is called twice } -void NoteField::Step( int iCol ) { SearchForSongBeat()->m_ReceptorArrowRow.Step( iCol ); } +void NoteField::Step( int iCol, TapNoteScore score ) { SearchForSongBeat()->m_ReceptorArrowRow.Step( iCol, score ); } void NoteField::SetPressed( int iCol ) { SearchForSongBeat()->m_ReceptorArrowRow.SetPressed( iCol ); } void NoteField::DidTapNote( int iCol, TapNoteScore score, bool bBright ) { SearchForSongBeat()->m_GhostArrowRow.DidTapNote( iCol, score, bBright ); } void NoteField::DidHoldNote( int iCol ) { /*SearchForSongBeat()->m_GhostArrowRow.DidHoldNote( iCol );*/ } diff --git a/stepmania/src/NoteField.h b/stepmania/src/NoteField.h index d54992a419..1b92ae9df4 100644 --- a/stepmania/src/NoteField.h +++ b/stepmania/src/NoteField.h @@ -37,7 +37,7 @@ public: void CacheAllUsedNoteSkins(); void CacheNoteSkin( CString skin ); - void Step( int iCol ); + void Step( int iCol, TapNoteScore score ); void SetPressed( int iCol ); void DidTapNote( int iCol, TapNoteScore score, bool bBright ); void DidHoldNote( int iCol ); diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index 1f1712a769..faeb968b4e 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -44,7 +44,6 @@ CachedThemeMetricB HOLD_JUDGMENTS_UNDER_FIELD ("Player","HoldJudgmentsUnderField #define START_DRAWING_AT_PIXELS THEME->GetMetricI("Player","StartDrawingAtPixels") #define STOP_DRAWING_AT_PIXELS THEME->GetMetricI("Player","StopDrawingAtPixels") #define MAX_PRO_TIMING_ERROR THEME->GetMetricI("Player","MaxProTimingError") -CachedThemeMetricI RECEPTOR_CUTOFF ("Player","ReceptorNoSinkScoreCutoff"); /* Distance to search for a note in Step(). */ /* Units? */ @@ -63,7 +62,6 @@ PlayerMinus::PlayerMinus() BRIGHT_GHOST_COMBO_THRESHOLD.Refresh(); TAP_JUDGMENTS_UNDER_FIELD.Refresh(); HOLD_JUDGMENTS_UNDER_FIELD.Refresh(); - RECEPTOR_CUTOFF.Refresh(); m_PlayerNumber = PLAYER_INVALID; m_fNoteFieldHeight = 0; @@ -886,12 +884,10 @@ void PlayerMinus::Step( int col, RageTimer tm ) m_iDCState = AS2D_FEVER; // super celebrate time :) } } + m_pNoteField->Step( col, score ); } - - //Don't blink arrows if the score is higher than what the theme - //says should not blink - if (RECEPTOR_CUTOFF>=score) - m_pNoteField->Step( col ); + else + m_pNoteField->Step( col, TNS_NONE ); } void PlayerMinus::HandleAutosync(float fNoteOffset) diff --git a/stepmania/src/ReceptorArrow.cpp b/stepmania/src/ReceptorArrow.cpp index 6519eff3f7..45361ab304 100644 --- a/stepmania/src/ReceptorArrow.cpp +++ b/stepmania/src/ReceptorArrow.cpp @@ -28,7 +28,12 @@ bool ReceptorArrow::Load( CString NoteSkin, PlayerNumber pn, int iColNo ) CString sPath; m_pReceptorWaiting.Load( NOTESKIN->GetPathToFromNoteSkinAndButton(NoteSkin,sButton,"receptor waiting") ); m_pReceptorGo.Load( NOTESKIN->GetPathToFromNoteSkinAndButton(NoteSkin,sButton,"receptor go") ); - m_sStepCommand = NOTESKIN->GetMetric(GAMESTATE->m_PlayerOptions[pn].m_sNoteSkin,"ReceptorArrow","StepCommand"); + for( int i=0; iGetMetric( NoteSkin, m_sName, sCommand ); + } m_pPressBlock.Load( NOTESKIN->GetPathToFromNoteSkinAndButton(NoteSkin,sButton,"KeypressBlock") ); @@ -67,12 +72,12 @@ void ReceptorArrow::DrawPrimitives() ActorFrame::DrawPrimitives(); } -void ReceptorArrow::Step() +void ReceptorArrow::Step( TapNoteScore score ) { m_pReceptorGo->FinishTweening(); m_pReceptorWaiting->FinishTweening(); - m_pReceptorGo->Command( m_sStepCommand ); - m_pReceptorWaiting->Command( m_sStepCommand ); + m_pReceptorGo->Command( m_sScoreCommand[score] ); + m_pReceptorWaiting->Command( m_sScoreCommand[score] ); } /* diff --git a/stepmania/src/ReceptorArrow.h b/stepmania/src/ReceptorArrow.h index db450e0c1b..4c08056078 100644 --- a/stepmania/src/ReceptorArrow.h +++ b/stepmania/src/ReceptorArrow.h @@ -6,6 +6,7 @@ #include "ActorFrame.h" #include "ActorUtil.h" #include "PlayerNumber.h" +#include "GameConstantsAndTypes.h" class ReceptorArrow : public ActorFrame { @@ -15,7 +16,7 @@ public: virtual void DrawPrimitives(); virtual void Update( float fDeltaTime ); - void Step(); + void Step( TapNoteScore score ); void SetPressed() { m_bIsPressed = true; }; private: @@ -24,7 +25,7 @@ private: AutoActor m_pReceptorWaiting; AutoActor m_pReceptorGo; - CString m_sStepCommand; + CString m_sScoreCommand[NUM_TAP_NOTE_SCORES]; AutoActor m_pPressBlock; bool m_bIsPressed; diff --git a/stepmania/src/ReceptorArrowRow.cpp b/stepmania/src/ReceptorArrowRow.cpp index ab9068b03f..62d74fbc38 100644 --- a/stepmania/src/ReceptorArrowRow.cpp +++ b/stepmania/src/ReceptorArrowRow.cpp @@ -24,7 +24,10 @@ void ReceptorArrowRow::Load( PlayerNumber pn, CString NoteSkin, float fYReverseO m_iNumCols = pStyle->m_iColsPerPlayer; for( int c=0; c= 0 && iCol < m_iNumCols ); - m_ReceptorArrow[iCol].Step(); + m_ReceptorArrow[iCol].Step( score ); } void ReceptorArrowRow::SetPressed( int iCol ) diff --git a/stepmania/src/ReceptorArrowRow.h b/stepmania/src/ReceptorArrowRow.h index b85f8e43bb..7d1fb4f0e9 100644 --- a/stepmania/src/ReceptorArrowRow.h +++ b/stepmania/src/ReceptorArrowRow.h @@ -20,7 +20,7 @@ public: virtual void DrawPrimitives(); virtual void CopyTweening( const ReceptorArrowRow &from ); - void Step( int iCol ); + void Step( int iCol, TapNoteScore score ); void SetPressed( int iCol ); protected: diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index 7b9609c3df..d82ae90d5b 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -1210,7 +1210,7 @@ void ScreenEdit::InputRecord( const DeviceInput& DeviceI, const InputEventType t break; m_NoteFieldRecord.SetTapNote(iCol, iRow, TAP_TAP); - m_NoteFieldRecord.Step( iCol ); + m_NoteFieldRecord.Step( iCol, TNS_MARVELOUS ); } break; case IET_SLOW_REPEAT: diff --git a/stepmania/src/ScreenNameEntry.cpp b/stepmania/src/ScreenNameEntry.cpp index 6586f00d4c..c8059a344f 100644 --- a/stepmania/src/ScreenNameEntry.cpp +++ b/stepmania/src/ScreenNameEntry.cpp @@ -356,7 +356,7 @@ void ScreenNameEntry::Input( const DeviceInput& DeviceI, const InputEventType ty int StringIndex = m_ColToStringIndex[StyleI.player][StyleI.col]; if(StringIndex != -1) { - m_ReceptorArrowRow[StyleI.player].Step( StyleI.col ); + m_ReceptorArrowRow[StyleI.player].Step( StyleI.col, TNS_MARVELOUS ); m_soundStep.Play(); char c = NAME_CHARS[GetClosestCharIndex(m_fFakeBeat)]; m_textSelectedChars[StyleI.player][StyleI.col].SetText( ssprintf("%c",c) );