1 #include "bumprace.h"
2 #include <errno.h>
3 #include <string.h>
4 #include <stdlib.h>
5 
6 char Player[10][200];
7 int Hiscore[10],i;
8 
OpenOptionsFile(char * mode)9 FILE *OpenOptionsFile( char *mode )
10 {
11     char filename[200];
12     FILE *file;
13 
14     if ((char *)getenv("HOME") != NULL)
15 		snprintf( filename, sizeof(filename), "%s/.bumprace", getenv("HOME"));
16     else
17 		sprintf( filename, "bumprace.dat");
18 
19     file = fopen(filename, mode);
20 
21     if (file==NULL) {
22 	fprintf(stderr, "\nWarning: I could not open the options file ");
23 	if (strcmp(mode, "r") == 0)
24 	    fprintf(stderr, "for read:");
25 	else if (strcmp(mode, "w") == 0)
26 	    fprintf(stderr, "for write:");
27 
28 	fprintf(stderr, "\n%s\n"
29 	    "The error that occurred was:\n"
30 	    "%s\n\n", filename, strerror(errno));
31     }
32 
33     return file;
34 }
35 
ReadOptions()36 void ReadOptions()
37 {
38     FILE *file;
39 
40     file=OpenOptionsFile("r");
41 
42     if (file==NULL) {
43 	file=OpenOptionsFile("w");
44 	if (file==NULL) exit(1);
45 
46 	fprintf(file, "# BumpRace Options File\n\n");
47 	fprintf(file, "Sam\nLion\nBill\nJohn\nAndreas\nAaron\nMichael\nPhoenix\nPierre\nRobert\n");
48 	for (i=0;i<10;i++)
49 	    fprintf(file, "%d\n", 4000-i*400);
50 
51 	fclose(file);
52 	file=OpenOptionsFile("r");
53     }
54 
55     fscanf(file, "%*s%*s%*s%*s\n");
56     for (i=0;i<10;i++)
57 	fscanf(file, "%199[^\n]\n",Player[i]);
58     for (i=0;i<10;i++)
59 	fscanf(file, "%d\n",&Hiscore[i]);
60 //    for (i=0;i<10;i++)
61 //	printf("%s %d\n",Player[i],Hiscore[i]);
62 
63     fclose(file);
64 }
65 
FinalScore()66 void FinalScore()
67 {
68     char Name[200]="",text[200];
69 	int a;
70     FILE *file;
71 
72     if (Score>Hiscore[9]) {
73     Blit(0,0,back);
74     XCenteredString(Screen, 200, "< YOUR FINAL SCORE >");
75     sprintf(text,"%d", Score);
76     XCenteredString(Screen, 250, text);
77     XCenteredString(Screen, 300, "Enter Your Name:");
78     Update();
79 	SDL_EventState(SDL_KEYUP, SDL_ENABLE);
80 	SDL_EventState(SDL_KEYDOWN, SDL_ENABLE);
81 	SFont_Input(Screen, 350, 350, 200, Name);
82     if (strcmp(Name,"")==0) strcpy(Name,"Anonymous Coward");
83     for (i=0;i<10;i++) {
84 	if (Score>Hiscore[i]) {
85 	    // Move other players down on the list
86 	    for (a=9;a>=i;a--) {
87 		strcpy(Player[a],Player[a-1]);
88 		Hiscore[a]=Hiscore[a-1];
89 	    }
90 	    // add the player
91 	    strcpy(Player[i],Name);
92 	    Hiscore[i]=Score;
93 	    break;
94 	}
95     }
96 //    for (i=0;i<10;i++)
97 //	printf("%s %d\n",Player[i],Hiscore[i]);
98 
99     // write everything into the options file
100     file=OpenOptionsFile("w");
101     if (file==NULL) exit(1);
102 
103     fprintf(file, "# BumpRace Options File\n\n");
104     for (i=0;i<10;i++)
105 	fprintf(file, "%s\n", Player[i]);
106     for (i=0;i<10;i++)
107 	fprintf(file, "%d\n", Hiscore[i]);
108 
109     fclose(file);
110 
111 } else {
112 
113     if (Score<0) Score=0;
114     Blit(0,0,back);
115     XCenteredString(Screen, 200, "< YOUR FINAL SCORE >");
116     sprintf(text,"%d", Score);
117     XCenteredString(Screen, 250, text);
118     XCenteredString(Screen, 300, "You didn't qualify for the highscore list...");
119     Update();
120     SDL_EventState(SDL_KEYUP, SDL_ENABLE);
121     SDL_EventState(SDL_KEYDOWN, SDL_ENABLE);
122     SDL_WaitEvent(&event);
123     SDL_WaitEvent(&event);
124 }}
125 
ShowHiscore()126 void ShowHiscore()
127 {
128     SDL_Event WaitEvent;
129     char text[200];
130     int i;
131 
132     Blit(0,0,back);
133     XCenteredString(Screen, 100, "< BUMPRACE HIGHSCORES >");
134     for (i=0;i<10;i++) {
135 	sprintf(text,"%s", Player[i]);
136 	PutString(Screen,200,150+i*30,text);
137 	sprintf(text,"%d", Hiscore[i]);
138 	PutString(Screen,600-SFont_TextWidth(text),150+i*30,text);
139     }
140     Update();
141     while ((WaitEvent.type!=SDL_KEYDOWN)&&(WaitEvent.type!=SDL_MOUSEBUTTONDOWN)) {
142 	SDL_PollEvent(&WaitEvent);
143 	SDL_WaitEvent(&WaitEvent);
144     }
145 }
146