X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=9a23bd66870eb5834fe93221b04faf4580c1f224;hb=7682b4160c39233d30c765171ceaea0af561b45c;hp=26df75352df7bb0345e1c4bf7b5a8ad081ffd93e;hpb=bd826a8c1635d94fc84b15c785377b975a6cd7e1;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 26df7535..9a23bd66 100644 --- a/src/tools.c +++ b/src/tools.c @@ -6212,7 +6212,7 @@ bd_object_mapping_list[] = }, { O_FLYING_STONE_F, FALSE, - EL_BD_FLYING_ROCK, ACTION_FALLING, -1 + EL_BD_FLYING_ROCK, ACTION_FLYING, -1 }, { O_MEGA_STONE, TRUE, @@ -6248,7 +6248,7 @@ bd_object_mapping_list[] = }, { O_FLYING_DIAMOND_F, FALSE, - EL_BD_FLYING_DIAMOND, ACTION_FALLING, -1 + EL_BD_FLYING_DIAMOND, ACTION_FLYING, -1 }, { O_NUT, TRUE, @@ -6974,14 +6974,6 @@ bd_object_mapping_list[] = O_NITRO_PACK_F, FALSE, EL_BD_NITRO_PACK, ACTION_FALLING, -1 }, - { - O_NITRO_PACK_EXPLODE, TRUE, - EL_BD_NITRO_PACK_EXPLODING, -1, -1 - }, - { - O_NITRO_PACK_EXPLODE, FALSE, - EL_BD_NITRO_PACK, ACTION_EXPLODING, -1 - }, { O_PRE_CLOCK_1, TRUE, EL_BD_CLOCK_GROWING_1, -1, -1 @@ -7254,6 +7246,14 @@ bd_object_mapping_list[] = O_NITRO_EXPL_4, FALSE, EL_BD_NITRO_PACK, ACTION_EXPLODING, -1 }, + { + O_NITRO_PACK_EXPLODE, TRUE, + EL_BD_NITRO_PACK_EXPLODING, -1, -1 + }, + { + O_NITRO_PACK_EXPLODE, FALSE, + EL_BD_NITRO_PACK, ACTION_EXPLODING, -1 + }, { O_AMOEBA_2_EXPL_1, TRUE, EL_BD_AMOEBA_2_EXPLODING_1, -1, -1 @@ -7491,6 +7491,50 @@ int map_element_RND_to_BD_cave(int element_rnd) return mapping_RND_to_BD[element_rnd]; } +int map_element_RND_to_BD_effect(int element_rnd, int action) +{ + static unsigned short mapping_RND_to_BD[NUM_FILE_ELEMENTS][NUM_ACTIONS]; + static boolean mapping_initialized = FALSE; + + if (!mapping_initialized) + { + int i, j; + + // return "O_UNKNOWN" for all undefined elements in mapping array + for (i = 0; i < NUM_FILE_ELEMENTS; i++) + for (j = 0; j < NUM_ACTIONS; j++) + mapping_RND_to_BD[i][j] = O_UNKNOWN; + + for (i = 0; bd_object_mapping_list[i].element_bd != -1; i++) + { + int element_rnd = bd_object_mapping_list[i].element_rnd; + int element_bd = bd_object_mapping_list[i].element_bd; + int action = bd_object_mapping_list[i].action; + + if (action != -1) + mapping_RND_to_BD[element_rnd][action] = element_bd; + } + + mapping_initialized = TRUE; + } + + if (element_rnd < 0 || element_rnd >= NUM_FILE_ELEMENTS) + { + Warn("invalid RND element %d", element_rnd); + + return O_UNKNOWN; + } + + if (action < 0 || action >= NUM_ACTIONS) + { + Warn("invalid action %d", action); + + return O_UNKNOWN; + } + + return mapping_RND_to_BD[element_rnd][action]; +} + int map_element_BD_to_RND_cave(int element_bd) { static unsigned short mapping_BD_to_RND[O_MAX_ALL];