From 75474e5bf1bffa805102e0af87b43d9a51618fa1 Mon Sep 17 00:00:00 2001 From: darkvater Date: Sat, 15 Jan 2005 00:46:45 +0000 Subject: (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) --- player_gui.c | 2 +- players.c | 20 +++++++++++++++++++- 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) { -- cgit v1.2.3-70-g09d2