(svn r24786) -Codechange: Add SettingsProfile enum for difficulty profiles and highscore tables.
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
#include "core/sort_func.hpp"
|
||||
#include "debug.h"
|
||||
|
||||
HighScore _highscore_table[5][5]; // 4 difficulty-settings (+ network); top 5
|
||||
HighScore _highscore_table[SP_HIGHSCORE_END][5]; ///< various difficulty-settings; top 5
|
||||
char *_highscore_file; ///< The file to store the highscore data in.
|
||||
|
||||
static const StringID _endgame_perf_titles[] = {
|
||||
@@ -82,8 +82,10 @@ static int CDECL HighScoreSorter(const Company * const *a, const Company * const
|
||||
return (*b)->old_economy[0].performance_history - (*a)->old_economy[0].performance_history;
|
||||
}
|
||||
|
||||
/* Save the highscores in a network game when it has ended */
|
||||
#define LAST_HS_ITEM lengthof(_highscore_table) - 1
|
||||
/**
|
||||
* Save the highscores in a network game when it has ended
|
||||
* @return Position of the local company in the highscore list.
|
||||
*/
|
||||
int8 SaveHighScoreValueNetwork()
|
||||
{
|
||||
const Company *c;
|
||||
@@ -99,11 +101,11 @@ int8 SaveHighScoreValueNetwork()
|
||||
{
|
||||
uint i;
|
||||
|
||||
memset(_highscore_table[LAST_HS_ITEM], 0, sizeof(_highscore_table[0]));
|
||||
memset(_highscore_table[SP_MULTIPLAYER], 0, sizeof(_highscore_table[SP_MULTIPLAYER]));
|
||||
|
||||
/* Copy over Top5 companies */
|
||||
for (i = 0; i < lengthof(_highscore_table[LAST_HS_ITEM]) && i < count; i++) {
|
||||
HighScore *hs = &_highscore_table[LAST_HS_ITEM][i];
|
||||
for (i = 0; i < lengthof(_highscore_table[SP_MULTIPLAYER]) && i < count; i++) {
|
||||
HighScore *hs = &_highscore_table[SP_MULTIPLAYER][i];
|
||||
|
||||
SetDParam(0, cl[i]->index);
|
||||
SetDParam(1, cl[i]->index);
|
||||
@@ -129,7 +131,7 @@ void SaveToHighScore()
|
||||
uint i;
|
||||
HighScore *hs;
|
||||
|
||||
for (i = 0; i < LAST_HS_ITEM; i++) { // don't save network highscores
|
||||
for (i = 0; i < SP_SAVED_HIGHSCORE_END; i++) {
|
||||
for (hs = _highscore_table[i]; hs != endof(_highscore_table[i]); hs++) {
|
||||
/* First character is a command character, so strlen will fail on that */
|
||||
byte length = min(sizeof(hs->company), StrEmpty(hs->company) ? 0 : (int)strlen(&hs->company[1]) + 1);
|
||||
@@ -139,7 +141,7 @@ void SaveToHighScore()
|
||||
fwrite(&hs->score, sizeof(hs->score), 1, fp) != 1 ||
|
||||
fwrite(" ", 2, 1, fp) != 1) { // XXX - placeholder for hs->title, not saved anymore; compatibility
|
||||
DEBUG(misc, 1, "Could not save highscore.");
|
||||
i = LAST_HS_ITEM;
|
||||
i = SP_SAVED_HIGHSCORE_END;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -159,7 +161,7 @@ void LoadFromHighScore()
|
||||
uint i;
|
||||
HighScore *hs;
|
||||
|
||||
for (i = 0; i < LAST_HS_ITEM; i++) { // don't load network highscores
|
||||
for (i = 0; i < SP_SAVED_HIGHSCORE_END; i++) {
|
||||
for (hs = _highscore_table[i]; hs != endof(_highscore_table[i]); hs++) {
|
||||
byte length;
|
||||
if (fread(&length, sizeof(length), 1, fp) != 1 ||
|
||||
@@ -167,7 +169,7 @@ void LoadFromHighScore()
|
||||
fread(&hs->score, sizeof(hs->score), 1, fp) != 1 ||
|
||||
fseek(fp, 2, SEEK_CUR) == -1) { // XXX - placeholder for hs->title, not saved anymore; compatibility
|
||||
DEBUG(misc, 1, "Highscore corrupted");
|
||||
i = LAST_HS_ITEM;
|
||||
i = SP_SAVED_HIGHSCORE_END;
|
||||
break;
|
||||
}
|
||||
*lastof(hs->company) = '\0';
|
||||
|
Reference in New Issue
Block a user