remove game-specific scoring code. Move TapNoteScore mappings into GameDef.

This commit is contained in:
Chris Danford
2004-06-27 01:16:00 +00:00
parent 3818cab51d
commit 586f57c7c9
3 changed files with 87 additions and 75 deletions
+6
View File
@@ -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
+65 -10
View File
@@ -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
View File
@@ -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 );