X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;fp=src%2Ftools.c;h=babb4987171bd73559191c0429f79aed62e64432;hb=be208e8ebb9fbe5a97e7ed1d63aa421ac303c0bc;hp=26df75352df7bb0345e1c4bf7b5a8ad081ffd93e;hpb=bd826a8c1635d94fc84b15c785377b975a6cd7e1;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 26df7535..babb4987 100644 --- a/src/tools.c +++ b/src/tools.c @@ -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];