X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=e65f387a3c461528dcd31064b5eaf06cf1d620bc;hb=cf6b3ab16571c028cdaf955bb4c737798d352486;hp=51e2c44d680442c6a11069a22fbf5fae60b815f3;hpb=8a1c6f39577584e0479ed638ed8b3df11d74f561;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 51e2c44d..e65f387a 100644 --- a/src/files.c +++ b/src/files.c @@ -614,7 +614,7 @@ static int LoadLevel_CUS3(FILE *file, int chunk_size, struct LevelInfo *level) { Error(ERR_WARN, "invalid custom element number %d", element); - element = EL_DEFAULT; /* dummy element used for artwork config */ + element = EL_DUMMY; } for(j=0; jelement = element; new_list_entry->action = action; @@ -3054,9 +3054,9 @@ void print_unknown_token_end(int token_nr) Error(ERR_RETURN_LINE, "-"); } -void LoadInfoAnimations() +void LoadDemoAnimInfo() { - char *filename = getElementInfoFilename(); + char *filename = getDemoAnimInfoFilename(); SetupFileList *setup_file_list, *list; SetupFileHash *element_hash, *action_hash, *direction_hash; int num_list_entries = 0; @@ -3064,7 +3064,19 @@ void LoadInfoAnimations() int i; if ((setup_file_list = loadSetupFileList(filename)) == NULL) - return; + { + /* use reliable default values from static configuration */ + SetupFileList *insert_ptr; + + insert_ptr = setup_file_list = + newSetupFileList(demo_anim_info_config[0].token, + demo_anim_info_config[0].value); + + for (i=1; demo_anim_info_config[i].token; i++) + insert_ptr = addListEntry(insert_ptr, + demo_anim_info_config[i].token, + demo_anim_info_config[i].value); + } element_hash = newSetupFileHash(); action_hash = newSetupFileHash(); @@ -3077,9 +3089,10 @@ void LoadInfoAnimations() setHashEntry(action_hash, element_action_info[i].suffix, itoa(element_action_info[i].value)); + /* do not store direction index (bit) here, but direction value! */ for (i=0; i < NUM_DIRECTIONS; i++) setHashEntry(direction_hash, element_direction_info[i].suffix, - itoa(element_direction_info[i].value)); + itoa(1 << element_direction_info[i].value)); for (list = setup_file_list; list != NULL; list = list->next) { @@ -3089,7 +3102,7 @@ void LoadInfoAnimations() if (strcmp(list->token, "end") == 0) { - add_info_animation(-1, -1, -1, -1, &num_list_entries); + add_demo_anim(-1, -1, -1, -1, &num_list_entries); continue; } @@ -3100,8 +3113,7 @@ void LoadInfoAnimations() if (element_value != NULL) { /* element found */ - add_info_animation(atoi(element_value), -1, -1, - delay, &num_list_entries); + add_demo_anim(atoi(element_value), -1, -1, delay, &num_list_entries); continue; } @@ -3134,8 +3146,8 @@ void LoadInfoAnimations() if (action_value != NULL) { /* action found */ - add_info_animation(atoi(element_value), atoi(action_value), -1, - delay, &num_list_entries); + add_demo_anim(atoi(element_value), atoi(action_value), -1, delay, + &num_list_entries); free(element_token); continue; @@ -3147,8 +3159,8 @@ void LoadInfoAnimations() if (direction_value != NULL) { /* direction found */ - add_info_animation(atoi(element_value), -1, atoi(direction_value), - delay, &num_list_entries); + add_demo_anim(atoi(element_value), -1, atoi(direction_value), delay, + &num_list_entries); free(element_token); continue; @@ -3184,9 +3196,8 @@ void LoadInfoAnimations() if (direction_value != NULL) { /* direction found */ - add_info_animation(atoi(element_value), atoi(action_value), - atoi(direction_value), - delay, &num_list_entries); + add_demo_anim(atoi(element_value), atoi(action_value), + atoi(direction_value), delay, &num_list_entries); free(element_token); free(action_token); @@ -3201,7 +3212,7 @@ void LoadInfoAnimations() print_unknown_token_end(num_unknown_tokens); - add_info_animation(-999, -999, -999, -999, &num_list_entries); + add_demo_anim(-999, -999, -999, -999, &num_list_entries); freeSetupFileList(setup_file_list); freeSetupFileHash(element_hash); @@ -3212,9 +3223,43 @@ void LoadInfoAnimations() /* TEST ONLY */ for (i=0; i < num_list_entries; i++) printf("::: %d, %d, %d => %d\n", - info_animation_info[i].element, - info_animation_info[i].action, - info_animation_info[i].direction, - info_animation_info[i].delay); + demo_anim_info[i].element, + demo_anim_info[i].action, + demo_anim_info[i].direction, + demo_anim_info[i].delay); +#endif +} + +void LoadDemoAnimText() +{ + char *filename = getDemoAnimTextFilename(); + int i; + + if (demo_anim_text != NULL) + freeSetupFileList(demo_anim_text); + + if ((demo_anim_text = loadSetupFileList(filename)) == NULL) + { + /* use reliable default values from static configuration */ + SetupFileList *insert_ptr; + + insert_ptr = demo_anim_text = + newSetupFileList(demo_anim_text_config[0].token, + demo_anim_text_config[0].value); + + for (i=1; demo_anim_text_config[i].token; i++) + insert_ptr = addListEntry(insert_ptr, + demo_anim_text_config[i].token, + demo_anim_text_config[i].value); + } + +#if 0 + /* TEST ONLY */ + { + SetupFileList *list; + + for (list = demo_anim_text; list != NULL; list = list->next) + printf("::: '%s' => '%s'\n", list->token, list->value); + } #endif }