X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=884571eb3b4915e770bd52cbba1152ec490976cd;hb=2ae6ae8ed951e87fcba7c363705cd6ddea8de91c;hp=f1872c68512544ce4385b77813f2fd0faa24b864;hpb=74b5b6c19587f93c45b72b1153154030dc99b50d;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index f1872c68..884571eb 100644 --- a/src/files.c +++ b/src/files.c @@ -1,23 +1,24 @@ /*********************************************************** -* Rocks'n'Diamonds -- McDuffin Strikes Back! * +* Rocks'n'Diamonds -- McDuffin Strikes Back! * *----------------------------------------------------------* -* (c) 1995-98 Artsoft Entertainment * -* Holger Schemel * -* Oststrasse 11a * -* 33604 Bielefeld * -* phone: ++49 +521 290471 * -* email: aeglos@valinor.owl.de * +* (c) 1995-2000 Artsoft Entertainment * +* Holger Schemel * +* Detmolder Strasse 189 * +* 33604 Bielefeld * +* Germany * +* e-mail: info@artsoft.org * *----------------------------------------------------------* -* files.h * +* files.c * ***********************************************************/ #include #include #include +#include "libgame/libgame.h" + #include "files.h" #include "tools.h" -#include "misc.h" #include "tape.h" #include "joystick.h" @@ -45,8 +46,7 @@ #define TAPE_COOKIE_10 "ROCKSNDIAMONDS_LEVELREC_FILE_VERSION_1.0" /* file names and filename extensions */ -#ifndef MSDOS -#define USERDATA_DIRECTORY ".rocksndiamonds" +#if !defined(PLATFORM_MSDOS) #define LEVELSETUP_DIRECTORY "levelsetup" #define SETUP_FILENAME "setup.conf" #define LEVELSETUP_FILENAME "levelsetup.conf" @@ -55,7 +55,6 @@ #define TAPEFILE_EXTENSION "tape" #define SCOREFILE_EXTENSION "score" #else -#define USERDATA_DIRECTORY "userdata" #define LEVELSETUP_DIRECTORY "lvlsetup" #define SETUP_FILENAME "setup.cnf" #define LEVELSETUP_FILENAME "lvlsetup.cnf" @@ -65,11 +64,7 @@ #define SCOREFILE_EXTENSION "sco" #endif -#if defined(MSDOS) || defined(WIN32) -#define ERROR_FILENAME "error.out" -#endif - -#ifdef WIN32 +#if defined(PLATFORM_WIN32) #ifndef S_IRGRP #define S_IRGRP S_IRUSR #endif @@ -88,13 +83,12 @@ #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) #define MODE_W_ALL (S_IWUSR | S_IWGRP | S_IWOTH) #define MODE_X_ALL (S_IXUSR | S_IXGRP | S_IXOTH) -#define USERDATA_DIR_MODE (MODE_R_ALL | MODE_X_ALL | S_IWUSR) #define LEVEL_PERMS (MODE_R_ALL | MODE_W_ALL) #define SCORE_PERMS LEVEL_PERMS #define TAPE_PERMS LEVEL_PERMS @@ -210,21 +204,6 @@ char *getLevelClassDescription(struct LevelDirInfo *ldi) static void SaveUserLevelInfo(); /* for 'InitUserLevelDir()' */ static char *getSetupLine(char *, int); /* for 'SaveUserLevelInfo()' */ -char *getUserDataDir() -{ - static char *userdata_dir = NULL; - - if (!userdata_dir) - { - char *home_dir = getHomeDir(); - char *data_dir = USERDATA_DIRECTORY; - - userdata_dir = getPath2(home_dir, data_dir); - } - - return userdata_dir; -} - static char *getSetupDir() { return getUserDataDir(); @@ -344,22 +323,6 @@ static char *getScoreFilename(int nr) return filename; } -static void createDirectory(char *dir, char *text) -{ - if (access(dir, F_OK) != 0) -#ifdef WIN32 - if (mkdir(dir) != 0) -#else - if (mkdir(dir, USERDATA_DIR_MODE) != 0) -#endif - Error(ERR_WARN, "cannot create %s directory '%s'", text, dir); -} - -static void InitUserDataDirectory() -{ - createDirectory(getUserDataDir(), "user data"); -} - static void InitTapeDirectory(char *level_subdir) { createDirectory(getUserDataDir(), "user data"); @@ -1078,39 +1041,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 +1118,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 +1492,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->team_mode = FALSE; si->handicap = TRUE; si->time_limit = TRUE; + si->fullscreen = FALSE; for (i=0; iinput[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 +2043,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) { @@ -2212,46 +2178,3 @@ void SaveLevelSetup_SeriesInfo() chmod(filename, SETUP_PERMS); } - -#if defined(MSDOS) || defined(WIN32) -void initErrorFile() -{ - char *filename; - - InitUserDataDirectory(); - - filename = getPath2(getUserDataDir(), ERROR_FILENAME); - unlink(filename); - free(filename); -} - -FILE *openErrorFile() -{ - char *filename; - FILE *error_file; - - filename = getPath2(getUserDataDir(), ERROR_FILENAME); - error_file = fopen(filename, "a"); - free(filename); - - return error_file; -} - -void dumpErrorFile() -{ - char *filename; - FILE *error_file; - - filename = getPath2(getUserDataDir(), ERROR_FILENAME); - error_file = fopen(filename, "r"); - free(filename); - - if (error_file != NULL) - { - while (!feof(error_file)) - fputc(fgetc(error_file), stderr); - - fclose(error_file); - } -} -#endif