(svn r1516) -Cheating players do not get their names added to the highscore table/file
authordarkvater
Sat, 15 Jan 2005 00:46:45 +0000
changeset 1016 026b2de61647
parent 1015 bc0d6949d458
child 1017 608592d4d7a6
(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
players.c
--- a/player_gui.c	Sat Jan 15 00:42:01 2005 +0000
+++ b/player_gui.c	Sat Jan 15 00:46:45 2005 +0000
@@ -796,8 +796,8 @@
 		} break;
 	case WE_CLICK: /* OnClick show the highscore chart */
 		DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
+		DeleteWindow(w);
 		ShowHighscoreTable(w->window_number, WP(w, highscore_d).rank);
-		DeleteWindow(w);
 	}
 }
 
--- a/players.c	Sat Jan 15 00:42:01 2005 +0000
+++ b/players.c	Sat Jan 15 00:46:45 2005 +0000
@@ -740,11 +740,25 @@
 	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 @@
 	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) {