X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffiles.c;h=57a0344771fbc81bf854b07193a935b0bfcba48e;hb=d965f76d694c19c4188ac3429cfa049200abdf54;hp=0a514169af088775ddd38262b3df6a25f10ac617;hpb=c74a890afba46c41f6ba6ef691bc89da0dd0135c;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 0a514169..57a03447 100644 --- a/src/files.c +++ b/src/files.c @@ -774,7 +774,7 @@ static void setLevelInfoToDefaults(struct LevelInfo *level) return; /* try to determine better author name than 'anonymous' */ - if (strcmp(leveldir_current->author, ANONYMOUS_NAME) != 0) + if (!strEqual(leveldir_current->author, ANONYMOUS_NAME)) { strncpy(level->author, leveldir_current->author, MAX_LEVEL_AUTHOR_LEN); level->author[MAX_LEVEL_AUTHOR_LEN] = '\0'; @@ -982,7 +982,7 @@ static int getFiletypeFromID(char *filetype_id) { char *id_lower = getStringToLower(filetype_id_list[i].id); - if (strcmp(filetype_id_lower, id_lower) == 0) + if (strEqual(filetype_id_lower, id_lower)) filetype = filetype_id_list[i].filetype; free(id_lower); @@ -1866,12 +1866,12 @@ static void LoadLevelFromFileInfo_RND(struct LevelInfo *level, } getFileChunkBE(file, chunk_name, NULL); - if (strcmp(chunk_name, "RND1") == 0) + if (strEqual(chunk_name, "RND1")) { getFile32BitBE(file); /* not used */ getFileChunkBE(file, chunk_name, NULL); - if (strcmp(chunk_name, "CAVE") != 0) + if (!strEqual(chunk_name, "CAVE")) { level->no_valid_file = TRUE; @@ -1947,7 +1947,7 @@ static void LoadLevelFromFileInfo_RND(struct LevelInfo *level, int i = 0; while (chunk_info[i].name != NULL && - strcmp(chunk_name, chunk_info[i].name) != 0) + !strEqual(chunk_name, chunk_info[i].name)) i++; if (chunk_info[i].name == NULL) @@ -3088,7 +3088,7 @@ static void LoadLevelFromFileInfo_SP(struct LevelInfo *level, if (reading_multipart_level && (!is_multipart_level || - strcmp(level->name, multipart_level.name) != 0)) + !strEqual(level->name, multipart_level.name))) { /* we are already reading parts of a multi-part level, but this level is either not a multi-part level, or a part of a different multi-part @@ -3378,6 +3378,7 @@ static void LoadLevel_InitElements(struct LevelInfo *level, char *filename) int element = EL_CUSTOM_START + i; /* order of checking and copying events to be mapped is important */ + /* (do not change the start and end value -- they are constant) */ for (j = CE_BY_OTHER_ACTION; j >= CE_VALUE_GETS_ZERO; j--) { if (HAS_CHANGE_EVENT(element, j - 2)) @@ -3388,6 +3389,7 @@ static void LoadLevel_InitElements(struct LevelInfo *level, char *filename) } /* order of checking and copying events to be mapped is important */ + /* (do not change the start and end value -- they are constant) */ for (j = CE_PLAYER_COLLECTS_X; j >= CE_HITTING_SOMETHING; j--) { if (HAS_CHANGE_EVENT(element, j - 1)) @@ -4541,12 +4543,12 @@ void LoadTapeFromFilename(char *filename) } getFileChunkBE(file, chunk_name, NULL); - if (strcmp(chunk_name, "RND1") == 0) + if (strEqual(chunk_name, "RND1")) { getFile32BitBE(file); /* not used */ getFileChunkBE(file, chunk_name, NULL); - if (strcmp(chunk_name, "TAPE") != 0) + if (!strEqual(chunk_name, "TAPE")) { tape.no_valid_file = TRUE; @@ -4612,7 +4614,7 @@ void LoadTapeFromFilename(char *filename) int i = 0; while (chunk_info[i].name != NULL && - strcmp(chunk_name, chunk_info[i].name) != 0) + !strEqual(chunk_name, chunk_info[i].name)) i++; if (chunk_info[i].name == NULL) @@ -4942,24 +4944,26 @@ void SaveScore(int nr) #define SETUP_TOKEN_SOFT_SCROLLING 7 #define SETUP_TOKEN_FADING 8 #define SETUP_TOKEN_AUTORECORD 9 -#define SETUP_TOKEN_QUICK_DOORS 10 -#define SETUP_TOKEN_TEAM_MODE 11 -#define SETUP_TOKEN_HANDICAP 12 -#define SETUP_TOKEN_SKIP_LEVELS 13 -#define SETUP_TOKEN_TIME_LIMIT 14 -#define SETUP_TOKEN_FULLSCREEN 15 -#define SETUP_TOKEN_ASK_ON_ESCAPE 16 -#define SETUP_TOKEN_ASK_ON_ESCAPE_EDITOR 17 -#define SETUP_TOKEN_QUICK_SWITCH 18 -#define SETUP_TOKEN_INPUT_ON_FOCUS 19 -#define SETUP_TOKEN_GRAPHICS_SET 20 -#define SETUP_TOKEN_SOUNDS_SET 21 -#define SETUP_TOKEN_MUSIC_SET 22 -#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS 23 -#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS 24 -#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC 25 - -#define NUM_GLOBAL_SETUP_TOKENS 26 +#define SETUP_TOKEN_SHOW_TITLESCREEN 10 +#define SETUP_TOKEN_QUICK_DOORS 11 +#define SETUP_TOKEN_TEAM_MODE 12 +#define SETUP_TOKEN_HANDICAP 13 +#define SETUP_TOKEN_SKIP_LEVELS 14 +#define SETUP_TOKEN_TIME_LIMIT 15 +#define SETUP_TOKEN_FULLSCREEN 16 +#define SETUP_TOKEN_ASK_ON_ESCAPE 17 +#define SETUP_TOKEN_ASK_ON_ESCAPE_EDITOR 18 +#define SETUP_TOKEN_QUICK_SWITCH 19 +#define SETUP_TOKEN_INPUT_ON_FOCUS 20 +#define SETUP_TOKEN_PREFER_AGA_GRAPHICS 21 +#define SETUP_TOKEN_GRAPHICS_SET 22 +#define SETUP_TOKEN_SOUNDS_SET 23 +#define SETUP_TOKEN_MUSIC_SET 24 +#define SETUP_TOKEN_OVERRIDE_LEVEL_GRAPHICS 25 +#define SETUP_TOKEN_OVERRIDE_LEVEL_SOUNDS 26 +#define SETUP_TOKEN_OVERRIDE_LEVEL_MUSIC 27 + +#define NUM_GLOBAL_SETUP_TOKENS 28 /* editor setup */ #define SETUP_TOKEN_EDITOR_EL_BOULDERDASH 0 @@ -4975,8 +4979,9 @@ void SaveScore(int nr) #define SETUP_TOKEN_EDITOR_EL_HEADLINES 10 #define SETUP_TOKEN_EDITOR_EL_USER_DEFINED 11 #define SETUP_TOKEN_EDITOR_EL_DYNAMIC 12 +#define SETUP_TOKEN_EDITOR_SHOW_ELEMENT_TOKEN 13 -#define NUM_EDITOR_SETUP_TOKENS 13 +#define NUM_EDITOR_SETUP_TOKENS 14 /* editor cascade setup */ #define SETUP_TOKEN_EDITOR_CASCADE_BD 0 @@ -5060,6 +5065,7 @@ static struct TokenInfo global_setup_tokens[] = { TYPE_SWITCH, &si.soft_scrolling, "soft_scrolling" }, { TYPE_SWITCH, &si.fading, "screen_fading" }, { TYPE_SWITCH, &si.autorecord, "automatic_tape_recording" }, + { TYPE_SWITCH, &si.show_titlescreen, "show_titlescreen" }, { TYPE_SWITCH, &si.quick_doors, "quick_doors" }, { TYPE_SWITCH, &si.team_mode, "team_mode" }, { TYPE_SWITCH, &si.handicap, "handicap" }, @@ -5070,6 +5076,7 @@ static struct TokenInfo global_setup_tokens[] = { TYPE_SWITCH, &si.ask_on_escape_editor, "ask_on_escape_editor" }, { 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_STRING, &si.graphics_set, "graphics_set" }, { TYPE_STRING, &si.sounds_set, "sounds_set" }, { TYPE_STRING, &si.music_set, "music_set" }, @@ -5093,6 +5100,7 @@ static struct TokenInfo editor_setup_tokens[] = { TYPE_SWITCH, &sei.el_headlines, "editor.el_headlines" }, { TYPE_SWITCH, &sei.el_user_defined, "editor.el_user_defined" }, { TYPE_SWITCH, &sei.el_dynamic, "editor.el_dynamic" }, + { TYPE_SWITCH, &sei.show_element_token,"editor.show_element_token" }, }; static struct TokenInfo editor_cascade_setup_tokens[] = @@ -5187,6 +5195,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->soft_scrolling = TRUE; si->fading = FALSE; si->autorecord = TRUE; + si->show_titlescreen = TRUE; si->quick_doors = FALSE; si->team_mode = FALSE; si->handicap = TRUE; @@ -5197,6 +5206,7 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->ask_on_escape_editor = TRUE; si->quick_switch = FALSE; si->input_on_focus = FALSE; + si->prefer_aga_graphics = TRUE; si->graphics_set = getStringCopy(GFX_CLASSIC_SUBDIR); si->sounds_set = getStringCopy(SND_CLASSIC_SUBDIR); @@ -5220,6 +5230,8 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->editor.el_user_defined = FALSE; si->editor.el_dynamic = TRUE; + si->editor.show_element_token = FALSE; + si->shortcut.save_game = DEFAULT_KEY_SAVE_GAME; si->shortcut.load_game = DEFAULT_KEY_LOAD_GAME; si->shortcut.toggle_pause = DEFAULT_KEY_TOGGLE_PAUSE; @@ -5538,19 +5550,14 @@ void LoadCustomElementDescriptions() freeSetupFileHash(setup_file_hash); } -void LoadSpecialMenuDesignSettings() +static void LoadSpecialMenuDesignSettingsFromFilename(char *filename) { - char *filename = getCustomArtworkConfigFilename(ARTWORK_TYPE_GRAPHICS); SetupFileHash *setup_file_hash; - int i, j; + int i; - /* always start with reliable default values from default config */ - for (i = 0; image_config_vars[i].token != NULL; i++) - for (j = 0; image_config[j].token != NULL; j++) - if (strcmp(image_config_vars[i].token, image_config[j].token) == 0) - *image_config_vars[i].value = - get_auto_parameter_value(image_config_vars[i].token, - image_config[j].value); +#if 0 + printf("LoadSpecialMenuDesignSettings from file '%s' ...\n", filename); +#endif if ((setup_file_hash = loadSetupFileHash(filename)) == NULL) return; @@ -5583,6 +5590,42 @@ void LoadSpecialMenuDesignSettings() freeSetupFileHash(setup_file_hash); } +void LoadSpecialMenuDesignSettings() +{ + char *filename_base = UNDEFINED_FILENAME, *filename_local; + int i, j; + + /* always start with reliable default values from default config */ + for (i = 0; image_config_vars[i].token != NULL; i++) + 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); + +#if 1 + if (!SETUP_OVERRIDE_ARTWORK(setup, ARTWORK_TYPE_GRAPHICS)) + { + /* first look for special settings configured in level series config */ + filename_base = getCustomArtworkLevelConfigFilename(ARTWORK_TYPE_GRAPHICS); + + if (fileExists(filename_base)) + LoadSpecialMenuDesignSettingsFromFilename(filename_base); + } + + filename_local = getCustomArtworkConfigFilename(ARTWORK_TYPE_GRAPHICS); + + if (filename_local != NULL && !strEqual(filename_base, filename_local)) + LoadSpecialMenuDesignSettingsFromFilename(filename_local); + +#else + + filename_local = getCustomArtworkConfigFilename(ARTWORK_TYPE_GRAPHICS); + + LoadSpecialMenuDesignSettingsFromFilename(filename_local); +#endif +} + void LoadUserDefinedEditorElementList(int **elements, int *num_elements) { char *filename = getEditorSetupFilename(); @@ -5772,7 +5815,7 @@ static boolean music_info_listed_ext(struct MusicFileInfo *list, char *basename, boolean is_sound) { for (; list != NULL; list = list->next) - if (list->is_sound == is_sound && strcmp(list->basename, basename) == 0) + if (list->is_sound == is_sound && strEqual(list->basename, basename)) return TRUE; return FALSE; @@ -5830,7 +5873,7 @@ void LoadMusicInfo() if (music->filename == NULL) continue; - if (strcmp(music->filename, UNDEFINED_FILENAME) == 0) + if (strEqual(music->filename, UNDEFINED_FILENAME)) continue; /* a configured file may be not recognized as music */ @@ -5869,7 +5912,7 @@ void LoadMusicInfo() if (music->filename == NULL) continue; - if (strcmp(basename, music->filename) == 0) + if (strEqual(basename, music->filename)) { music_already_used = TRUE; break; @@ -5905,7 +5948,7 @@ void LoadMusicInfo() if (sound->filename == NULL) continue; - if (strcmp(sound->filename, UNDEFINED_FILENAME) == 0) + if (strEqual(sound->filename, UNDEFINED_FILENAME)) continue; /* a configured file may be not recognized as sound */ @@ -6014,7 +6057,7 @@ void LoadHelpAnimInfo() char *element_value, *action_value, *direction_value; int delay = atoi(list->value); - if (strcmp(list->token, "end") == 0) + if (strEqual(list->token, "end")) { add_helpanim_entry(HELPANIM_LIST_NEXT, -1, -1, -1, &num_list_entries);