X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=21ed3ca17f8614be3770784740da65e1be5baf7c;hb=2357c391b4a587709627cc30316734b3c83c8134;hp=17bc45e5986691d8b773e6ad12dad24c7a29df79;hpb=c4b26cf489dcc65a00bfcc05f7898700d2f0c9e4;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 17bc45e5..21ed3ca1 100644 --- a/src/files.c +++ b/src/files.c @@ -19,68 +19,6 @@ #include "tape.h" #include "joystick.h" -boolean CreateNewScoreFile() -{ - int i,j,k; - char filename[MAX_FILENAME_LEN]; - char empty_alias[MAX_NAMELEN]; - FILE *file; - - sprintf(filename,"%s/%s/%s", - level_directory,leveldir[leveldir_nr].filename,SCORE_FILENAME); - - if (!(file=fopen(filename,"w"))) - return(FALSE); - - for(i=0;ileveldir_nr < num_leveldirs) - leveldir_nr = local_player->leveldir_nr; - else - leveldir_nr = 0; - } - else - { - local_player->handicap = new_player.handicap; - local_player->level_nr = new_player.level_nr; - } - - level_nr = local_player->level_nr; - - if (file) - fclose(file); -} - -#endif - - - -void SaveLevel(int level_nr) -{ - int i,x,y; - char filename[MAX_FILENAME_LEN]; - FILE *file; - - sprintf(filename,"%s/%s/%d", - level_directory,leveldir[leveldir_nr].filename,level_nr); - - if (!(file=fopen(filename,"w"))) - { - Error(ERR_WARN, "cannot save level file '%s'", filename); - return; - } - - fputs(LEVEL_COOKIE,file); /* Formatkennung */ - fputc(0x0a,file); - - fputc(level.fieldx,file); - fputc(level.fieldy,file); - fputc(level.time / 256,file); - fputc(level.time % 256,file); - fputc(level.edelsteine / 256,file); - fputc(level.edelsteine % 256,file); - - for(i=0;ilogin_name, MAX_NAMELEN-1)) - { - fseek(file,-(2*MAX_NAMELEN+1+2+1+(version_10_file ? 0 : 11)),SEEK_CUR); - break; - } - } - - local_player->level_nr = level_nr; - - for(i=0;ilogin_name[i],file); - for(i=0;ialias_name[i],file); - fputc(local_player->handicap,file); - fputc(local_player->setup / 256,file); - fputc(local_player->setup % 256,file); - fputc(local_player->leveldir_nr,file); - if (!version_10_file) + fseek(file, + SCORE_COOKIE_LEN-1+level_nr*(MAX_SCORE_ENTRIES*(MAX_NAMELEN+2)), + SEEK_SET); + for(i=0;ilevel_nr,file); - for(i=0;i<10;i++) /* currently unused bytes */ - fputc(0,file); + for(j=0;jnext); - } -#endif - - - } fclose(file); @@ -1232,8 +1008,8 @@ static void decodeSetupFileList(struct SetupFileList *setup_file_list) int player_nr = 0; char *token; char *token_value; - int token_integer_value; boolean token_boolean_value; + int token_integer_value; int token_player_prefix_len; if (!setup_file_list) @@ -1241,8 +1017,8 @@ static void decodeSetupFileList(struct SetupFileList *setup_file_list) token = setup_file_list->token; token_value = setup_file_list->value; - token_integer_value = get_string_integer_value(token_value); token_boolean_value = get_string_boolean_value(token_value); + token_integer_value = get_string_integer_value(token_value); token_player_prefix_len = strlen(TOKEN_STR_PLAYER_PREFIX); @@ -1260,7 +1036,7 @@ static void decodeSetupFileList(struct SetupFileList *setup_file_list) for (i=0; i 1) - token_integer_value = 1; - setup.input[player_nr].joystick_nr = token_integer_value - 1; + case SETUP_TOKEN_JOY_DEVICE_NAME: + strncpy(setup.input[player_nr].joy.device_name, token_value, + MAX_FILENAME_LEN-1); + setup.input[player_nr].joy.device_name[MAX_FILENAME_LEN-1] = '\0'; break; case SETUP_TOKEN_JOY_SNAP: setup.input[player_nr].joy.snap = getJoySymbolFromJoyName(token_value); break; - case SETUP_TOKEN_JOY_BOMB : + case SETUP_TOKEN_JOY_XLEFT: + setup.input[player_nr].joy.xleft = token_integer_value; + break; + case SETUP_TOKEN_JOY_XMIDDLE: + setup.input[player_nr].joy.xmiddle = token_integer_value; + break; + case SETUP_TOKEN_JOY_XRIGHT: + setup.input[player_nr].joy.xright = token_integer_value; + break; + case SETUP_TOKEN_JOY_YUPPER: + setup.input[player_nr].joy.yupper = token_integer_value; + break; + case SETUP_TOKEN_JOY_YMIDDLE: + setup.input[player_nr].joy.ymiddle = token_integer_value; + break; + case SETUP_TOKEN_JOY_YLOWER: + setup.input[player_nr].joy.ylower = token_integer_value; + break; + case SETUP_TOKEN_JOY_BOMB: setup.input[player_nr].joy.bomb = getJoySymbolFromJoyName(token_value); break; case SETUP_TOKEN_KEY_LEFT: @@ -1341,11 +1140,6 @@ static void decodeSetupFileList(struct SetupFileList *setup_file_list) setup.input[player_nr].key.bomb = getKeySymFromX11KeyName(token_value); break; - case SETUP_TOKEN_ALIAS_NAME: - strncpy(local_player->alias_name, token_value, MAX_NAMELEN-1); - local_player->alias_name[MAX_NAMELEN-1] = '\0'; - break; - case TOKEN_INVALID: Error(ERR_WARN, "unknown token '%s' not recognized", token); break; @@ -1358,6 +1152,46 @@ static void decodeSetupFileList(struct SetupFileList *setup_file_list) decodeSetupFileList(setup_file_list->next); } +int getLevelSeriesNrFromLevelSeriesName(char *level_series_name) +{ + int i; + + if (!level_series_name) + return 0; + + for (i=0; i highest_level_nr) + last_level_nr = highest_level_nr; + } + + return last_level_nr; +} + void LoadSetup() { int i; @@ -1366,28 +1200,34 @@ void LoadSetup() /* always start with reliable default setup values */ - strncpy(local_player->login_name, GetLoginName(), MAX_NAMELEN-1); - local_player->login_name[MAX_NAMELEN-1] = '\0'; - - strncpy(local_player->alias_name, GetLoginName(), MAX_NAMELEN-1); - local_player->alias_name[MAX_NAMELEN-1] = '\0'; - - setup.sound_on = TRUE; - setup.sound_loops_on = FALSE; - setup.sound_music_on = FALSE; - setup.sound_simple_on = FALSE; - setup.toons_on = TRUE; - setup.direct_draw_on = FALSE; - setup.scroll_delay_on = FALSE; - setup.soft_scrolling_on = TRUE; - setup.fading_on = FALSE; - setup.autorecord_on = FALSE; + setup.sound = TRUE; + setup.sound_loops = FALSE; + setup.sound_music = FALSE; + setup.sound_simple = FALSE; + setup.toons = TRUE; + setup.double_buffering = TRUE; + setup.direct_draw = !setup.double_buffering; + setup.scroll_delay = FALSE; + setup.soft_scrolling = TRUE; + setup.fading = FALSE; + setup.autorecord = FALSE; setup.quick_doors = FALSE; + strncpy(setup.login_name, GetLoginName(), MAX_NAMELEN-1); + setup.login_name[MAX_NAMELEN-1] = '\0'; + strncpy(setup.alias_name, GetLoginName(), MAX_NAMELEN-1); + setup.alias_name[MAX_NAMELEN-1] = '\0'; + for (i=0; i leveldir[leveldir_nr].levels - 1) - level_nr = leveldir[leveldir_nr].levels - 1; - } - - break; - } - } - } - #if 0 - printSetupFileList(level_setup_list); -#endif - - checkSetupFileListIdentifier(level_setup_list, LEVELSETUP_COOKIE); - } - else - Error(ERR_RETURN, "using default setup values"); -} void SaveSetup() { @@ -1499,34 +1284,34 @@ void SaveSetup() fprintf(file, "%s\n", getSetupEntry("", SETUP_TOKEN_SOUND, - setup.sound_on)); + setup.sound)); fprintf(file, "%s\n", getSetupEntry("", SETUP_TOKEN_SOUND_LOOPS, - setup.sound_loops_on)); + setup.sound_loops)); fprintf(file, "%s\n", getSetupEntry("", SETUP_TOKEN_SOUND_MUSIC, - setup.sound_music_on)); + setup.sound_music)); fprintf(file, "%s\n", getSetupEntry("", SETUP_TOKEN_SOUND_SIMPLE, - setup.sound_simple_on)); + setup.sound_simple)); fprintf(file, "%s\n", getSetupEntry("", SETUP_TOKEN_TOONS, - setup.toons_on)); + setup.toons)); fprintf(file, "%s\n", getSetupEntry("", SETUP_TOKEN_DIRECT_DRAW, - setup.direct_draw_on)); + setup.direct_draw)); fprintf(file, "%s\n", getSetupEntry("", SETUP_TOKEN_SCROLL_DELAY, - setup.scroll_delay_on)); + setup.scroll_delay)); fprintf(file, "%s\n", getSetupEntry("", SETUP_TOKEN_SOFT_SCROLLING, - setup.soft_scrolling_on)); + setup.soft_scrolling)); fprintf(file, "%s\n", getSetupEntry("", SETUP_TOKEN_FADING, - setup.fading_on)); + setup.fading)); fprintf(file, "%s\n", getSetupEntry("", SETUP_TOKEN_AUTORECORD, - setup.autorecord_on)); + setup.autorecord)); fprintf(file, "%s\n", getSetupEntry("", SETUP_TOKEN_QUICK_DOORS, setup.quick_doors)); @@ -1535,7 +1320,7 @@ void SaveSetup() fprintf(file, "%s\n", getFormattedSetupEntry(TOKEN_STR_ALIAS_NAME, - local_player->alias_name)); + setup.alias_name)); for (i=0; i