X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=c7a199118fea2390f170d8c2bbdc212910a0a1a8;hb=3494549d6f5c8d1d5497ec7eb9fa80a7ca6579ee;hp=947d0ef0d4c1aec6d10836a1b4fc26b39e9932a7;hpb=5d25c2fc3934b3d7e6b02465361569d3a0033bae;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 947d0ef0..c7a19911 100644 --- a/src/init.c +++ b/src/init.c @@ -291,8 +291,13 @@ void InitFontGraphicInfo() /* ---------- initialize font graphic definitions ---------- */ /* always start with reliable default values (normal font graphics) */ +#if 1 + for (i=0; i < NUM_FONTS; i++) + font_info[i].graphic = IMG_FONT_INITIAL_1; +#else for (i=0; i < NUM_FONTS; i++) font_info[i].graphic = FONT_INITIAL_1; +#endif /* initialize normal font/graphic mapping from static configuration */ for (i=0; font_to_graphic[i].font_nr > -1; i++) @@ -554,22 +559,24 @@ void InitElementGraphicInfo() { for (act=0; act 0 && graphic_info[graphic].bitmap == NULL) element_info[i].graphic[act] = -1; - if (graphic_info[element_info[i].crumbled[act]].bitmap == NULL) + graphic = element_info[i].crumbled[act]; + if (graphic > 0 && graphic_info[graphic].bitmap == NULL) element_info[i].crumbled[act] = -1; for (dir=0; dir 0 && graphic_info[graphic].bitmap == NULL) element_info[i].direction_graphic[act][dir] = -1; graphic = element_info[i].direction_crumbled[act][dir]; - if (graphic_info[graphic].bitmap == NULL) + if (graphic > 0 && graphic_info[graphic].bitmap == NULL) element_info[i].direction_crumbled[act][dir] = -1; } } @@ -663,6 +670,34 @@ void InitElementGraphicInfo() } } +#if 1 + /* set animation mode to "none" for each graphic with only 1 frame */ + for (i=0; itoken, "dynamite.EDITOR") == 0) - printf("::: image: '%s' [%d]\n", image->token, i); +#if 0 + printf("::: image: '%s' [%d]\n", image->token, i); #endif #if 0 @@ -930,11 +978,6 @@ static void InitGraphicInfo() /* now check if no animation frames are outside of the loaded image */ -#if 1 - if (graphic_info[i].bitmap == NULL) - printf("::: graphic_info['%s'].bitmap == NULL\n", image->token); -#endif - if (graphic_info[i].bitmap == NULL) continue; /* skip check for optional images that are undefined */ @@ -1355,7 +1398,10 @@ void InitElementPropertiesStatic() EL_SHIELD_NORMAL, EL_SHIELD_DEADLY, EL_EXTRA_TIME, - EL_ENVELOPE, + EL_ENVELOPE_1, + EL_ENVELOPE_2, + EL_ENVELOPE_3, + EL_ENVELOPE_4, EL_SPEED_PILL, -1 }; @@ -1382,9 +1428,9 @@ void InitElementPropertiesStatic() /* !!! maybe this should better be handled by 'ep_diggable' !!! */ #if 1 - EL_SP_BUGGY_BASE_ACTIVE, - EL_TRAP_ACTIVE, EL_LANDMINE, + EL_TRAP_ACTIVE, + EL_SP_BUGGY_BASE_ACTIVE, #endif -1 }; @@ -1783,6 +1829,16 @@ void InitElementPropertiesStatic() -1 }; + static int ep_droppable[] = + { + -1 + }; + + static int ep_can_explode_1x1[] = + { + -1 + }; + static int ep_pushable[] = { EL_ROCK, @@ -1802,15 +1858,6 @@ void InitElementPropertiesStatic() -1 }; - static int ep_can_be_crumbled[] = - { - EL_SAND, - EL_LANDMINE, - EL_TRAP, - EL_TRAP_ACTIVE, - -1 - }; - static int ep_player[] = { EL_PLAYER_1, @@ -1896,6 +1943,9 @@ void InitElementPropertiesStatic() static int ep_sp_element[] = { + /* should always be valid */ + EL_EMPTY, + EL_SP_EMPTY, EL_SP_ZONK, EL_SP_BASE, @@ -2532,6 +2582,20 @@ void InitElementPropertiesStatic() -1 }; + static int ep_em_slippery_wall[] = + { + -1 + }; + + static int ep_gfx_crumbled[] = + { + EL_SAND, + EL_LANDMINE, + EL_TRAP, + EL_TRAP_ACTIVE, + -1 + }; + static struct { int *elements; @@ -2560,10 +2624,10 @@ void InitElementPropertiesStatic() { ep_passable_over, EP_PASSABLE_OVER }, { ep_passable_inside, EP_PASSABLE_INSIDE }, { ep_passable_under, EP_PASSABLE_UNDER }, + { ep_droppable, EP_DROPPABLE }, + { ep_can_explode_1x1, EP_CAN_EXPLODE_1X1 }, { ep_pushable, EP_PUSHABLE }, - { ep_can_be_crumbled, EP_CAN_BE_CRUMBLED }, - { ep_player, EP_PLAYER }, { ep_can_pass_magic_wall, EP_CAN_PASS_MAGIC_WALL }, { ep_switchable, EP_SWITCHABLE }, @@ -2588,6 +2652,10 @@ void InitElementPropertiesStatic() { ep_active_bomb, EP_ACTIVE_BOMB }, { ep_inactive, EP_INACTIVE }, + { ep_em_slippery_wall, EP_EM_SLIPPERY_WALL }, + + { ep_gfx_crumbled, EP_GFX_CRUMBLED }, + { NULL, -1 } }; @@ -2676,7 +2744,6 @@ void InitElementPropertiesEngine(int engine_version) EP_BELT_SWITCH, EP_WALKABLE_UNDER, EP_EM_SLIPPERY_WALL, - EP_CAN_BE_CRUMBLED, }; #endif @@ -2693,8 +2760,6 @@ void InitElementPropertiesEngine(int engine_version) EP_CAN_SMASH_EVERYTHING, EP_PUSHABLE, - EP_CAN_BE_CRUMBLED, - EP_PLAYER, EP_GEM, EP_FOOD_DARK_YAMYAM, @@ -2825,16 +2890,15 @@ void InitElementPropertiesEngine(int engine_version) SET_PROPERTY(i, EP_CAN_EXPLODE_3X3, (CAN_EXPLODE(i) && !CAN_EXPLODE_1X1(i))); - /* ---------- CAN_BE_CRUMBLED ------------------------------------------ */ - SET_PROPERTY(i, EP_CAN_BE_CRUMBLED, - element_info[i].crumbled[ACTION_DEFAULT] != IMG_EMPTY); + /* ---------- CAN_CHANGE ----------------------------------------------- */ + SET_PROPERTY(i, EP_CAN_CHANGE, FALSE); /* default: cannot change */ + for (j=0; j < element_info[i].num_change_pages; j++) + if (element_info[i].change_page[j].can_change) + SET_PROPERTY(i, EP_CAN_CHANGE, TRUE); -#if 0 - if (CAN_BE_CRUMBLED(i)) - printf("::: '%s' can be crumbled [%d]\n", - element_info[i].token_name, - element_info[i].crumbled[ACTION_DEFAULT]); -#endif + /* ---------- GFX_CRUMBLED --------------------------------------------- */ + SET_PROPERTY(i, EP_GFX_CRUMBLED, + element_info[i].crumbled[ACTION_DEFAULT] != IMG_EMPTY); } #if 0 @@ -3247,7 +3311,7 @@ void InitLevelArtworkInfo() static void InitImages() { -#if 0 +#if 1 setLevelArtworkDir(artwork.gfx_first); #endif @@ -3273,7 +3337,7 @@ static void InitSound(char *identifier) if (identifier == NULL) identifier = artwork.snd_current->identifier; -#if 0 +#if 1 /* set artwork path to send it to the sound server process */ setLevelArtworkDir(artwork.snd_first); #endif @@ -3287,7 +3351,7 @@ static void InitMusic(char *identifier) if (identifier == NULL) identifier = artwork.mus_current->identifier; -#if 0 +#if 1 /* set artwork path to send it to the sound server process */ setLevelArtworkDir(artwork.mus_first); #endif