X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=32b2cb8e3d6504c2f426e26ba65b554695b3c855;hb=cd9add1d9479d1938d05ca9df4f31c3f99bd5f3e;hp=c2e69b87e351f5a6487a7daabfcedc2355d4c6b3;hpb=1290799ac0be42dc5db602dd113c5185df0a7e03;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index c2e69b87..32b2cb8e 100644 --- a/src/init.c +++ b/src/init.c @@ -26,6 +26,9 @@ #include "cartoons.h" #include "config.h" +#include "conf_e2g.c" /* include auto-generated data structure definitions */ + + static char *image_filename[NUM_PICTURES] = { "RocksScreen.pcx", @@ -556,8 +559,7 @@ void InitGadgets() void InitElementInfo() { - int i, j; - +#if 0 static struct { int element; @@ -575,7 +577,6 @@ void InitElementInfo() { EL_EXIT_OPENING, GFX_AUSGANG_ACT }, { EL_EXIT_OPEN, GFX_AUSGANG_AUF }, { EL_SP_EXIT_OPEN, GFX_SP_EXIT }, - { EL_PLAYER, GFX_SPIELFIGUR }, { EL_PLAYER1, GFX_SPIELER1 }, { EL_PLAYER2, GFX_SPIELER2 }, { EL_PLAYER3, GFX_SPIELER3 }, @@ -653,6 +654,7 @@ void InitElementInfo() { EL_PACMAN_LEFT, GFX_PACMAN_LEFT }, { EL_PACMAN_DOWN, GFX_PACMAN_DOWN }, { EL_INVISIBLE_WALL, GFX_UNSICHTBAR }, + { EL_INVISIBLE_WALL_ACTIVE, GFX_UNSICHTBAR_ON }, { EL_WALL_EMERALD, GFX_ERZ_EDEL }, { EL_WALL_DIAMOND, GFX_ERZ_DIAM }, { EL_LAMP, GFX_BIRNE_AUS }, @@ -677,10 +679,10 @@ void InitElementInfo() { EL_BD_MAGIC_WALL_EMPTYING, GFX_MAGIC_WALL_BD_EMPTY }, { EL_BD_MAGIC_WALL_FULL, GFX_MAGIC_WALL_BD_FULL }, { EL_BD_MAGIC_WALL_DEAD, GFX_MAGIC_WALL_BD_DEAD }, - { EL_DYNABOMB_ACTIVE_1, GFX_DYNABOMB }, - { EL_DYNABOMB_ACTIVE_2, GFX_DYNABOMB }, - { EL_DYNABOMB_ACTIVE_3, GFX_DYNABOMB }, - { EL_DYNABOMB_ACTIVE_4, GFX_DYNABOMB }, + { EL_DYNABOMB_PLAYER1_ACTIVE, GFX_DYNABOMB }, + { EL_DYNABOMB_PLAYER2_ACTIVE, GFX_DYNABOMB }, + { EL_DYNABOMB_PLAYER3_ACTIVE, GFX_DYNABOMB }, + { EL_DYNABOMB_PLAYER4_ACTIVE, GFX_DYNABOMB }, { EL_DYNABOMB_NR, GFX_DYNABOMB_NR }, { EL_DYNABOMB_SZ, GFX_DYNABOMB_SZ }, { EL_DYNABOMB_XL, GFX_DYNABOMB_XL }, @@ -701,6 +703,7 @@ void InitElementInfo() { EL_SP_BUGGY_BASE_ACTIVE, GFX_SP_BUG_ACTIVE }, { EL_SP_ZONK, GFX_SP_ZONK }, { EL_INVISIBLE_STEELWALL, GFX_INVISIBLE_STEEL }, + { EL_INVISIBLE_STEELWALL_ACTIVE, GFX_INVISIBLE_STEEL_ON }, { EL_BLACK_ORB, GFX_BLACK_ORB }, { EL_EM_GATE1, GFX_EM_GATE_1 }, { EL_EM_GATE2, GFX_EM_GATE_2 }, @@ -790,6 +793,7 @@ void InitElementInfo() { EL_MOLE_DOWN, GFX_MOLE_DOWN }, { EL_STEELWALL_SLANTED, GFX_STEEL_SLANTED }, { EL_INVISIBLE_SAND, GFX_SAND_INVISIBLE }, + { EL_INVISIBLE_SAND_ACTIVE, GFX_SAND_INVISIBLE_ON }, { EL_DX_UNKNOWN_15, GFX_DX_UNKNOWN_15 }, { EL_DX_UNKNOWN_42, GFX_DX_UNKNOWN_42 }, { EL_TIMEGATE_OPEN, GFX_TIMEGATE_OPEN }, @@ -917,21 +921,33 @@ void InitElementInfo() -1, -1 } }; +#endif - /* always start with reliable default values */ + int i, act, dir; + + /* set values to -1 to identify later as "uninitialized" values */ for(i=0; i -1) @@ -973,6 +991,73 @@ void InitElementInfo() element_info[element].has_direction_graphic[GFX_ACTION_DEFAULT] = TRUE; i++; } +#else + + i = 0; + while (element_to_graphic[i].element > -1) + { + int element = element_to_graphic[i].element; + int direction = element_to_graphic[i].direction; + int action = element_to_graphic[i].action; + int graphic = element_to_graphic[i].graphic; + + if (action > -1) + action = graphics_action_mapping[action]; + else + action = GFX_ACTION_DEFAULT; + + if (direction > -1) + { + direction = MV_DIR_BIT(direction); + + element_info[element].direction_graphic[action][direction] = graphic; + } + else + element_info[element].graphic[action] = graphic; + + i++; + } + + /* now set all '-1' values to element specific default values */ + for(i=0; i 1) + new_graphic_info[i].anim_mode = ANIM_LOOP; else - new_graphic_info[i].anim_mode = ANIM_NORMAL; + new_graphic_info[i].anim_mode = ANIM_NONE; - /* additionally, animation can be either pingpong or pingpong2 layout */ - if (parameter[GFX_ARG_PINGPONG]) - new_graphic_info[i].anim_mode |= ANIM_PINGPONG; - else if (parameter[GFX_ARG_PINGPONG2]) - new_graphic_info[i].anim_mode |= ANIM_PINGPONG2; + /* set additional flag to play animation frames in reverse order */ + if (parameter[GFX_ARG_MODE_REVERSE]) + new_graphic_info[i].anim_mode |= ANIM_REVERSE; /* animation synchronized with global frame counter, not move position */ new_graphic_info[i].anim_global_sync = parameter[GFX_ARG_GLOBAL_SYNC]; - - new_graphic_info[i].anim_vertical = parameter[GFX_ARG_VERTICAL]; } #if 0 @@ -1191,6 +1289,9 @@ void InitElementProperties() EL_SP_EXIT_CLOSED, EL_SP_EXIT_OPEN, EL_INVISIBLE_STEELWALL, + EL_INVISIBLE_STEELWALL_ACTIVE, + EL_INVISIBLE_WALL, + EL_INVISIBLE_WALL_ACTIVE, EL_CONVEYOR_BELT1_SWITCH_LEFT, EL_CONVEYOR_BELT1_SWITCH_MIDDLE, EL_CONVEYOR_BELT1_SWITCH_RIGHT, @@ -1296,6 +1397,7 @@ void InitElementProperties() EL_SP_HARD_BASE5, EL_SP_HARD_BASE6, EL_INVISIBLE_STEELWALL, + EL_INVISIBLE_STEELWALL_ACTIVE, EL_CONVEYOR_BELT1_SWITCH_LEFT, EL_CONVEYOR_BELT1_SWITCH_MIDDLE, EL_CONVEYOR_BELT1_SWITCH_RIGHT, @@ -1469,6 +1571,9 @@ void InitElementProperties() EL_SP_EXIT_CLOSED, EL_SP_EXIT_OPEN, EL_INVISIBLE_STEELWALL, + EL_INVISIBLE_STEELWALL_ACTIVE, + EL_INVISIBLE_WALL, + EL_INVISIBLE_WALL_ACTIVE, EL_STEELWALL_SLANTED, EL_EMC_STEELWALL1, EL_EMC_STEELWALL2, @@ -1675,7 +1780,7 @@ void InitElementProperties() EL_EXIT_CLOSED, EL_EXIT_OPEN, EL_STEELWALL, - EL_PLAYER, + EL_PLAYER1, EL_BD_FIREFLY, EL_BD_FIREFLY_1, EL_BD_FIREFLY_2, @@ -1698,7 +1803,7 @@ void InitElementProperties() EL_SOKOBAN_OBJECT, EL_SOKOBAN_FIELD_EMPTY, EL_SOKOBAN_FIELD_FULL, - EL_PLAYER, + EL_PLAYER1, EL_INVISIBLE_STEELWALL }; static int ep_sb_element_num = SIZEOF_ARRAY_INT(ep_sb_element); @@ -1751,7 +1856,9 @@ void InitElementProperties() EL_EM_GATE3_GRAY, EL_EM_GATE4_GRAY, EL_DYNAMITE, + EL_INVISIBLE_STEELWALL, EL_INVISIBLE_WALL, + EL_INVISIBLE_SAND, EL_LAMP, EL_LAMP_ACTIVE, EL_WALL_EMERALD, @@ -1808,7 +1915,6 @@ void InitElementProperties() EL_SP_HARD_BASE4, EL_SP_HARD_BASE5, EL_SP_HARD_BASE6, - EL_INVISIBLE_STEELWALL, EL_CONVEYOR_BELT1_SWITCH_LEFT, EL_CONVEYOR_BELT1_SWITCH_MIDDLE, EL_CONVEYOR_BELT1_SWITCH_RIGHT, @@ -1854,10 +1960,10 @@ void InitElementProperties() EL_BOMB, EL_DYNAMITE_ACTIVE, EL_DYNAMITE, - EL_DYNABOMB_ACTIVE_1, - EL_DYNABOMB_ACTIVE_2, - EL_DYNABOMB_ACTIVE_3, - EL_DYNABOMB_ACTIVE_4, + EL_DYNABOMB_PLAYER1_ACTIVE, + EL_DYNABOMB_PLAYER2_ACTIVE, + EL_DYNABOMB_PLAYER3_ACTIVE, + EL_DYNABOMB_PLAYER4_ACTIVE, EL_DYNABOMB_NR, EL_DYNABOMB_SZ, EL_DYNABOMB_XL, @@ -1910,7 +2016,6 @@ void InitElementProperties() static int ep_player[] = { - EL_PLAYER, EL_PLAYER1, EL_PLAYER2, EL_PLAYER3, @@ -1934,7 +2039,8 @@ void InitElementProperties() EL_SP_BASE, EL_SP_BUGGY_BASE, EL_TRAP, - EL_INVISIBLE_SAND + EL_INVISIBLE_SAND, + EL_INVISIBLE_SAND_ACTIVE }; static int ep_eatable_num = SIZEOF_ARRAY_INT(ep_eatable); @@ -2044,10 +2150,10 @@ void InitElementProperties() static int ep_active_bomb[] = { EL_DYNAMITE_ACTIVE, - EL_DYNABOMB_ACTIVE_1, - EL_DYNABOMB_ACTIVE_2, - EL_DYNABOMB_ACTIVE_3, - EL_DYNABOMB_ACTIVE_4 + EL_DYNABOMB_PLAYER1_ACTIVE, + EL_DYNABOMB_PLAYER2_ACTIVE, + EL_DYNABOMB_PLAYER3_ACTIVE, + EL_DYNABOMB_PLAYER4_ACTIVE }; static int ep_active_bomb_num = SIZEOF_ARRAY_INT(ep_active_bomb);