remove game-specific scoring code. Move TapNoteScore mappings into GameDef.
This commit is contained in:
@@ -52,6 +52,12 @@ public:
|
||||
GameButton ButtonNameToIndex( const CString &sButtonName ) const;
|
||||
MenuInput GameInputToMenuInput( GameInput GameI ) const;
|
||||
void MenuInputToGameInput( MenuInput MenuI, GameInput GameIout[4] ) const;
|
||||
|
||||
TapNoteScore m_mapMarvelousTo;
|
||||
TapNoteScore m_mapPerfectTo;
|
||||
TapNoteScore m_mapGreatTo;
|
||||
TapNoteScore m_mapGoodTo;
|
||||
TapNoteScore m_mapBooTo;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -160,7 +160,12 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
NO_DEFAULT_KEY, // DANCE_BUTTON_COIN
|
||||
NO_DEFAULT_KEY // DANCE_BUTTON_OPERATOR
|
||||
},
|
||||
}
|
||||
},
|
||||
TNS_MARVELOUS, // m_mapMarvelousTo
|
||||
TNS_PERFECT, // m_mapPerfectTo
|
||||
TNS_GREAT, // m_mapGreatTo
|
||||
TNS_GOOD, // m_mapGoodTo
|
||||
TNS_BOO, // m_mapBooTo
|
||||
},
|
||||
{ // GAME_PUMP
|
||||
"pump", // m_szName
|
||||
@@ -248,7 +253,12 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
NO_DEFAULT_KEY, // PUMP_BUTTON_COIN
|
||||
NO_DEFAULT_KEY // PUMP_BUTTON_OPERATOR
|
||||
},
|
||||
}
|
||||
},
|
||||
TNS_MARVELOUS, // m_mapMarvelousTo
|
||||
TNS_PERFECT, // m_mapPerfectTo
|
||||
TNS_GREAT, // m_mapGreatTo
|
||||
TNS_GOOD, // m_mapGoodTo
|
||||
TNS_BOO, // m_mapBooTo
|
||||
},
|
||||
{
|
||||
"ez2", // m_szName
|
||||
@@ -345,6 +355,11 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
NO_DEFAULT_KEY // EZ2_BUTTON_OPERATOR
|
||||
},
|
||||
},
|
||||
TNS_PERFECT, // m_mapMarvelousTo
|
||||
TNS_PERFECT, // m_mapPerfectTo
|
||||
TNS_PERFECT, // m_mapGreatTo
|
||||
TNS_GOOD, // m_mapGoodTo
|
||||
TNS_MISS, // m_mapBooTo
|
||||
},
|
||||
{ // GAME_PARA
|
||||
"para", // m_szName
|
||||
@@ -432,7 +447,12 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
NO_DEFAULT_KEY, // PARA_BUTTON_COIN
|
||||
NO_DEFAULT_KEY // PARA_BUTTON_OPERATOR
|
||||
},
|
||||
}
|
||||
},
|
||||
TNS_MARVELOUS, // m_mapMarvelousTo
|
||||
TNS_PERFECT, // m_mapPerfectTo
|
||||
TNS_GREAT, // m_mapGreatTo
|
||||
TNS_GOOD, // m_mapGoodTo
|
||||
TNS_BOO, // m_mapBooTo
|
||||
},
|
||||
{ // GAME_DS3DDX
|
||||
"ds3ddx", // m_szName
|
||||
@@ -532,7 +552,12 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
NO_DEFAULT_KEY, // DS3DDX_BUTTON_COIN
|
||||
NO_DEFAULT_KEY // DS3DDX_BUTTON_OPERATOR
|
||||
},
|
||||
}
|
||||
},
|
||||
TNS_MARVELOUS, // m_mapMarvelousTo
|
||||
TNS_PERFECT, // m_mapPerfectTo
|
||||
TNS_GREAT, // m_mapGreatTo
|
||||
TNS_GOOD, // m_mapGoodTo
|
||||
TNS_BOO, // m_mapBooTo
|
||||
},
|
||||
{ // GAME_BM
|
||||
"bm", // m_szName
|
||||
@@ -629,7 +654,12 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
NO_DEFAULT_KEY, // BM_BUTTON_COIN
|
||||
NO_DEFAULT_KEY // BM_BUTTON_OPERATOR
|
||||
},
|
||||
}
|
||||
},
|
||||
TNS_MARVELOUS, // m_mapMarvelousTo
|
||||
TNS_PERFECT, // m_mapPerfectTo
|
||||
TNS_GREAT, // m_mapGreatTo
|
||||
TNS_GOOD, // m_mapGoodTo
|
||||
TNS_BOO, // m_mapBooTo
|
||||
},
|
||||
{ // GAME_IIDX
|
||||
"iidx", // m_szName
|
||||
@@ -734,7 +764,12 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
NO_DEFAULT_KEY, // IIDX_BUTTON_COIN
|
||||
NO_DEFAULT_KEY // IIDX_BUTTON_OPERATOR
|
||||
},
|
||||
}
|
||||
},
|
||||
TNS_MARVELOUS, // m_mapMarvelousTo
|
||||
TNS_PERFECT, // m_mapPerfectTo
|
||||
TNS_GREAT, // m_mapGreatTo
|
||||
TNS_GOOD, // m_mapGoodTo
|
||||
TNS_BOO, // m_mapBooTo
|
||||
},
|
||||
{ // GAME_MANIAX
|
||||
"maniax", // m_szName
|
||||
@@ -818,7 +853,12 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
NO_DEFAULT_KEY, // MANIAX_BUTTON_COIN
|
||||
NO_DEFAULT_KEY // MANIAX_BUTTON_OPERATOR
|
||||
},
|
||||
}
|
||||
},
|
||||
TNS_MARVELOUS, // m_mapMarvelousTo
|
||||
TNS_PERFECT, // m_mapPerfectTo
|
||||
TNS_GREAT, // m_mapGreatTo
|
||||
TNS_GOOD, // m_mapGoodTo
|
||||
TNS_BOO, // m_mapBooTo
|
||||
},
|
||||
{ // GAME_TECHNO
|
||||
"techno", // m_szName
|
||||
@@ -920,7 +960,12 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
NO_DEFAULT_KEY, // TECHNO_BUTTON_COIN
|
||||
NO_DEFAULT_KEY // TECHNO_BUTTON_OPERATOR
|
||||
},
|
||||
}
|
||||
},
|
||||
TNS_MARVELOUS, // m_mapMarvelousTo
|
||||
TNS_PERFECT, // m_mapPerfectTo
|
||||
TNS_GREAT, // m_mapGreatTo
|
||||
TNS_GOOD, // m_mapGoodTo
|
||||
TNS_BOO, // m_mapBooTo
|
||||
},
|
||||
{ // GAME_PNM
|
||||
"pnm", // m_szName
|
||||
@@ -1025,7 +1070,12 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
NO_DEFAULT_KEY, // BM_BUTTON_COIN
|
||||
NO_DEFAULT_KEY // BM_BUTTON_OPERATOR
|
||||
},
|
||||
}
|
||||
},
|
||||
TNS_PERFECT, // m_mapMarvelousTo
|
||||
TNS_PERFECT, // m_mapPerfectTo
|
||||
TNS_GREAT, // m_mapGreatTo
|
||||
TNS_GREAT, // m_mapGoodTo
|
||||
TNS_MISS, // m_mapBooTo
|
||||
},
|
||||
{ // GAME_LIGHTS
|
||||
"lights", // m_szName
|
||||
@@ -1125,7 +1175,12 @@ GameDef g_GameDefs[NUM_GAMES] =
|
||||
NO_DEFAULT_KEY // LIGHTS_BUTTON_COIN
|
||||
NO_DEFAULT_KEY // LIGHTS_BUTTON_OPERATOR
|
||||
},
|
||||
}
|
||||
},
|
||||
TNS_MARVELOUS, // m_mapMarvelousTo
|
||||
TNS_PERFECT, // m_mapPerfectTo
|
||||
TNS_GREAT, // m_mapGreatTo
|
||||
TNS_GOOD, // m_mapGoodTo
|
||||
TNS_BOO, // m_mapBooTo
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
+16
-65
@@ -675,30 +675,6 @@ void PlayerMinus::Step( int col, RageTimer tm )
|
||||
{
|
||||
case PC_HUMAN: {
|
||||
|
||||
// TODO: move the judgments into flags in PrefsManager so we don't need logic like this per-game.
|
||||
if(GAMESTATE->m_CurGame == GAME_EZ2)
|
||||
{
|
||||
/* 1 is normal. 2 means scoring is half as hard; .5 means it's twice as hard. */
|
||||
/* Ez2 is only perfect / good / miss */
|
||||
if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Marvelous) ) score = TNS_PERFECT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Perfect) ) score = TNS_PERFECT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Great) ) score = TNS_PERFECT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Good) ) score = TNS_GOOD;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Boo) ) score = TNS_MISS;
|
||||
else score = TNS_NONE;
|
||||
}
|
||||
else if(GAMESTATE->m_CurGame == GAME_PNM)
|
||||
{
|
||||
/* PNM Goods = Great / Boo = Miss */
|
||||
if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Marvelous) ) score = TNS_MARVELOUS;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Perfect) ) score = TNS_PERFECT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Great) ) score = TNS_GREAT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Good) ) score = TNS_GREAT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Boo) ) score = TNS_MISS;
|
||||
else score = TNS_NONE;
|
||||
}
|
||||
|
||||
|
||||
switch( tn )
|
||||
{
|
||||
case TAP_MINE:
|
||||
@@ -742,28 +718,12 @@ void PlayerMinus::Step( int col, RageTimer tm )
|
||||
}
|
||||
else // !IsTapAttack
|
||||
{
|
||||
// TODO: move the judgments into flags in PrefsManager so we don't need logic like this per-game.
|
||||
if(GAMESTATE->m_CurGame == GAME_EZ2)
|
||||
{
|
||||
/* 1 is normal. 2 means scoring is half as hard; .5 means it's twice as hard. */
|
||||
/* Ez2 is only perfect / good / miss */
|
||||
if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Marvelous) ) score = TNS_PERFECT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Perfect) ) score = TNS_PERFECT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Great) ) score = TNS_PERFECT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Good) ) score = TNS_GOOD;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Boo) ) score = TNS_MISS;
|
||||
else score = TNS_NONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 1 is normal. 2 means scoring is half as hard; .5 means it's twice as hard. */
|
||||
if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Marvelous) ) score = TNS_MARVELOUS;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Perfect) ) score = TNS_PERFECT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Great) ) score = TNS_GREAT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Good) ) score = TNS_GOOD;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Boo) ) score = TNS_BOO;
|
||||
else score = TNS_NONE;
|
||||
}
|
||||
if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Marvelous) ) score = TNS_MARVELOUS;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Perfect) ) score = TNS_PERFECT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Great) ) score = TNS_GREAT;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Good) ) score = TNS_GOOD;
|
||||
else if( fSecondsFromPerfect <= ADJUSTED_WINDOW(Boo) ) score = TNS_BOO;
|
||||
else score = TNS_NONE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -781,25 +741,6 @@ void PlayerMinus::Step( int col, RageTimer tm )
|
||||
break;
|
||||
}
|
||||
|
||||
if( GAMESTATE->m_CurGame == GAME_EZ2 ) // scores are only perfect/good/miss on ez2 adjust accordingly
|
||||
{
|
||||
if(score == TNS_GREAT || score == TNS_MARVELOUS)
|
||||
score = TNS_PERFECT;
|
||||
if(score == TNS_BOO)
|
||||
score = TNS_MISS;
|
||||
}
|
||||
if ( GAMESTATE->m_CurGame == GAME_PNM ) // a boo is really miss on pnm, a good is really a great!
|
||||
{
|
||||
if(score == TNS_MARVELOUS) // in demo mode PC shouldnt hit marvelous
|
||||
score = TNS_PERFECT;
|
||||
|
||||
if(score == TNS_GOOD)
|
||||
score = TNS_GREAT;
|
||||
|
||||
if(score == TNS_BOO)
|
||||
score = TNS_MISS;
|
||||
}
|
||||
|
||||
// TRICKY: We're asking the AI to judge mines. consider TNS_GOOD and below
|
||||
// as "mine was hit" and everything else as "mine was avoided"
|
||||
if( tn == TAP_MINE )
|
||||
@@ -873,6 +814,16 @@ void PlayerMinus::Step( int col, RageTimer tm )
|
||||
}
|
||||
|
||||
|
||||
// Do game-specific score mapping.
|
||||
const GameDef* pGameDef = GAMESTATE->GetCurrentGameDef();
|
||||
if( score == TNS_MARVELOUS ) score = pGameDef->m_mapMarvelousTo;
|
||||
if( score == TNS_PERFECT ) score = pGameDef->m_mapPerfectTo;
|
||||
if( score == TNS_GREAT ) score = pGameDef->m_mapGreatTo;
|
||||
if( score == TNS_GOOD ) score = pGameDef->m_mapGoodTo;
|
||||
if( score == TNS_BOO ) score = pGameDef->m_mapBooTo;
|
||||
|
||||
|
||||
|
||||
if( score != TNS_NONE && score != TNS_MISS )
|
||||
{
|
||||
int ms_error = (int) roundf( fSecondsFromPerfect * 1000 );
|
||||
|
||||
Reference in New Issue
Block a user