diff options
author | darkvater <darkvater@openttd.org> | 2005-01-15 00:46:45 +0000 |
---|---|---|
committer | darkvater <darkvater@openttd.org> | 2005-01-15 00:46:45 +0000 |
commit | 75474e5bf1bffa805102e0af87b43d9a51618fa1 (patch) | |
tree | ccda2560cc4a8b9ed2663f8744576c8633ecef1b | |
parent | c3a40dba6882c83d35db0d6b0c71060f4c0c62d9 (diff) | |
download | openttd-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.c | 2 | ||||
-rw-r--r-- | 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); } } @@ -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) { |