9
extern void fillrect (int x1, int y1, int x2, int y2, int color);
13
oes_fillrect (SDL_Surface *screen, int x1, int y1, int x2, int y2, int color)
20
int sdlcolor = SDL_MapRGB(screen->format,
24
SDL_FillRect(screen, &r, sdlcolor);
29
draw_hiscores (SDL_Surface *screen, const SDL_Rect *r)
37
int xp, xq; /* horizontal scale factor (p/q) */
38
int yp, yq; /* vertical scale factor (p/q) */
40
if ((f = fopen(gPrefs.scorepath, "rb")))
42
fread(&Game.HiScore, sizeof(SCORES), 1, f);
46
x = r->x; y = r->y; w = r->w; h = r->h;
47
/* map 640 * p/q => screen->w */
52
#define X(n) (x + (n * xp / xq))
53
#define Y(n) (y + (n * yp / yq))
54
oes_fillrect(screen, X(0), Y(0), X(640), Y(480), 0);
55
oes_fillrect(screen, X(19), Y(59), X(621), Y(421), 0x007f00);
56
oes_fillrect(screen, X(20), Y(60), X(620), Y(420), 0x003f00);
57
oes_fillrect(screen, X(19), Y(80), X(621), Y(81), 0x007f00);
58
print(X(224 + 12), Y(412), COLOR_GREEN, "click to play | press ESC to quit");
62
printShadow(X(30), Y(row), " Top Ten (Difficulty: Easy");
64
for (i = 0; i < 10; i ++)
67
printShadow(X(col), Y(row), Game.HiScore.easy_n[i]);
68
snprintf(score, sizeof(score), "%d", Game.HiScore.easy_s[i]);
69
if (Game.HiScore.easy_s[i])
70
printShadow(X(col + 48), Y(row), score);
75
printShadow(X(250), Y(row), "Top Ten (Difficulty: Medium)");
77
for (i = 0; i < 10; i++)
80
printShadow(X(col), Y(row), Game.HiScore.medium_n[i]);
81
snprintf(score, sizeof(score), "%d", Game.HiScore.medium_s[i]);
82
if (Game.HiScore.medium_s[i])
83
printShadow(X(col + 48), Y(row), score);
88
printShadow(X(476), Y(row), " Top Ten (Difficulty: Hard)");
90
for (i = 0; i < 10; i++)
93
printShadow(X(col), Y(row), Game.HiScore.hard_n[i]);
94
snprintf(score, sizeof(score), "%d", Game.HiScore.hard_s[i]);
95
if (Game.HiScore.hard_s[i])
96
printShadow(X(col + 48), Y(row), score);
116
if ((f = fopen (gPrefs.scorepath, "rb")))
118
fread (&Game.HiScore, sizeof(SCORES), 1, f);
123
fillrect(0,0,640,480,0);
124
fillrect(19,59,621,421,0x007f00);
125
fillrect(20,60,620,420,0x003f00);
126
fillrect(19,80,621,81,0x007f00);
127
print(224 + 12, 412, COLOR_GREEN, "click to play | press ESC to quit");
130
printShadow (30, row, " Top Ten (Difficulty: Easy");
132
for (i = 0; i < 10; i++)
134
printShadow (24, row, Game.HiScore.easy_n[i]);
135
snprintf (score, sizeof(score), "%d", Game.HiScore.easy_s[i]);
136
if (Game.HiScore.easy_s[i])
137
printShadow (24+48, row, score);
142
printShadow (250, row, "Top Ten (Difficulty: Medium)");
144
for (i = 0; i < 10; i++)
146
printShadow (250, row, Game.HiScore.medium_n[i]);
147
snprintf (score, sizeof(score), "%d", Game.HiScore.medium_s[i]);
148
if (Game.HiScore.medium_s[i])
149
printShadow (298, row, score);
154
printShadow (476, row, " Top Ten (Difficulty: Hard)");
156
for (i = 0; i < 10; i++)
158
printShadow (476, row, Game.HiScore.hard_n[i]);
159
snprintf (score, sizeof(score), "%d", Game.HiScore.hard_s[i]);
160
if (Game.HiScore.hard_s[i])
161
printShadow (476+48, row, score);
166
SDL_Flip (Game.Screen);
170
void shove_hiscores(int pos) // Shift scorecard down, bump last one.
174
for (i = 9; i > pos; i--)
177
snprintf (names[i], 9, "%s", names[i-1]);
179
scores[i] = scores[i-1];
182
scores[i] = Game.Score;
183
snprintf (names[i], 9, "%s", uName);
190
struct passwd *pw_ent = getpwuid (geteuid());
193
memset (&Game.HiScore, 0, sizeof(SCORES));
194
snprintf (uName, 9, "%s", getenv("USER"));
197
snprintf (path, 256, "%s/.oes/scores.bin", pw_ent->pw_dir);
199
f = fopen (path, "rb");
202
fread (&Game.HiScore, sizeof(SCORES), 1, f);
210
if (!(f = fopen(gPrefs.scorepath, "wb")))
212
fprintf (stderr, "Unable to open hiscore file. Ignoring...\n");
215
fwrite (&Game.HiScore, sizeof (SCORES), 1, f);
219
void process_hiscore()
225
if (gPrefs.difficulty == 1)
227
memcpy (&scores, &Game.HiScore.easy_s, sizeof(int)*10);
228
memcpy (&names, &Game.HiScore.easy_n, sizeof(char)*90);
230
else if (gPrefs.difficulty == 2)
232
memcpy (&scores, &Game.HiScore.medium_s, sizeof(int)*10);
233
memcpy (&names, &Game.HiScore.medium_n, sizeof(char)*90);
237
memcpy (&scores, &Game.HiScore.hard_s, sizeof(int)*10);
238
memcpy (&names, &Game.HiScore.hard_n, sizeof(char)*90);
240
for (i = 0; i < 10; i++)
241
if (Game.Score > scores[i])
249
if (gPrefs.difficulty == 1)
251
memcpy (&Game.HiScore.easy_s, &scores, sizeof(int)*10);
252
memcpy (&Game.HiScore.easy_n, &names, sizeof(char)*90);
254
else if (gPrefs.difficulty == 2)
256
memcpy (&Game.HiScore.medium_s, &scores, sizeof(int)*10);
257
memcpy (&Game.HiScore.medium_n, &names, sizeof(char)*90);
261
memcpy (&Game.HiScore.hard_s, &scores, sizeof(int)*10);
262
memcpy (&Game.HiScore.hard_n, &names, sizeof(char)*90);