rnd-19980817
authorHolger Schemel <info@artsoft.org>
Mon, 17 Aug 1998 21:45:23 +0000 (23:45 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:30:24 +0000 (10:30 +0200)
src/events.c
src/game.c
src/tools.c

index 1b77ca40cbdd515890660201aae94fc01dc4fa6f..940fd3790891bc48cd7a3a50731f9480a192a617 100644 (file)
@@ -668,18 +668,6 @@ void HandleJoystick()
        return;
       }
 
-
-#if 0
-      if (PlayerMovPos)
-      {
-       ScrollFigure(0);
-       /*
-       BackToFront();
-       */
-      }
-#endif
-
-
       if (tape.pausing || PlayerGone)
        joy = 0;
 
@@ -733,13 +721,6 @@ void HandleJoystick()
          }
        }
       }
-
-
-      /*
-      DrawPlayerField();
-      */
-
-
       break;
     }
     default:
index f70257edee6f852965988d0bfef6e18313b0a2a8..eb64c053d27d23f99731ebf76662efa253c5cfa3 100644 (file)
@@ -107,8 +107,8 @@ void InitGame()
       case EL_SPIELFIGUR:
       case EL_SPIELER1:
        Feld[x][y] = EL_LEERRAUM;
-       JX = x;
-       JY = y;
+       JX = lastJX = x;
+       JY = lastJY = y;
        break;
       case EL_SPIELER2:
        Feld[x][y] = EL_LEERRAUM;
@@ -2724,14 +2724,6 @@ void GameActions()
        }
       }
     }
-
-    /*
-    if (PlayerMovPos)
-      ScrollFigure(0);
-
-    DrawPlayerField();
-    */
-
   }
 
   if (TimeLeft>0 && TimeFrames>=25 && !tape.pausing)
@@ -2751,43 +2743,17 @@ void GameActions()
       KillHero();
   }
 
-  /*
-  if (PlayerMovPos)
-    ScrollFigure(0);
-    */
-
-
-  /*
   DrawPlayerField();
-  */
-
-
-  DrawPlayerField();
-
 
   BackToFront();
 }
 
 void ScrollLevel(int dx, int dy)
 {
+  int softscroll_offset = (soft_scrolling_on ? TILEX : 0);
   int x,y;
-  int softscroll_offset = (FX == TILEX ? TILEX : 0);
-
-  /*
-  if (soft_scrolling_on)
-  {
-    ScreenMovPos = PlayerMovPos;
-    redraw_mask |= REDRAW_FIELD;
-  }
-  */
-
 
   ScreenMovPos = PlayerMovPos;
-  if (soft_scrolling_on)
-  {
-    redraw_mask |= REDRAW_FIELD;
-  }
-
 
   XCopyArea(display,drawto_field,drawto_field,gc,
            FX + TILEX*(dx==-1) - softscroll_offset,
@@ -2819,10 +2785,6 @@ BOOL MoveFigureOneStep(int dx, int dy, int real_dx, int real_dy)
   int element;
   int can_move;
 
-/*
-  int old_move_dir = PlayerMovDir;
-*/
-
   if (PlayerGone || (!dx && !dy))
     return(MF_NO_ACTION);
 
@@ -2830,12 +2792,6 @@ BOOL MoveFigureOneStep(int dx, int dy, int real_dx, int real_dy)
                  dx > 0 ? MV_RIGHT :
                  dy < 0 ? MV_UP :
                  dy > 0 ? MV_DOWN :    MV_NO_MOVING);
-/*
-  if (old_move_dir != PlayerMovDir)
-    PlayerFrame = 0;
-  else
-    PlayerFrame = (PlayerFrame + 1) % 4;
-*/
 
   if (!IN_LEV_FIELD(newJX,newJY))
     return(MF_NO_ACTION);
@@ -2900,21 +2856,6 @@ BOOL MoveFigure(int dx, int dy)
   if (PlayerGone || (!dx && !dy))
     return(FALSE);
 
-/*
-  if (!DelayReached(&move_delay,8) && !tape.playing)
-    return(FALSE);
-*/
-
-/*
-  if (!DelayReached(&move_delay,10) && !tape.playing)
-    return(FALSE);
-*/
-
-/*
-  if (!FrameReached(&move_delay,2) && !tape.playing)
-    return(FALSE);
-*/
-
   if (Movemethod == 0)
   {
     if (!DelayReached(&move_delay,Movespeed[0]) && !tape.playing)
@@ -2926,7 +2867,6 @@ BOOL MoveFigure(int dx, int dy)
       return(FALSE);
   }
 
-
   if (last_move_dir & (MV_LEFT | MV_RIGHT))
   {
     if (!(moved |= MoveFigureOneStep(0,dy, dx,dy)))
@@ -2940,17 +2880,6 @@ BOOL MoveFigure(int dx, int dy)
 
   last_move_dir = MV_NO_MOVING;
 
-
-  /*
-  if (moved |= MoveFigureOneStep(dx,0, dx,dy))
-    moved |= MoveFigureOneStep(0,dy, dx,dy);
-  else
-  {
-    moved |= MoveFigureOneStep(0,dy, dx,dy);
-    moved |= MoveFigureOneStep(dx,0, dx,dy);
-  }
-  */
-
   if (moved & MF_MOVING)
   {
     int old_scroll_x=scroll_x, old_scroll_y=scroll_y;
@@ -2986,10 +2915,6 @@ BOOL MoveFigure(int dx, int dy)
 
   TestIfHeroHitsBadThing();
 
-  /*
-  BackToFront();
-  */
-
   if (PlayerGone)
     RemoveHero();
 
@@ -3003,28 +2928,8 @@ void ScrollFigure(int init)
 
   if (init)
   {
-    /*
-    if (PlayerMovPos && oldJX != -1 && oldJY != -1)
-    {
-      if (Feld[lastJX][lastJY] == EL_LEERRAUM)
-       Feld[lastJX][lastJY] = EL_PLAYER_IS_LEAVING;
-      DrawLevelElement(oldJX,oldJY, Feld[oldJX][oldJY]);
-      DrawPlayerField();
-    }
-    */
-
     if (oldJX != -1 && oldJY != -1)
-    {
-      /*
-      if (Feld[lastJX][lastJY] == EL_LEERRAUM)
-       Feld[lastJX][lastJY] = EL_PLAYER_IS_LEAVING;
-       */
       DrawLevelElement(oldJX,oldJY, Feld[oldJX][oldJY]);
-      /*
-      DrawLevelElement(lastJX,lastJY, Feld[lastJX][lastJY]);
-      DrawPlayerField();
-      */
-    }
 
     if (Feld[lastJX][lastJY] == EL_LEERRAUM)
       Feld[lastJX][lastJY] = EL_PLAYER_IS_LEAVING;
@@ -3035,16 +2940,6 @@ void ScrollFigure(int init)
     oldJY = lastJY;
     actual_frame_counter = FrameCounter;
 
-    /*
-    redraw[redraw_x1 + oldJX][redraw_y1 + oldJY] = 1;
-    redraw_tiles++;
-    */
-
-    /*
-    DrawLevelElement(oldJX,oldJY, Feld[oldJX][oldJY]);
-    */
-
-
     if (PlayerPushing)
     {
       int nextJX = JX + (JX - lastJX);
@@ -3054,8 +2949,7 @@ void ScrollFigure(int init)
        DrawLevelElement(nextJX,nextJY, EL_SOKOBAN_FELD_LEER);
       else
        DrawLevelElement(nextJX,nextJY, EL_LEERRAUM);
-  }
-
+    }
 
     DrawPlayerField();
 
index 85c9009f2be9c75079af182617834dbbc8d9bd7d..fe7f0e5cdb8375626d60258ab799893705b83fea 100644 (file)
@@ -65,68 +65,12 @@ void BackToFront()
   if (direct_draw_on && game_status == PLAYING)
     redraw_mask &= ~REDRAW_MAIN;
 
-
-
-  /*
-  if (ScreenMovPos && redraw_mask & REDRAW_FIELD)
-  {
-    redraw_mask |= REDRAW_FIELD;
-
-    printf("FULL SCREEN REDRAW FORCED by ScreenMovPos == %d\n", ScreenMovPos);
-  }
-  */
-
-
-
-  /*
-  if (ScreenMovPos && redraw_mask & REDRAW_TILES)
-  {
-    redraw_mask |= REDRAW_FIELD;
-
-    printf("FULL SCREEN REDRAW FORCED by ScreenMovPos == %d\n", ScreenMovPos);
-  }
-  */
-
-
-  /*
-  if (ScreenMovPos && !(redraw_mask & REDRAW_FIELD))
-  {
-    printf("OOPS!\n");
-
-    *((int *)NULL) = 0;
-  }
-  */
-
-  /*
-  if (IN_SCR_FIELD(lastJX,lastJY))
-    redraw[redraw_x1 + lastJX][redraw_y1 + lastJY] = 0;
-    */
-
-
   if (redraw_mask & REDRAW_TILES && redraw_tiles > REDRAWTILES_THRESHOLD)
     redraw_mask |= REDRAW_FIELD;
 
   if (redraw_mask & REDRAW_FIELD)
     redraw_mask &= ~REDRAW_TILES;
 
-  /*
-  {
-    static int lastFrame = 0;
-
-    printf("FrameCounter: %d\n", FrameCounter);
-
-    if (FrameCounter != lastFrame + 1)
-    {
-      printf("SYNC LOST! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
-
-      if (FrameCounter > 100)
-       *((int *)NULL) = 0;
-    }
-
-    lastFrame = FrameCounter;
-  }
-  */
-
   if (!redraw_mask)
     return;
 
@@ -140,29 +84,24 @@ void BackToFront()
 
   if (redraw_mask & REDRAW_FIELD)
   {
-    int fx = FX, fy = FY;
-
-    if (soft_scrolling_on)
+    if (game_status != PLAYING || redraw_mask & REDRAW_FROM_BACKBUFFER)
+      XCopyArea(display,backbuffer,window,gc,
+               REAL_SX,REAL_SY, FULL_SXSIZE,FULL_SYSIZE,
+               REAL_SX,REAL_SY);
+    else
     {
-      fx += (PlayerMovDir & (MV_LEFT|MV_RIGHT) ? ScreenMovPos : 0);
-      fy += (PlayerMovDir & (MV_UP|MV_DOWN)    ? ScreenMovPos : 0);
-    }
+      int fx = FX, fy = FY;
+
+      if (soft_scrolling_on)
+      {
+       fx += (PlayerMovDir & (MV_LEFT|MV_RIGHT) ? ScreenMovPos : 0);
+       fy += (PlayerMovDir & (MV_UP|MV_DOWN)    ? ScreenMovPos : 0);
+      }
 
-    if (game_status == PLAYING && !(redraw_mask & REDRAW_FROM_BACKBUFFER))
-    {
       XCopyArea(display,buffer,window,gc,
                fx,fy, SXSIZE,SYSIZE,
                SX,SY);
-
-      /*
-      printf("FULL SCREEN REDRAW / ScreenMovPos == %d\n", ScreenMovPos);
-      */
-
     }
-    else
-      XCopyArea(display,backbuffer,window,gc,
-               REAL_SX,REAL_SY, FULL_SXSIZE,FULL_SYSIZE,
-               REAL_SX,REAL_SY);
     redraw_mask &= ~REDRAW_MAIN;
   }
 
@@ -232,7 +171,6 @@ void BackToFront()
 
 void FadeToFront()
 {
-
 /*
   long fading_delay = 300000;
 
@@ -391,11 +329,6 @@ void DrawPlayerField()
   if (PlayerGone)
     return;
 
-  /*
-  printf("INFO: DrawPlayerField(): x = %d, y = %d\n",x,y);
-  */
-
-
 #if DEBUG
   if (!IN_LEV_FIELD(x,y) || !IN_SCR_FIELD(sx,sy))
   {
@@ -468,33 +401,12 @@ void DrawPlayerField()
       syy = PlayerMovPos;
   }
 
-#if 0
-  if (!soft_scrolling_on)
-  {
-    int old_scroll_x=scroll_x, old_scroll_y=scroll_y;
-    int new_scroll_x=scroll_x, new_scroll_y=scroll_y;
-    int offset = (scroll_delay_on ? 3 : 0);
-
-    if ((scroll_x < lastJX-MIDPOSX-offset || scroll_x > lastJX-MIDPOSX+offset) &&
-       lastJX>=MIDPOSX-1-offset && lastJX<=lev_fieldx-(MIDPOSX-offset))
-      new_scroll_x = lastJX-MIDPOSX + (scroll_x < lastJX-MIDPOSX ? -offset : offset);
-    if ((scroll_y < lastJY-MIDPOSY-offset || scroll_y > lastJY-MIDPOSY+offset) &&
-       JY>=MIDPOSY-1-offset && JY<=lev_fieldy-(MIDPOSY-offset))
-      new_scroll_y = lastJY-MIDPOSY + (scroll_y < lastJY-MIDPOSY ? -offset : offset);
-
-    if (new_scroll_x!=old_scroll_x || new_scroll_y!=old_scroll_y)
-      /*
-      ScrollLevel(old_scroll_x-scroll_x,old_scroll_y-scroll_y);
-      */
-      sxx = syy = 0;
-  }
-#endif
-
 
   if (!soft_scrolling_on && ScreenMovPos)
     sxx = syy = 0;
 
 
+
   if (draw_thru_mask)
     DrawGraphicShiftedThruMask(sx,sy,sxx,syy,graphic,CUT_NO_CUTTING);
     /*
@@ -520,9 +432,22 @@ void DrawPlayerField()
                                 GFX_SOKOBAN_OBJEKT,
                                 CUT_NO_CUTTING);
     else
-      DrawGraphicShifted(px,py,sxx,syy,
-                        el2gfx(Feld[nextJX][nextJY]),
-                        CUT_NO_CUTTING);
+    {
+      int element = Feld[nextJX][nextJY];
+      int graphic = el2gfx(element);
+
+      if (element == EL_FELSBROCKEN && sxx)
+      {
+       int phase = PlayerMovPos / (TILEX/4);
+
+       if (PlayerMovDir == MV_LEFT)
+         graphic += phase;
+       else
+         graphic += phase+4;
+      }
+
+      DrawGraphicShifted(px,py, sxx,syy, graphic, CUT_NO_CUTTING);
+    }
   }
 
 
@@ -551,9 +476,19 @@ void DrawPlayerField()
   {
     int dest_x = SX+SCROLLX(x)*TILEX;
     int dest_y = SY+SCROLLY(y)*TILEY;
+    int x_size = TILEX;
+    int y_size = TILEY;
+
+    if (!ScreenMovPos)
+    {
+      dest_x = SX + SCROLLX(MIN(JX,lastJX))*TILEX;
+      dest_y = SY + SCROLLY(MIN(JY,lastJY))*TILEY;
+      x_size = TILEX * (1 + ABS(JX - lastJX));
+      y_size = TILEY * (1 + ABS(JY - lastJY));
+    }
 
     XCopyArea(display,drawto_field,window,gc,
-             dest_x,dest_y, TILEX,TILEY, dest_x,dest_y);
+             dest_x,dest_y, x_size,y_size, dest_x,dest_y);
     SetDrawtoField(DRAW_DIRECT);
   }
 }