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,
JY = newJY;
- JX2 = oldJX;
- JY2 = oldJY;
+ lastJX = oldJX;
+ lastJY = oldJY;
PlayerMovPos = (dx > 0 || dy > 0 ? -1 : 1) * 3*TILEX/4;
void ScrollFigure(int init)
{
static long actual_frame_counter;
- static int oldX = -1, oldY = -1;
+ static int oldJX = -1, oldJY = -1;
if (init)
{
- if (PlayerMovPos && oldX != -1 && oldY != -1)
+ /*
+ 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[JX2][JY2] == EL_LEERRAUM)
- Feld[JX2][JY2] = EL_UNSICHTBAR;
- DrawLevelElement(oldX,oldY, Feld[oldX][oldY]);
+ /*
+ 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();
+ */
}
- oldX = JX2;
- oldY = JY2;
+ if (Feld[lastJX][lastJY] == EL_LEERRAUM)
+ Feld[lastJX][lastJY] = EL_PLAYER_IS_LEAVING;
+ DrawLevelElement(lastJX,lastJY, Feld[lastJX][lastJY]);
+ DrawPlayerField();
+
+ oldJX = lastJX;
+ oldJY = lastJY;
actual_frame_counter = FrameCounter;
/*
- redraw[redraw_x1 + oldX][redraw_y1 + oldY] = 1;
+ redraw[redraw_x1 + oldJX][redraw_y1 + oldJY] = 1;
redraw_tiles++;
*/
/*
- DrawLevelElement(oldX,oldY, Feld[oldX][oldY]);
+ DrawLevelElement(oldJX,oldJY, Feld[oldJX][oldJY]);
*/
DrawPlayerField();
redraw_mask |= REDRAW_FIELD;
}
- if (Feld[oldX][oldY] == EL_UNSICHTBAR)
- Feld[oldX][oldY] = EL_LEERRAUM;
+ if (Feld[oldJX][oldJY] == EL_PLAYER_IS_LEAVING)
+ Feld[oldJX][oldJY] = EL_LEERRAUM;
- DrawLevelElement(oldX,oldY, Feld[oldX][oldY]);
+ DrawLevelElement(oldJX,oldJY, Feld[oldJX][oldJY]);
DrawPlayerField();
+
+
+ if (Store[oldJX][oldJY])
+ {
+ DrawGraphic(SCROLLX(oldJX),SCROLLY(oldJY),el2gfx(Store[oldJX][oldJY]));
+ DrawGraphicThruMask(SCROLLX(oldJX),SCROLLY(oldJY),
+ el2gfx(Feld[oldJX][oldJY]));
+ }
+ else if (Feld[oldJX][oldJY]==EL_DYNAMIT)
+ DrawDynamite(oldJX,oldJY);
+ else
+ DrawLevelField(oldJX,oldJY);
+
+
+
if (!PlayerMovPos)
{
- JX2 = JX;
- JY2 = JY;
+ lastJX = JX;
+ lastJY = JY;
+
+ oldJX = oldJY = -1;
}
}
{
int element;
- if (PlayerGone)
+ if (PlayerGone || PlayerMovPos)
return(FALSE);
element = Feld[JX][JY];