white space changes
[rocksndiamonds.git] / src / game_bd / bd_caveengine.c
index d33222e0ffb330846331d899edd0b07cc9a12b43..bfb7dfbc004ea74428ac2494752c4beed588a341 100644 (file)
@@ -303,6 +303,38 @@ static void play_sound_of_element_pushing(GdCave *cave, GdElement element, int x
   }
 }
 
+static inline int getx(const GdCave *cave, const int x, const int y)
+{
+  return cave->getx(cave, x, y);
+}
+
+static inline int gety(const GdCave *cave, const int x, const int y)
+{
+  return cave->gety(cave, x, y);
+}
+
+/* perfect (non-lineshifting) GET x/y functions; returns range corrected x/y position */
+static inline int getx_perfect(const GdCave *cave, const int x, const int y)
+{
+  return (x + cave->w) % cave->w;
+}
+
+static inline int gety_perfect(const GdCave *cave, const int x, const int y)
+{
+  return (y + cave->h) % cave->h;
+}
+
+/* line shifting GET x/y function; returns range corrected x/y position */
+static inline int getx_shift(const GdCave *cave, int x, int y)
+{
+  return (x + cave->w) % cave->w;
+}
+
+static inline int gety_shift(const GdCave *cave, int x, int y)
+{
+  return ((x < 0 ? y - 1 : x >= cave->w ? y + 1 : y) + cave->h) % cave->h;
+}
+
 static inline GdElement *getp(const GdCave *cave, const int x, const int y)
 {
   return cave->getp(cave, x, y);
@@ -1517,9 +1549,17 @@ void gd_cave_iterate(GdCave *cave, GdDirection player_move, boolean player_fire,
 
   /* set cave get function; to implement perfect or lineshifting borders */
   if (cave->lineshift)
+  {
     cave->getp = getp_shift;
+    cave->getx = getx_shift;
+    cave->gety = gety_shift;
+  }
   else
+  {
     cave->getp = getp_perfect;
+    cave->getx = getx_perfect;
+    cave->gety = gety_perfect;
+  }
 
   /* increment this. if the scan routine comes across player, clears it (sets to zero). */
   if (cave->player_seen_ago < 100)
@@ -1669,8 +1709,11 @@ void gd_cave_iterate(GdCave *cave, GdDirection player_move, boolean player_fire,
            /* try to push element; if successful, break  */
            push = do_push(cave, x, y, player_move, player_fire);
            if (push)
+           {
              remains = O_SPACE;
+           }
            else
+           {
              switch (what)
              {
                case O_BOMB:
@@ -1718,9 +1761,10 @@ void gd_cave_iterate(GdCave *cave, GdDirection player_move, boolean player_fire,
                default:
                  /* get element - process others.
                     if cannot get, player_get_element will return the same */
-                 remains = player_get_element (cave, what, x, y);
+                 remains = player_get_element(cave, what, x, y);
                  break;
              }
+           }
 
            if (remains != what || remains == O_SPACE)
            {
@@ -1785,7 +1829,9 @@ void gd_cave_iterate(GdCave *cave, GdDirection player_move, boolean player_fire,
 
            /* player fire is false... */
            if (do_push(cave, x, y, player_move, FALSE))
+           {
              remains = O_SPACE;
+           }
            else
            {
              switch (what)