19 #include "table/strings.h"
28 static const StringID _endgame_perf_titles[] = {
29 STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN,
30 STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN,
31 STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN,
32 STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN,
33 STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN,
34 STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR,
35 STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR,
36 STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST,
37 STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST,
38 STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST,
39 STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST,
40 STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE,
41 STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE,
42 STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL,
43 STR_HIGHSCORE_PERFORMANCE_TITLE_MOGUL,
44 STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY
47 StringID EndGameGetPerformanceTitleFromValue(uint value)
49 value =
minu(value / 64,
lengthof(_endgame_perf_titles) - 1);
51 return _endgame_perf_titles[value];
64 for (i = 0; i <
lengthof(_highscore_table[0]); i++) {
66 if (hs[i].score <= score) {
68 memmove(&hs[i + 1], &hs[i],
sizeof(
HighScore) * (
lengthof(_highscore_table[0]) - i - 1));
71 GetString(hs[i].company, STR_HIGHSCORE_NAME,
lastof(hs[i].company));
73 hs[i].
title = EndGameGetPerformanceTitleFromValue(score);
84 return (*b)->old_economy[0].performance_history - (*a)->old_economy[0].performance_history;
99 FOR_ALL_COMPANIES(c) cl[count++] = c;
106 memset(_highscore_table[
SP_MULTIPLAYER], 0,
sizeof(_highscore_table[SP_MULTIPLAYER]));
109 for (i = 0; i <
lengthof(_highscore_table[SP_MULTIPLAYER]) && i < count; i++) {
116 hs->
title = EndGameGetPerformanceTitleFromValue(hs->
score);
137 for (hs = _highscore_table[i]; hs !=
endof(_highscore_table[i]); hs++) {
141 if (fwrite(&length,
sizeof(length), 1, fp) != 1 ||
142 fwrite(hs->
company, length, 1, fp) > 1 ||
143 fwrite(&hs->
score,
sizeof(hs->
score), 1, fp) != 1 ||
144 fwrite(
" ", 2, 1, fp) != 1) {
145 DEBUG(misc, 1,
"Could not save highscore.");
160 memset(_highscore_table, 0,
sizeof(_highscore_table));
167 for (hs = _highscore_table[i]; hs !=
endof(_highscore_table[i]); hs++) {
169 if (fread(&length,
sizeof(length), 1, fp) != 1 ||
171 fread(&hs->
score,
sizeof(hs->
score), 1, fp) != 1 ||
172 fseek(fp, 2, SEEK_CUR) == -1) {
173 DEBUG(misc, 1,
"Highscore corrupted");
178 hs->
title = EndGameGetPerformanceTitleFromValue(hs->
score);