added reading optional platform setup file
[rocksndiamonds.git] / src / game_em / graphics.c
index 7f303a2a6510b78fda2ae33728a6037669e5cf6d..398ae6e0e303254f319e69931debc5d4b8b0b291 100644 (file)
@@ -441,16 +441,17 @@ static void blitplayer(int nr)
       ply[nr].x > lev.right - 1)
   {
     struct PLAYER ply_last = ply[nr];
+    int direction = (ply[nr].x < lev.left ? -1 : 1);
     int dx = ply[nr].x - ply[nr].prev_x;
 
-    ply[nr].x = (ply[nr].x < lev.left ? lev.right - 1 : lev.left);
+    ply[nr].x += -direction * lev.width;
     ply[nr].prev_x = ply[nr].x - dx;
 
     if (!lev.infinite_true)
     {
       int dy = ply[nr].y - ply[nr].prev_y;
 
-      ply[nr].y += (ply[nr].x == lev.left ? 1 : -1);
+      ply[nr].y += direction;
       ply[nr].prev_y = ply[nr].y - dy;
     }
 
@@ -552,11 +553,13 @@ static void setMinimalPlayerBoundaries(int *sx1, int *sy1, int *sx2, int *sy2)
 boolean checkIfAllPlayersFitToScreen(void)
 {
   int sx1 = 0, sy1 = 0, sx2 = 0, sy2 = 0;
+  int scr_fieldx = getScreenFieldSizeX();
+  int scr_fieldy = getScreenFieldSizeY();
 
   setMinimalPlayerBoundaries(&sx1, &sy1, &sx2, &sy2);
 
-  return (sx2 - sx1 <= SCR_FIELDX * TILEX &&
-         sy2 - sy1 <= SCR_FIELDY * TILEY);
+  return (sx2 - sx1 <= scr_fieldx * TILEX &&
+         sy2 - sy1 <= scr_fieldy * TILEY);
 }
 
 static void setScreenCenteredToAllPlayers(int *sx, int *sy)