summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordarkvater <darkvater@openttd.org>2005-01-15 00:46:45 +0000
committerdarkvater <darkvater@openttd.org>2005-01-15 00:46:45 +0000
commit75474e5bf1bffa805102e0af87b43d9a51618fa1 (patch)
treeccda2560cc4a8b9ed2663f8744576c8633ecef1b
parentc3a40dba6882c83d35db0d6b0c71060f4c0c62d9 (diff)
downloadopenttd-75474e5bf1bffa805102e0af87b43d9a51618fa1.tar.xz
(svn r1516) -Cheating players do not get their names added to the highscore table/file
-Fixed issue where highscore window would not come up after endgame screen -Fix: VS6 compiles once again (braindead compiler)
-rw-r--r--player_gui.c2
-rw-r--r--players.c20
2 files changed, 20 insertions, 2 deletions
diff --git a/player_gui.c b/player_gui.c
index b262a6675..94286c4a3 100644
--- a/player_gui.c
+++ b/player_gui.c
@@ -796,8 +796,8 @@ static void EndGameWndProc(Window *w, WindowEvent *e)
} break;
case WE_CLICK: /* OnClick show the highscore chart */
DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
- ShowHighscoreTable(w->window_number, WP(w, highscore_d).rank);
DeleteWindow(w);
+ ShowHighscoreTable(w->window_number, WP(w, highscore_d).rank);
}
}
diff --git a/players.c b/players.c
index 35b0e5b52..146eb6637 100644
--- a/players.c
+++ b/players.c
@@ -740,11 +740,25 @@ static const StringID _endgame_performance_titles[16] = {
STR_0219_TYCOON_OF_THE_CENTURY,
};
-inline StringID EndGameGetPerformanceTitleFromValue(uint value)
+StringID EndGameGetPerformanceTitleFromValue(uint value)
{
return _endgame_performance_titles[minu(value, 1000) >> 6];
}
+/* Return true if any cheat has been used, false otherwise */
+static CheatHasBeenUsed(void)
+{
+ const Cheat* cht = (Cheat*) &_cheats;
+ const Cheat* cht_last = &cht[sizeof(_cheats) / sizeof(Cheat)];
+
+ for (; cht != cht_last; cht++) {
+ if (cht->been_used)
+ return true;
+ }
+
+ return false;
+}
+
/* Save the highscore for the player */
int8 SaveHighScoreValue(const Player *p)
{
@@ -752,6 +766,10 @@ int8 SaveHighScoreValue(const Player *p)
uint i;
uint16 score = p->old_economy[0].performance_history;
+ /* Exclude cheaters from the honour of being in the highscore table */
+ if (CheatHasBeenUsed())
+ return -1;
+
for (i = 0; i < lengthof(_highscore_table[0]); i++) {
/* You are in the TOP5. Move all values one down and save us there */
if (hs[i].score <= score) {