11
typedef struct Score {
12
char name[NAMELEN + 1];
17
static Score scores[SCORES];
21
FILE *scorefile = fopen(SCOREFILE, "r");
24
if (scorefile != NULL) {
25
for (i = 0; i < SCORES; i++)
26
fscanf(scorefile, "%20s%d%d\n", scores[i].name,
27
&scores[i].level, &scores[i].score);
31
for (i = 0; i < SCORES; i++) {
32
strcpy(scores[i].name, "Anonymous");
41
FILE *scorefile = fopen(SCOREFILE, "w");
43
if (scorefile == NULL)
45
for (i = 0; i < SCORES; i++)
46
fprintf(scorefile, "%-*s %d %d\n", NAMELEN,
47
scores[i].name, scores[i].level, scores[i].score);
51
/* Add new high score to list */
53
Scorelist_recalc(const char *str, int level, int score) {
55
char tname[NAMELEN + 1];
58
if (scores[SCORES - 1].score >= score)
60
for (i = SCORES - 1; i > 0; i--) {
61
if (scores[i - 1].score < score) {
62
strcpy (scores[i].name, scores[i - 1].name);
63
scores[i].level = scores[i - 1].level;
64
scores[i].score = scores[i - 1].score;
70
memset(tname, 0, sizeof(tname));
71
if (str == NULL || str[0] == 0)
72
strcpy(tname, "Anonymous");
73
strncpy(tname, str, sizeof(tname) - 1);
74
nl = strchr(tname,'\n');
78
strcpy(scores[i].name, tname);
79
scores[i].level = level;
80
scores[i].score = score;
87
sprintf(str, "%s\n\n", "High Scores:");
88
sprintf(str, "%s%-*s %6s %7s\n", str, NAMELEN,
89
"Name", "Level", "Score");
90
for (i = 0; i < SCORES; i++) {
91
sprintf(str, "%s%-*s %6d %7d\n", str, NAMELEN,
92
scores[i].name, scores[i].level, scores[i].score);
94
UI_update_dialog(DIALOG_HIGHSCORE, str);
98
Scorelist_ishighscore(int val) {
99
return (val > scores[SCORES - 1].score);