added functions for scanned/non-scanned BD elements (not used yet)
authorHolger Schemel <holger.schemel@virtion.de>
Thu, 22 Aug 2024 17:28:28 +0000 (19:28 +0200)
committerHolger Schemel <holger.schemel@virtion.de>
Thu, 22 Aug 2024 15:30:09 +0000 (17:30 +0200)
src/game_bd/bd_caveengine.c
src/game_bd/bd_caveengine.h

index 1b743c5a775065474feb5f06be83bb59a5c99681..6ec87a3996c48d94d2ff10b6a45b7ec5ec6c4625 100644 (file)
@@ -516,6 +516,30 @@ static inline boolean moved_by_conveyor_bottom_dir(const GdCave *cave, const int
   return (gd_element_properties[get_dir(cave, x, y, dir) & O_MASK].properties & P_MOVED_BY_CONVEYOR_BOTTOM) != 0;
 }
 
+// returns true, if the given element is scanned
+boolean is_scanned_element(GdElement e)
+{
+  return (gd_element_properties[e].properties & P_SCANNED) != 0;
+}
+
+// This function converts an element to its scanned pair.
+GdElement scanned_pair(GdElement of_what)
+{
+  if (gd_element_properties[of_what].properties & P_SCANNED) // already scanned?
+    return of_what;
+
+  return gd_element_properties[of_what].pair;
+}
+
+// This function converts an element to its non-scanned pair.
+GdElement non_scanned_pair(GdElement of_what)
+{
+  if (!(gd_element_properties[of_what].properties & P_SCANNED)) // already non-scanned?
+    return of_what;
+
+  return gd_element_properties[of_what].pair;
+}
+
 static inline boolean is_scanned_dir(const GdCave *cave, const int x, const int y,
                                     const GdDirection dir)
 {
index b4c44f5b104e6d073e7b8cf72238c33b4024573f..073b8531f8005e430f88b1b42eec61293fb45016 100644 (file)
@@ -21,6 +21,9 @@
 
 
 // the game itself
+boolean is_scanned_element(GdElement e);
+GdElement scanned_pair(GdElement of_what);
+GdElement non_scanned_pair(GdElement of_what);
 boolean is_player(const GdCave *cave, const int x, const int y);
 boolean can_be_pushed_dir(const GdCave *cave, const int x, const int y, const GdDirection dir);
 GdDirection gd_direction_from_keypress(boolean up, boolean down, boolean left, boolean right);