1 /***********************************************************
2 * K O U L E S *
3 *----------------------------------------------------------*
4 * C1995 JAHUSOFT *
5 * Jan Hubicka *
6 * Dukelskych Bojovniku 1944 *
7 * 390 03 Tabor *
8 * Czech Republic *
9 * Phone: 0041-361-32613 *
10 * eMail: hubicka@limax.paru.cas.cz *
11 *----------------------------------------------------------*
12 * Copyright(c)1995,1996 by Jan Hubicka.See README for *
13 * licence details. *
14 *----------------------------------------------------------*
15 * rcfiles.c saving and loading of rc files *
16 ***********************************************************/
17 /* Changes for OS/2 Warp with Dive. *
18 * Copyright(c)1996 by Thomas A. K. Kjaer *
19 ***********************************************************/
20 /* Changes for joystick "accelerate by deflection" *
21 * (c) 1997 by Ludvik Tesar (Ludv\'{\i}k Tesa\v{r}) *
22 ************************LT*********************************/
23 #include "koules.h"
24 #ifdef XSUPPORT
25 static CONST char *name = ".xkoules-controls";
26 #else
27 #ifdef OS2DIVE
28 static CONST char *name = "koules.cfg";
29 #else
30 static CONST char *name = ".koules.svga-controls";
31 #endif
32 #endif
33
34 #ifdef OS2DIVE
35 static CONST char *levelsname = "koules.lev";
36 #else
37 static CONST char *levelsname = ".koules-levels";
38 #endif
mygetenv(char * name)39 static char * mygetenv(char *name)
40 {
41 static char name1[200];
42 char *var=getenv(name);
43 int i=strlen(var);
44 if(i>199) i=199;
45 memcpy(name1,var,i+1);
46 name1[199]=0;
47 return name1;
48 }
49
50 void
save_rc()51 save_rc ()
52 {
53 FILE *controls, *levels;
54 int zeros[] =
55 {0, 0, 0, 0, 0, 0, 0, 0};
56 char fullname[256];
57 #ifdef NETSUPPORT
58 if (client || server)
59 return;
60 #endif
61 #ifdef OS2DIVE
62 sprintf (fullname, "%s", name);
63 #else
64 sprintf (fullname, "%s/%s", mygetenv ("HOME"), name);
65 #endif
66 if ((controls = fopen (fullname, "w")) == NULL)
67 {
68 printf ("could not open save file:%s\n"
69 "saving of controls skippen\n", fullname);
70 perror ("error");
71 return;
72 }
73 fwrite (keys, 1, sizeof (keys), controls); /*save user defined keys */
74 #ifdef MOUSE
75 fwrite (&mouseplayer, 1, sizeof (int), controls); /*save mouseplayer */
76 #else
77 fwrite (zeros, 1, sizeof (int), controls);
78 #endif
79 #ifdef JOYSTICK
80 fwrite (joystickplayer, 1, sizeof (joystickplayer), controls);
81 #else
82 fwrite (zeros, 2, sizeof (int), controls);
83 #endif
84 fwrite (rotation, 1, sizeof (rotation), controls);
85 #ifdef JOYSTICK
86 fwrite (joystickmul, 1, sizeof (joystickmul), controls);
87 #else
88 fwrite (zeros, 2, sizeof (float), controls);
89 #endif
90 fclose (controls);
91 #ifdef OS2DIVE
92 sprintf (fullname, "%s", levelsname);
93 #else
94 sprintf (fullname, "%s/%s", mygetenv ("HOME"), levelsname);
95 #endif
96 if ((levels = fopen (fullname, "w")) == NULL)
97 {
98 printf ("could not open save file:%s\n"
99 "saving of controls skippen\n", fullname);
100 perror ("error");
101 return;
102 }
103 fwrite (&maxlevel, 1, sizeof (int), levels);
104 fwrite (&lastlevel, 1, sizeof (int), levels);
105 fwrite (&nrockets, 1, sizeof (int), levels);
106 fwrite (&gameplan, 1, sizeof (int), levels);
107 fwrite (&difficulty, 1, sizeof (int), levels);
108 fclose (levels);
109 }
110
111
112 void
load_rc()113 load_rc ()
114 {
115 FILE *controls, *levels;
116 int dummy[8];
117 char fullname[256];
118 #ifdef NETSUPPORT
119 if (client || server)
120 return;
121 #endif
122 #ifdef OS2DIVE
123 sprintf (fullname, "%s", name);
124 #else
125 sprintf (fullname, "%s/%s", mygetenv ("HOME"), name);
126 #endif
127 if ((controls = fopen (fullname, "r")) == NULL)
128 {
129 printf ("could not open save file:%s\n"
130 "using default values\n", fullname);
131 perror ("error");
132 goto skip;
133 }
134 fread (keys, 1, sizeof (keys), controls); /*save user defined keys */
135 #ifdef MOUSE
136 if(!fread (&mouseplayer, 1, sizeof (int), controls)) mouseplayer=-1; /*save mouseplayer */
137 #else
138 fread (dummy, 1, sizeof (int), controls);
139 #endif
140 #ifdef JOYSTICK
141 if(!fread (joystickplayer, 1, sizeof (joystickplayer), controls)) joystickplayer[0]=joystickplayer[1]=-1;
142 #else
143 fread (dummy, 2, sizeof (int), controls);
144 #endif
145 fread (rotation, 1, sizeof (rotation), controls);
146 #ifdef JOYSTICK
147 fread (joystickmul, 1, sizeof (joystickmul), controls);
148 #else
149 fread (dummy, 2, sizeof (float), controls);
150 #endif
151 fclose (controls);
152 skip:;
153 #ifdef OS2DIVE
154 sprintf (fullname, "%s", levelsname);
155 #else
156 sprintf (fullname, "%s/%s", mygetenv ("HOME"), levelsname);
157 #endif
158 if ((levels = fopen (fullname, "r")) == NULL)
159 {
160 printf ("could not open save file:%s\n"
161 "using default values\n", fullname);
162 perror ("error");
163 return;
164 }
165
166 fread (&maxlevel, 1, sizeof (int), levels);
167 fread (&lastlevel, 1, sizeof (int), levels);
168 if(maxlevel>=100||maxlevel<0) maxlevel=0;
169 if(lastlevel>maxlevel||lastlevel<0) lastlevel=0;
170 fread (&nrockets, 1, sizeof (int), levels);
171 if(nrockets<1) nrockets=1;
172 if(nrockets>4) nrockets=1;
173 if (fread (&gameplan, 1, sizeof (int), levels) != sizeof (int))
174 gameplan = COOPERATIVE;
175 if(gameplan<0||gameplan>1) gameplan=COOPERATIVE;
176 if (fread (&difficulty, 1, sizeof (int), levels) != sizeof (int))
177 difficulty = 2;
178 if(difficulty<0||difficulty>4) difficulty=COOPERATIVE;
179 fclose (levels);
180 }
181