X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=8c574f39263e176144a1f4ad48daa0273239adb0;hb=c956237d7c5507aea649ce7b20c00d7bd9d37a7a;hp=02657be305ec1cd48a54b56436a19fc68dba9974;hpb=d93da39940cf3a69a4ceae6f212170784c0032c8;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 02657be3..8c574f39 100644 --- a/src/init.c +++ b/src/init.c @@ -363,7 +363,7 @@ void InitFontGraphicInfo() /* ---------- initialize font bitmap array ---------- */ if (font_bitmap_info != NULL) - free(font_bitmap_info); + FreeFontInfo(font_bitmap_info); font_bitmap_info = checked_calloc(num_font_bitmaps * sizeof(struct FontBitmapInfo)); @@ -1101,16 +1101,7 @@ void InitElementProperties() -1 }; - static int ep_can_be_crumbled[] = - { - EL_SAND, - EL_LANDMINE, - EL_TRAP, - EL_TRAP_ACTIVE, - -1 - }; - - static int ep_pforte[] = + static int ep_keygate[] = { EL_GATE_1, EL_GATE_2, @@ -1128,29 +1119,19 @@ void InitElementProperties() EL_EM_GATE_2_GRAY, EL_EM_GATE_3_GRAY, EL_EM_GATE_4_GRAY, - EL_SWITCHGATE_OPEN, - EL_SWITCHGATE_OPENING, - EL_SWITCHGATE_CLOSED, - EL_SWITCHGATE_CLOSING, - EL_TIMEGATE_OPEN, - EL_TIMEGATE_OPENING, - EL_TIMEGATE_CLOSED, - EL_TIMEGATE_CLOSING, - EL_TUBE_ANY, - EL_TUBE_VERTICAL, - EL_TUBE_HORIZONTAL, - EL_TUBE_VERTICAL_LEFT, - EL_TUBE_VERTICAL_RIGHT, - EL_TUBE_HORIZONTAL_UP, - EL_TUBE_HORIZONTAL_DOWN, - EL_TUBE_LEFT_UP, - EL_TUBE_LEFT_DOWN, - EL_TUBE_RIGHT_UP, - EL_TUBE_RIGHT_DOWN, -1 }; - static int ep_solid[] = + static int ep_can_be_crumbled[] = + { + EL_SAND, + EL_LANDMINE, + EL_TRAP, + EL_TRAP_ACTIVE, + -1 + }; + + static int ep_historic_solid[] = { EL_WALL, EL_EXPANDABLE_WALL, @@ -1449,7 +1430,7 @@ void InitElementProperties() -1 }; - static int ep_mauer[] = + static int ep_historic_wall[] = { EL_STEELWALL, EL_GATE_1, @@ -1949,15 +1930,21 @@ void InitElementProperties() { EL_EMPTY_SPACE, EL_SP_EMPTY_SPACE, - /* !!! EL_GATE_[1-4], EL_GATE_[1-4]_GRAY !!! */ - /* !!! EL_EM_GATE_[1-4], EL_EM_GATE_[1-4]_GRAY !!! */ EL_SOKOBAN_FIELD_EMPTY, EL_EXIT_OPEN, EL_SP_EXIT_OPEN, + EL_GATE_1, + EL_GATE_2, + EL_GATE_3, + EL_GATE_4, + EL_GATE_1_GRAY, + EL_GATE_2_GRAY, + EL_GATE_3_GRAY, + EL_GATE_4_GRAY, -1 }; - static int ep_walkable_through[] = + static int ep_walkable_inside[] = { EL_TUBE_ANY, EL_TUBE_VERTICAL, @@ -1993,7 +1980,7 @@ void InitElementProperties() -1 }; - static int ep_passable_through[] = + static int ep_passable_inside[] = { EL_SP_PORT_LEFT, EL_SP_PORT_RIGHT, @@ -2023,8 +2010,9 @@ void InitElementProperties() EL_TRAP, EL_INVISIBLE_SAND, EL_INVISIBLE_SAND_ACTIVE, -#if 0 +#if 1 EL_LANDMINE, + EL_TRAP_ACTIVE, EL_SP_BUGGY_BASE_ACTIVE, #endif -1 @@ -2063,33 +2051,6 @@ void InitElementProperties() -1 }; - static int ep_over_player[] = - { - EL_SP_PORT_LEFT, - EL_SP_PORT_RIGHT, - EL_SP_PORT_UP, - EL_SP_PORT_DOWN, - EL_SP_PORT_HORIZONTAL, - EL_SP_PORT_VERTICAL, - EL_SP_PORT_ANY, - EL_SP_GRAVITY_PORT_LEFT, - EL_SP_GRAVITY_PORT_RIGHT, - EL_SP_GRAVITY_PORT_UP, - EL_SP_GRAVITY_PORT_DOWN, - EL_TUBE_LEFT_UP, - EL_TUBE_LEFT_DOWN, - EL_TUBE_RIGHT_UP, - EL_TUBE_RIGHT_DOWN, - EL_TUBE_HORIZONTAL, - EL_TUBE_HORIZONTAL_UP, - EL_TUBE_HORIZONTAL_DOWN, - EL_TUBE_VERTICAL, - EL_TUBE_VERTICAL_LEFT, - EL_TUBE_VERTICAL_RIGHT, - EL_TUBE_ANY, - -1 - }; - static int ep_active_bomb[] = { EL_DYNAMITE_ACTIVE, @@ -2236,13 +2197,13 @@ void InitElementProperties() { { ep_amoebalive, EP_AMOEBALIVE }, { ep_amoeboid, EP_AMOEBOID }, + { ep_keygate, EP_KEYGATE }, { ep_can_be_crumbled, EP_CAN_BE_CRUMBLED }, - { ep_pforte, EP_PFORTE }, - { ep_solid, EP_SOLID }, + { ep_historic_solid, EP_HISTORIC_SOLID }, { ep_indestructible, EP_INDESTRUCTIBLE }, { ep_slippery, EP_SLIPPERY }, { ep_enemy, EP_ENEMY }, - { ep_mauer, EP_MAUER }, + { ep_historic_wall, EP_HISTORIC_WALL }, { ep_can_fall, EP_CAN_FALL }, { ep_can_smash, EP_CAN_SMASH }, { ep_can_change, EP_CAN_CHANGE }, @@ -2260,15 +2221,14 @@ void InitElementProperties() { ep_pushable, EP_PUSHABLE }, { ep_player, EP_PLAYER }, { ep_walkable_over, EP_WALKABLE_OVER }, - { ep_walkable_through, EP_WALKABLE_THROUGH }, + { ep_walkable_inside, EP_WALKABLE_INSIDE }, { ep_walkable_under, EP_WALKABLE_UNDER }, { ep_passable_over, EP_PASSABLE_OVER }, - { ep_passable_through, EP_PASSABLE_THROUGH }, + { ep_passable_inside, EP_PASSABLE_INSIDE }, { ep_passable_under, EP_PASSABLE_UNDER }, { ep_diggable, EP_DIGGABLE }, { ep_collectible, EP_COLLECTIBLE }, - { ep_over_player, EP_OVER_PLAYER }, { ep_active_bomb, EP_ACTIVE_BOMB }, { ep_belt, EP_BELT }, { ep_belt_active, EP_BELT_ACTIVE }, @@ -2301,7 +2261,7 @@ void InitElementProperties() EP_PLAYER, EP_HAS_CONTENT, EP_DIGGABLE, - EP_PASSABLE_THROUGH, + EP_PASSABLE_INSIDE, EP_OVER_PLAYER, EP_ACTIVE_BOMB, @@ -2314,6 +2274,32 @@ void InitElementProperties() }; #endif + static int no_wall_properties[] = + { + EP_AMOEBALIVE, + EP_AMOEBOID, + EP_CAN_BE_CRUMBLED, + EP_ENEMY, + EP_CAN_FALL, + EP_CAN_SMASH, + EP_CAN_MOVE, + EP_COULD_MOVE, + EP_DONT_GO_TO, + EP_FOOD_DARK_YAMYAM, + EP_GEM, + EP_FOOD_PENGUIN, + EP_PUSHABLE, + EP_PLAYER, + EP_ACCESSIBLE, + EP_DIGGABLE, + EP_COLLECTIBLE, + EP_ACTIVE_BOMB, + EP_BELT, + EP_BELT_ACTIVE, + EP_TUBE, + -1 + }; + /* always start with reliable default values (no properties) */ for (i=0; i= EL_FIRST_RUNTIME_UNREAL) + SET_PROPERTY(i, EP_WALL, FALSE); + + if (IS_HISTORIC_WALL(i)) + SET_PROPERTY(i, EP_WALL, TRUE); + +#if 0 + printf("::: %d: %s '%s'\n", + i, + (IS_WALL(i) ? "IS A WALL: " : "IS NOT A WALL:"), + element_info[i].token_name); +#endif } #if 0 @@ -2366,27 +2377,6 @@ void InitElementProperties() #endif } #endif - -#if 0 - for (i=0; i < MAX_NUM_ELEMENTS; i++) - { - boolean element_is_solid = TRUE; - - if (IS_DIGGABLE(i) || - IS_COLLECTIBLE(i) || - CAN_FALL(i) || - CAN_MOVE(i) || - IS_PUSHABLE(i)) - element_is_solid = FALSE; - - if (IS_INDESTRUCTIBLE(i)) - element_is_solid = TRUE; - - if (element_is_solid != HAS_PROPERTY(i, EP_SOLID)) - printf("::: '%s' should %s solid\n", element_info[i].token_name, - (HAS_PROPERTY(i, EP_SOLID) ? "NOT be" : "be")); - } -#endif } static void InitGlobal()