X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=376aa8c822c088880b0fa46a5a4a8c56e17250d1;hb=0ef9c7d4b387b42f40d2f226920e306d588544f7;hp=b4ce8d8917ea41515eba64d48d05e5f17048ca1b;hpb=2bcba5d4d363ba2f58c9d3f22aba6a455522f499;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index b4ce8d89..376aa8c8 100644 --- a/src/init.c +++ b/src/init.c @@ -411,24 +411,30 @@ void InitElementGraphicInfo() for (act=0; act -1; i++) { - int element = element_to_graphic[i].element; - int action = element_to_graphic[i].action; - int direction = element_to_graphic[i].direction; - int graphic = element_to_graphic[i].graphic; + int element = element_to_graphic[i].element; + int action = element_to_graphic[i].action; + int direction = element_to_graphic[i].direction; + boolean crumbled = element_to_graphic[i].crumbled; + int graphic = element_to_graphic[i].graphic; if (graphic_info[graphic].bitmap == NULL) continue; - if ((action > -1 || direction > -1) && el2img(element) != -1) + if ((action > -1 || direction > -1 || crumbled == TRUE) && + el2img(element) != -1) { boolean base_redefined = getImageListEntry(el2img(element))->redefined; boolean act_dir_redefined = getImageListEntry(graphic)->redefined; @@ -444,10 +450,20 @@ void InitElementGraphicInfo() if (action < 0) action = ACTION_DEFAULT; - if (direction > -1) - element_info[element].direction_graphic[action][direction] = graphic; + if (crumbled) + { + if (direction > -1) + element_info[element].direction_crumbled[action][direction] = graphic; + else + element_info[element].crumbled[action] = graphic; + } else - element_info[element].graphic[action] = graphic; + { + if (direction > -1) + element_info[element].direction_graphic[action][direction] = graphic; + else + element_info[element].graphic[action] = graphic; + } } /* initialize normal element/graphic mapping from dynamic configuration */ @@ -458,6 +474,13 @@ void InitElementGraphicInfo() int direction = property_mapping[i].ext2_index; int special = property_mapping[i].ext3_index; int graphic = property_mapping[i].artwork_index; + boolean crumbled = FALSE; + + if (special == GFX_SPECIAL_ARG_CRUMBLED) + { + special = -1; + crumbled = TRUE; + } if (graphic_info[graphic].bitmap == NULL) continue; @@ -468,32 +491,87 @@ void InitElementGraphicInfo() if (action < 0) action = ACTION_DEFAULT; - if (direction < 0) - for (dir=0; dir -1) - element_info[element].direction_graphic[action][direction] = graphic; + if (crumbled) + { + if (direction < 0) + for (dir=0; dir -1) + element_info[element].direction_crumbled[action][direction] = graphic; + else + element_info[element].crumbled[action] = graphic; + } else - element_info[element].graphic[action] = graphic; + { + if (direction < 0) + for (dir=0; dir -1) + element_info[element].direction_graphic[action][direction] = graphic; + else + element_info[element].graphic[action] = graphic; + } + } + + /* now copy all graphics that are defined to be cloned from other graphics */ + for (i=0; iidentifier, artwork.gfx_current_identifier, artwork.gfx_current->identifier, leveldir_current->graphics_set,