added function to get graphics for MM style game elements
[rocksndiamonds.git] / src / tools.c
index fcc82f30f17919c995a146f877de3287c0607863..151fd94b1f4baad0b403d3b5c72254d6fdb71f88 100644 (file)
@@ -7230,12 +7230,56 @@ int map_action_SP_to_RND(int action_sp)
 
 int map_element_RND_to_MM(int element_rnd)
 {
-  return (element_rnd > 1000 ? element_rnd - 1000 : 0);
+  return (element_rnd >= EL_CHAR_START &&
+         element_rnd <= EL_CHAR_END ?
+         EL_CHAR_START_NATIVE_MM + element_rnd - EL_CHAR_START :
+
+         element_rnd >= EL_DF_START &&
+         element_rnd <= EL_DF_END ?
+         EL_DF_START_NATIVE_MM + element_rnd - EL_DF_START :
+
+         element_rnd >= EL_MM_START &&
+         element_rnd <= EL_MM_END ?
+         EL_MM_START_NATIVE_MM + element_rnd - EL_MM_START :
+
+         element_rnd >= EL_MM_RUNTIME_START &&
+         element_rnd <= EL_MM_RUNTIME_END ?
+         EL_MM_RUNTIME_START_NATIVE_MM + element_rnd - EL_MM_RUNTIME_START :
+
+         element_rnd >= EL_MM_DUMMY_START &&
+         element_rnd <= EL_MM_DUMMY_END ?
+         EL_MM_DUMMY_START_NATIVE_MM + element_rnd - EL_MM_DUMMY_START :
+
+         EL_EMPTY_NATIVE_MM);
 }
 
 int map_element_MM_to_RND(int element_mm)
 {
-  return 1000 + element_mm;
+  return (element_mm == EL_EMPTY_NATIVE_MM ||
+         element_mm == EL_DF_EMPTY_NATIVE_MM ?
+         EL_EMPTY :
+
+         element_mm >= EL_CHAR_START_NATIVE_MM &&
+         element_mm <= EL_CHAR_END_NATIVE_MM ?
+         EL_CHAR_START + element_mm - EL_CHAR_START_NATIVE_MM :
+
+         element_mm >= EL_DF_START_NATIVE_MM &&
+         element_mm <= EL_DF_END_NATIVE_MM ?
+         EL_DF_START + element_mm - EL_DF_START_NATIVE_MM :
+
+         element_mm >= EL_MM_START_NATIVE_MM &&
+         element_mm <= EL_MM_END_NATIVE_MM ?
+         EL_MM_START + element_mm - EL_MM_START_NATIVE_MM :
+
+         element_mm >= EL_MM_RUNTIME_START_NATIVE_MM &&
+         element_mm <= EL_MM_RUNTIME_END_NATIVE_MM ?
+         EL_MM_RUNTIME_START + element_mm - EL_MM_RUNTIME_START_NATIVE_MM :
+
+         element_mm >= EL_MM_DUMMY_START_NATIVE_MM &&
+         element_mm <= EL_MM_DUMMY_END_NATIVE_MM ?
+         EL_MM_DUMMY_START + element_mm - EL_MM_DUMMY_START_NATIVE_MM :
+
+         EL_EMPTY);
 }
 
 int get_next_element(int element)
@@ -7258,6 +7302,11 @@ int get_next_element(int element)
   }
 }
 
+int el2img_mm(int element_mm)
+{
+  return el2img(map_element_MM_to_RND(element_mm));
+}
+
 int el_act_dir2img(int element, int action, int direction)
 {
   element = GFX_ELEMENT(element);