rnd-20001203-2-src
[rocksndiamonds.git] / src / files.c
index f1872c68512544ce4385b77813f2fd0faa24b864..f8bbea80a85ffde79aaacdc092af0171e55117f8 100644 (file)
 #include <dirent.h>
 #include <sys/stat.h>
 
+#include "libgame/libgame.h"
+
 #include "files.h"
 #include "tools.h"
-#include "misc.h"
 #include "tape.h"
 #include "joystick.h"
 
@@ -45,7 +46,7 @@
 #define TAPE_COOKIE_10         "ROCKSNDIAMONDS_LEVELREC_FILE_VERSION_1.0"
 
 /* file names and filename extensions */
-#ifndef MSDOS
+#if !defined(PLATFORM_MSDOS)
 #define USERDATA_DIRECTORY     ".rocksndiamonds"
 #define LEVELSETUP_DIRECTORY   "levelsetup"
 #define SETUP_FILENAME         "setup.conf"
 #define SCOREFILE_EXTENSION    "sco"
 #endif
 
-#if defined(MSDOS) || defined(WIN32)
+#if !defined(PLATFORM_UNIX)
 #define ERROR_FILENAME         "error.out"
 #endif
 
-#ifdef WIN32
+#if defined(PLATFORM_WIN32)
 #ifndef S_IRGRP
 #define S_IRGRP S_IRUSR
 #endif
@@ -88,7 +89,7 @@
 #ifndef S_IXOTH
 #define S_IXOTH S_IXUSR
 #endif
-#endif
+#endif /* PLATFORM_WIN32 */
 
 /* file permissions for newly written files */
 #define MODE_R_ALL             (S_IRUSR | S_IRGRP | S_IROTH)
@@ -347,7 +348,7 @@ static char *getScoreFilename(int nr)
 static void createDirectory(char *dir, char *text)
 {
   if (access(dir, F_OK) != 0)
-#ifdef WIN32
+#if defined(PLATFORM_WIN32)
     if (mkdir(dir) != 0)
 #else
     if (mkdir(dir, USERDATA_DIR_MODE) != 0)
@@ -1078,39 +1079,40 @@ void SaveScore(int level_nr)
 #define SETUP_TOKEN_TEAM_MODE          10
 #define SETUP_TOKEN_HANDICAP           11
 #define SETUP_TOKEN_TIME_LIMIT         12
+#define SETUP_TOKEN_FULLSCREEN         13
 
 /* player setup */
-#define SETUP_TOKEN_USE_JOYSTICK       13
-#define SETUP_TOKEN_JOY_DEVICE_NAME    14
-#define SETUP_TOKEN_JOY_XLEFT          15
-#define SETUP_TOKEN_JOY_XMIDDLE                16
-#define SETUP_TOKEN_JOY_XRIGHT         17
-#define SETUP_TOKEN_JOY_YUPPER         18
-#define SETUP_TOKEN_JOY_YMIDDLE                19
-#define SETUP_TOKEN_JOY_YLOWER         20
-#define SETUP_TOKEN_JOY_SNAP           21
-#define SETUP_TOKEN_JOY_BOMB           22
-#define SETUP_TOKEN_KEY_LEFT           23
-#define SETUP_TOKEN_KEY_RIGHT          24
-#define SETUP_TOKEN_KEY_UP             25
-#define SETUP_TOKEN_KEY_DOWN           26
-#define SETUP_TOKEN_KEY_SNAP           27
-#define SETUP_TOKEN_KEY_BOMB           28
+#define SETUP_TOKEN_USE_JOYSTICK       14
+#define SETUP_TOKEN_JOY_DEVICE_NAME    15
+#define SETUP_TOKEN_JOY_XLEFT          16
+#define SETUP_TOKEN_JOY_XMIDDLE                17
+#define SETUP_TOKEN_JOY_XRIGHT         18
+#define SETUP_TOKEN_JOY_YUPPER         19
+#define SETUP_TOKEN_JOY_YMIDDLE                20
+#define SETUP_TOKEN_JOY_YLOWER         21
+#define SETUP_TOKEN_JOY_SNAP           22
+#define SETUP_TOKEN_JOY_BOMB           23
+#define SETUP_TOKEN_KEY_LEFT           24
+#define SETUP_TOKEN_KEY_RIGHT          25
+#define SETUP_TOKEN_KEY_UP             26
+#define SETUP_TOKEN_KEY_DOWN           27
+#define SETUP_TOKEN_KEY_SNAP           28
+#define SETUP_TOKEN_KEY_BOMB           29
 
 /* level directory info */
-#define LEVELINFO_TOKEN_NAME           29
-#define LEVELINFO_TOKEN_NAME_SHORT     30
-#define LEVELINFO_TOKEN_NAME_SORTING   31
-#define LEVELINFO_TOKEN_AUTHOR         32
-#define LEVELINFO_TOKEN_IMPORTED_FROM  33
-#define LEVELINFO_TOKEN_LEVELS         34
-#define LEVELINFO_TOKEN_FIRST_LEVEL    35
-#define LEVELINFO_TOKEN_SORT_PRIORITY  36
-#define LEVELINFO_TOKEN_LEVEL_GROUP    37
-#define LEVELINFO_TOKEN_READONLY       38
+#define LEVELINFO_TOKEN_NAME           30
+#define LEVELINFO_TOKEN_NAME_SHORT     31
+#define LEVELINFO_TOKEN_NAME_SORTING   32
+#define LEVELINFO_TOKEN_AUTHOR         33
+#define LEVELINFO_TOKEN_IMPORTED_FROM  34
+#define LEVELINFO_TOKEN_LEVELS         35
+#define LEVELINFO_TOKEN_FIRST_LEVEL    36
+#define LEVELINFO_TOKEN_SORT_PRIORITY  37
+#define LEVELINFO_TOKEN_LEVEL_GROUP    38
+#define LEVELINFO_TOKEN_READONLY       39
 
 #define FIRST_GLOBAL_SETUP_TOKEN       SETUP_TOKEN_PLAYER_NAME
-#define LAST_GLOBAL_SETUP_TOKEN                SETUP_TOKEN_TIME_LIMIT
+#define LAST_GLOBAL_SETUP_TOKEN                SETUP_TOKEN_FULLSCREEN
 
 #define FIRST_PLAYER_SETUP_TOKEN       SETUP_TOKEN_USE_JOYSTICK
 #define LAST_PLAYER_SETUP_TOKEN                SETUP_TOKEN_KEY_BOMB
@@ -1154,6 +1156,7 @@ static struct
   { TYPE_SWITCH,  &si.team_mode,       "team_mode"                     },
   { TYPE_SWITCH,  &si.handicap,                "handicap"                      },
   { TYPE_SWITCH,  &si.time_limit,      "time_limit"                    },
+  { TYPE_SWITCH,  &si.fullscreen,      "fullscreen"                    },
 
   /* player setup */
   { TYPE_BOOLEAN, &sii.use_joystick,   ".use_joystick"                 },
@@ -1527,6 +1530,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si)
   si->team_mode = FALSE;
   si->handicap = TRUE;
   si->time_limit = TRUE;
+  si->fullscreen = FALSE;
 
   for (i=0; i<MAX_PLAYERS; i++)
   {
@@ -1540,12 +1544,12 @@ static void setSetupInfoToDefaults(struct SetupInfo *si)
     si->input[i].joy.ylower  = JOYSTICK_YLOWER;
     si->input[i].joy.snap  = (i == 0 ? JOY_BUTTON_1 : 0);
     si->input[i].joy.bomb  = (i == 0 ? JOY_BUTTON_2 : 0);
-    si->input[i].key.left  = (i == 0 ? DEFAULT_KEY_LEFT  : KEY_UNDEFINED);
-    si->input[i].key.right = (i == 0 ? DEFAULT_KEY_RIGHT : KEY_UNDEFINED);
-    si->input[i].key.up    = (i == 0 ? DEFAULT_KEY_UP    : KEY_UNDEFINED);
-    si->input[i].key.down  = (i == 0 ? DEFAULT_KEY_DOWN  : KEY_UNDEFINED);
-    si->input[i].key.snap  = (i == 0 ? DEFAULT_KEY_SNAP  : KEY_UNDEFINED);
-    si->input[i].key.bomb  = (i == 0 ? DEFAULT_KEY_BOMB  : KEY_UNDEFINED);
+    si->input[i].key.left  = (i == 0 ? DEFAULT_KEY_LEFT  : KSYM_UNDEFINED);
+    si->input[i].key.right = (i == 0 ? DEFAULT_KEY_RIGHT : KSYM_UNDEFINED);
+    si->input[i].key.up    = (i == 0 ? DEFAULT_KEY_UP    : KSYM_UNDEFINED);
+    si->input[i].key.down  = (i == 0 ? DEFAULT_KEY_DOWN  : KSYM_UNDEFINED);
+    si->input[i].key.snap  = (i == 0 ? DEFAULT_KEY_SNAP  : KSYM_UNDEFINED);
+    si->input[i].key.bomb  = (i == 0 ? DEFAULT_KEY_BOMB  : KSYM_UNDEFINED);
   }
 }
 
@@ -2077,7 +2081,7 @@ static void checkSeriesInfo()
   level_directory = getPath2((leveldir_current->user_defined ?
                              getUserLevelDir("") :
                              options.level_directory),
-                            leveldir_current->filename);
+                            leveldir_current->fullpath);
 
   if ((dir = opendir(level_directory)) == NULL)
   {
@@ -2213,7 +2217,7 @@ void SaveLevelSetup_SeriesInfo()
   chmod(filename, SETUP_PERMS);
 }
 
-#if defined(MSDOS) || defined(WIN32)
+#if !defined(PLATFORM_UNIX)
 void initErrorFile()
 {
   char *filename;