2016-03-31 02:38:57 +02:00
|
|
|
/* Copyright (c) 2002-2012 Croteam Ltd.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of version 2 of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License along
|
|
|
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
|
2016-03-11 22:45:21 +01:00
|
|
|
|
|
|
|
#include "StdH.h"
|
|
|
|
#include <Engine/Base/KeyNames.h>
|
|
|
|
#include <Engine/CurrentVersion.h>
|
|
|
|
#include <GameMP/LCDDrawing.h>
|
|
|
|
#include "MGHighScore.h"
|
|
|
|
|
|
|
|
#define HSCOLUMNS 6
|
|
|
|
CTString strHighScores[HIGHSCORE_COUNT + 1][HSCOLUMNS];
|
|
|
|
FLOAT afI[HSCOLUMNS] = {
|
|
|
|
0.12f, 0.15f, 0.6f, 0.7f, 0.78f, 0.9f
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
void CMGHighScore::Render(CDrawPort *pdp)
|
|
|
|
{
|
|
|
|
SetFontMedium(pdp);
|
|
|
|
|
|
|
|
COLOR colHeader = LCDGetColor(C_GREEN | 255, "hiscore header");
|
|
|
|
COLOR colData = LCDGetColor(C_mdGREEN | 255, "hiscore data");
|
|
|
|
COLOR colLastSet = LCDGetColor(C_mlGREEN | 255, "hiscore last set");
|
|
|
|
INDEX iLastSet = _pGame->gm_iLastSetHighScore;
|
|
|
|
|
|
|
|
CTString strText;
|
|
|
|
|
|
|
|
strHighScores[0][0] = TRANS("No.");
|
|
|
|
strHighScores[0][1] = TRANS("Player Name");
|
|
|
|
strHighScores[0][2] = TRANS("Difficulty");
|
|
|
|
strHighScores[0][3] = TRANS("Time");
|
|
|
|
strHighScores[0][4] = TRANS("Kills");
|
|
|
|
strHighScores[0][5] = TRANS("Score");
|
|
|
|
|
|
|
|
{for (INDEX i = 0; i<HIGHSCORE_COUNT; i++) {
|
|
|
|
switch (_pGame->gm_ahseHighScores[i].hse_gdDifficulty) {
|
|
|
|
default:
|
|
|
|
ASSERT(FALSE);
|
|
|
|
case (CSessionProperties::GameDifficulty) - 100:
|
|
|
|
strHighScores[i + 1][1] = "---";
|
|
|
|
continue;
|
|
|
|
break;
|
|
|
|
case CSessionProperties::GD_TOURIST:
|
|
|
|
strHighScores[i + 1][2] = TRANS("Tourist");
|
|
|
|
break;
|
|
|
|
case CSessionProperties::GD_EASY:
|
|
|
|
strHighScores[i + 1][2] = TRANS("Easy");
|
|
|
|
break;
|
|
|
|
case CSessionProperties::GD_NORMAL:
|
|
|
|
strHighScores[i + 1][2] = TRANS("Normal");
|
|
|
|
break;
|
|
|
|
case CSessionProperties::GD_HARD:
|
|
|
|
strHighScores[i + 1][2] = TRANS("Hard");
|
|
|
|
break;
|
|
|
|
case CSessionProperties::GD_EXTREME:
|
|
|
|
strHighScores[i + 1][2] = TRANS("Serious");
|
|
|
|
break;
|
|
|
|
case CSessionProperties::GD_EXTREME + 1:
|
|
|
|
strHighScores[i + 1][2] = TRANS("Mental");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
strHighScores[i + 1][0].PrintF("%d", i + 1);
|
|
|
|
strHighScores[i + 1][1] = _pGame->gm_ahseHighScores[i].hse_strPlayer;
|
|
|
|
strHighScores[i + 1][3] = TimeToString(_pGame->gm_ahseHighScores[i].hse_tmTime);
|
|
|
|
strHighScores[i + 1][4].PrintF("%03d", _pGame->gm_ahseHighScores[i].hse_ctKills);
|
|
|
|
strHighScores[i + 1][5].PrintF("%9d", _pGame->gm_ahseHighScores[i].hse_ctScore);
|
|
|
|
}}
|
|
|
|
|
|
|
|
PIX pixJ = pdp->GetHeight()*0.25f;
|
|
|
|
{for (INDEX iRow = 0; iRow<HIGHSCORE_COUNT + 1; iRow++) {
|
|
|
|
COLOR col = (iRow == 0) ? colHeader : colData;
|
|
|
|
if (iLastSet != -1 && iRow - 1 == iLastSet) {
|
|
|
|
col = colLastSet;
|
|
|
|
}
|
|
|
|
{for (INDEX iColumn = 0; iColumn<HSCOLUMNS; iColumn++) {
|
|
|
|
PIX pixI = pdp->GetWidth()*afI[iColumn];
|
|
|
|
if (iColumn == 1) {
|
|
|
|
pdp->PutText(strHighScores[iRow][iColumn], pixI, pixJ, col);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pdp->PutTextR(strHighScores[iRow][iColumn], pixI, pixJ, col);
|
|
|
|
}
|
|
|
|
}}
|
|
|
|
if (iRow == 0) {
|
|
|
|
pixJ += pdp->GetHeight()*0.06f;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pixJ += pdp->GetHeight()*0.04f;
|
|
|
|
}
|
|
|
|
}}
|
|
|
|
}
|