moved code for handling wall side of slope for MM engine
authorHolger Schemel <info@artsoft.org>
Fri, 19 May 2023 10:37:12 +0000 (12:37 +0200)
committerHolger Schemel <info@artsoft.org>
Fri, 19 May 2023 10:37:12 +0000 (12:37 +0200)
src/game_mm/mm_game.c

index 24507681889d1becc70e053b776c2f96cee43913..46f914de964302cd2f31fae73d811cdc1a99b7b2 100644 (file)
@@ -1328,22 +1328,6 @@ static void ScanLaser(void)
          break;
       }
     }
-    else if (IS_DF_SLOPE(element))
-    {
-      if (hit_mask == HIT_MASK_LEFT ||
-         hit_mask == HIT_MASK_RIGHT ||
-         hit_mask == HIT_MASK_TOP ||
-         hit_mask == HIT_MASK_BOTTOM)
-      {
-       if (HitReflectingWalls(element, hit_mask))
-         break;
-      }
-      else
-      {
-       if (HitElement(element, hit_mask))
-         break;
-      }
-    }
     else
     {
       if (HitElement(element, hit_mask))
@@ -1704,6 +1688,15 @@ static boolean HitElement(int element, int hit_mask)
     boolean cross_x = (getLevelFromLaserX(LX) != getLevelFromLaserX(LX + 2));
     boolean cross_y = (getLevelFromLaserY(LY) != getLevelFromLaserY(LY + 2));
 
+    // check if wall (horizontal or vertical) side of slope was hit
+    if (hit_mask == HIT_MASK_LEFT ||
+       hit_mask == HIT_MASK_RIGHT ||
+       hit_mask == HIT_MASK_TOP ||
+       hit_mask == HIT_MASK_BOTTOM)
+    {
+      return HitReflectingWalls(element, hit_mask);
+    }
+
     // check if an edge was hit while crossing element borders
     if (cross_x && cross_y && get_number_of_bits(hit_mask) == 1)
     {