X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=979bd4f63620fb537568585205cda1fb597920ac;hb=4abc7d07404767933918e25220cab6c2eae683e5;hp=3d900932701c7db7a6070b859baba87e91149ebf;hpb=cb8b58732432cc7f3163446dedd54c63126b23c3;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 3d900932..979bd4f6 100644 --- a/src/files.c +++ b/src/files.c @@ -739,6 +739,17 @@ static struct LevelFileConfigInfo chunk_config_NOTE[] = &xx_envelope.ysize, MAX_ENVELOPE_YSIZE, }, + { + -1, -1, + TYPE_BOOLEAN, CONF_VALUE_8_BIT(3), + &xx_envelope.autowrap, FALSE + }, + { + -1, -1, + TYPE_BOOLEAN, CONF_VALUE_8_BIT(4), + &xx_envelope.centered, FALSE + }, + { -1, -1, TYPE_STRING, CONF_VALUE_BYTES(1), @@ -4157,19 +4168,19 @@ int getMappedElement_DC(int element) break; case 0x0f4f: /* dynamite (lit 1) */ - element = EL_DYNAMITE_ACTIVE; + element = EL_EM_DYNAMITE_ACTIVE; break; case 0x0f57: /* dynamite (lit 2) */ - element = EL_DYNAMITE_ACTIVE; + element = EL_EM_DYNAMITE_ACTIVE; break; case 0x0f5f: /* dynamite (lit 3) */ - element = EL_DYNAMITE_ACTIVE; + element = EL_EM_DYNAMITE_ACTIVE; break; case 0x0f67: /* dynamite (lit 4) */ - element = EL_DYNAMITE_ACTIVE; + element = EL_EM_DYNAMITE_ACTIVE; break; case 0x0f81: @@ -4332,7 +4343,7 @@ int getMappedElement_DC(int element) break; case 0x14e9: - element = EL_SHIELD_NORMAL; + element = EL_SHIELD_DEADLY; break; case 0x1501: @@ -4362,7 +4373,7 @@ int getMappedElement_DC(int element) /* EL_DC_LANDMINE */ case 0x15a0: - element = EL_DYNAMITE; + element = EL_EM_DYNAMITE; break; case 0x15a1: /* key (red) */ @@ -5615,6 +5626,11 @@ static void LoadLevelFromFileInfo_DC(struct LevelInfo *level, level->envelope[0].text[envelope_size] = '\0'; + level->envelope[0].xsize = MAX_ENVELOPE_XSIZE; + level->envelope[0].ysize = 10; + level->envelope[0].autowrap = TRUE; + level->envelope[0].centered = TRUE; + for (i = 0; i < level_name_len; i++) level->name[i] = header[level_name_pos + 1 + i]; level->name[level_name_len] = '\0'; @@ -7675,14 +7691,15 @@ void SaveScore(int nr) #define SETUP_TOKEN_QUICK_SWITCH 20 #define SETUP_TOKEN_INPUT_ON_FOCUS 21 #define SETUP_TOKEN_PREFER_AGA_GRAPHICS 22 -#define SETUP_TOKEN_GRAPHICS_SET 23 -#define SETUP_TOKEN_SOUNDS_SET 24 -#define SETUP_TOKEN_MUSIC_SET 25 -#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS 26 -#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS 27 -#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC 28 +#define SETUP_TOKEN_GAME_FRAME_DELAY 23 +#define SETUP_TOKEN_GRAPHICS_SET 24 +#define SETUP_TOKEN_SOUNDS_SET 25 +#define SETUP_TOKEN_MUSIC_SET 26 +#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS 27 +#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS 28 +#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC 29 -#define NUM_GLOBAL_SETUP_TOKENS 29 +#define NUM_GLOBAL_SETUP_TOKENS 30 /* editor setup */ #define SETUP_TOKEN_EDITOR_EL_BOULDERDASH 0 @@ -7757,10 +7774,11 @@ void SaveScore(int nr) #define NUM_PLAYER_SETUP_TOKENS 16 /* system setup */ -#define SETUP_TOKEN_SYSTEM_SDL_AUDIODRIVER 0 -#define SETUP_TOKEN_SYSTEM_AUDIO_FRAGMENT_SIZE 1 +#define SETUP_TOKEN_SYSTEM_SDL_VIDEODRIVER 0 +#define SETUP_TOKEN_SYSTEM_SDL_AUDIODRIVER 1 +#define SETUP_TOKEN_SYSTEM_AUDIO_FRAGMENT_SIZE 2 -#define NUM_SYSTEM_SETUP_TOKENS 2 +#define NUM_SYSTEM_SETUP_TOKENS 3 /* options setup */ #define SETUP_TOKEN_OPTIONS_VERBOSE 0 @@ -7801,6 +7819,7 @@ static struct TokenInfo global_setup_tokens[] = { TYPE_SWITCH, &si.quick_switch, "quick_player_switch" }, { TYPE_SWITCH, &si.input_on_focus, "input_on_focus" }, { TYPE_SWITCH, &si.prefer_aga_graphics, "prefer_aga_graphics" }, + { TYPE_INTEGER,&si.game_frame_delay, "game_frame_delay" }, { TYPE_STRING, &si.graphics_set, "graphics_set" }, { TYPE_STRING, &si.sounds_set, "sounds_set" }, { TYPE_STRING, &si.music_set, "music_set" }, @@ -7899,6 +7918,7 @@ static struct TokenInfo player_setup_tokens[] = static struct TokenInfo system_setup_tokens[] = { + { TYPE_STRING, &syi.sdl_videodriver, "system.sdl_videodriver" }, { TYPE_STRING, &syi.sdl_audiodriver, "system.sdl_audiodriver" }, { TYPE_INTEGER, &syi.audio_fragment_size,"system.audio_fragment_size" }, }; @@ -7953,6 +7973,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->quick_switch = FALSE; si->input_on_focus = FALSE; si->prefer_aga_graphics = TRUE; + si->game_frame_delay = GAME_FRAME_DELAY; si->graphics_set = getStringCopy(GFX_CLASSIC_SUBDIR); si->sounds_set = getStringCopy(SND_CLASSIC_SUBDIR); @@ -8009,6 +8030,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->input[i].key.drop = (i == 0 ? DEFAULT_KEY_DROP : KSYM_UNDEFINED); } + si->system.sdl_videodriver = getStringCopy(ARG_DEFAULT); si->system.sdl_audiodriver = getStringCopy(ARG_DEFAULT); si->system.audio_fragment_size = DEFAULT_AUDIO_FRAGMENT_SIZE; @@ -8299,6 +8321,33 @@ void LoadCustomElementDescriptions() freeSetupFileHash(setup_file_hash); } +static int get_token_parameter_value(char *token, char *value_raw) +{ + char *suffix; + + if (token == NULL || value_raw == NULL) + return ARG_UNDEFINED_VALUE; + + suffix = strrchr(token, '.'); + if (suffix == NULL) + suffix = token; + + if (strncmp(suffix, ".font", 5) == 0) + { + int i; + + /* !!! OPTIMIZE THIS BY USING HASH !!! */ + for (i = 0; i < NUM_FONTS; i++) + if (strEqual(value_raw, font_info[i].token_name)) + return i; + + /* if font not found, use reliable default value */ + return FONT_INITIAL_1; + } + + return get_parameter_value(value_raw, suffix, TYPE_INTEGER); +} + static void LoadSpecialMenuDesignSettingsFromFilename(char *filename) { SetupFileHash *setup_file_hash; @@ -8345,7 +8394,7 @@ static void LoadSpecialMenuDesignSettingsFromFilename(char *filename) if (value != NULL) *image_config_vars[i].value = - get_auto_parameter_value(image_config_vars[i].token, value); + get_token_parameter_value(image_config_vars[i].token, value); } freeSetupFileHash(setup_file_hash); @@ -8361,8 +8410,8 @@ void LoadSpecialMenuDesignSettings() for (j = 0; image_config[j].token != NULL; j++) if (strEqual(image_config_vars[i].token, image_config[j].token)) *image_config_vars[i].value = - get_auto_parameter_value(image_config_vars[i].token, - image_config[j].value); + get_token_parameter_value(image_config_vars[i].token, + image_config[j].value); if (!SETUP_OVERRIDE_ARTWORK(setup, ARTWORK_TYPE_GRAPHICS)) { @@ -8434,19 +8483,19 @@ void LoadUserDefinedEditorElementList(int **elements, int *num_elements) { if (num_unknown_tokens == 0) { - Error(ERR_RETURN_LINE, "-"); - Error(ERR_RETURN, "warning: unknown token(s) found in config file:"); - Error(ERR_RETURN, "- config file: '%s'", filename); + Error(ERR_INFO_LINE, "-"); + Error(ERR_INFO, "warning: unknown token(s) found in config file:"); + Error(ERR_INFO, "- config file: '%s'", filename); num_unknown_tokens++; } - Error(ERR_RETURN, "- token: '%s'", list->token); + Error(ERR_INFO, "- token: '%s'", list->token); } } if (num_unknown_tokens > 0) - Error(ERR_RETURN_LINE, "-"); + Error(ERR_INFO_LINE, "-"); while (*num_elements % 4) /* pad with empty elements, if needed */ (*elements)[(*num_elements)++] = EL_EMPTY; @@ -8747,18 +8796,18 @@ void print_unknown_token(char *filename, char *token, int token_nr) { if (token_nr == 0) { - Error(ERR_RETURN_LINE, "-"); - Error(ERR_RETURN, "warning: unknown token(s) found in config file:"); - Error(ERR_RETURN, "- config file: '%s'", filename); + Error(ERR_INFO_LINE, "-"); + Error(ERR_INFO, "warning: unknown token(s) found in config file:"); + Error(ERR_INFO, "- config file: '%s'", filename); } - Error(ERR_RETURN, "- token: '%s'", token); + Error(ERR_INFO, "- token: '%s'", token); } void print_unknown_token_end(int token_nr) { if (token_nr > 0) - Error(ERR_RETURN_LINE, "-"); + Error(ERR_INFO_LINE, "-"); } void LoadHelpAnimInfo()