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