X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=a17288a1bf1fc5ae2eb2936cbe98d5fc1fb966c5;hb=19e3dfa321d39a822bda8fa489fb76f25f9f9165;hp=fe7f0e5cdb8375626d60258ab799893705b83fea;hpb=aaef409525599bb87a6dc8c099fbc0e11a455bae;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index fe7f0e5c..a17288a1 100644 --- a/src/tools.c +++ b/src/tools.c @@ -393,12 +393,12 @@ void DrawPlayerField() graphic += PlayerFrame; - if (PlayerMovPos) + if (PlayerGfxPos) { if (PlayerMovDir == MV_LEFT || PlayerMovDir == MV_RIGHT) - sxx = PlayerMovPos; + sxx = PlayerGfxPos; else - syy = PlayerMovPos; + syy = PlayerGfxPos; } @@ -420,7 +420,11 @@ void DrawPlayerField() - if (PlayerPushing && PlayerMovPos) + MarkTileDirty(sx,sy); + + + + if (PlayerPushing && PlayerGfxPos) { int nextJX = JX + (JX - lastJX); int nextJY = JY + (JY - lastJY); @@ -438,7 +442,7 @@ void DrawPlayerField() if (element == EL_FELSBROCKEN && sxx) { - int phase = PlayerMovPos / (TILEX/4); + int phase = PlayerGfxPos / (TILEX/4); if (PlayerMovDir == MV_LEFT) graphic += phase; @@ -544,9 +548,7 @@ void DrawGraphic(int x, int y, int graphic) #endif DrawGraphicExt(drawto_field, gc, x, y, graphic); - redraw_tiles++; - redraw[redraw_x1 + x][redraw_y1 + y] = TRUE; - redraw_mask |= REDRAW_TILES; + MarkTileDirty(x,y); } void DrawGraphicExt(Drawable d, GC gc, int x, int y, int graphic) @@ -628,9 +630,7 @@ void DrawGraphicThruMask(int x, int y, int graphic) return; } - redraw_tiles++; - redraw[redraw_x1 + x][redraw_y1 + y]=TRUE; - redraw_mask|=REDRAW_TILES; + MarkTileDirty(x,y); } void DrawElementThruMask(int x, int y, int element) @@ -641,9 +641,7 @@ void DrawElementThruMask(int x, int y, int element) void DrawMiniGraphic(int x, int y, int graphic) { DrawMiniGraphicExt(drawto, gc, x, y, graphic); - redraw_tiles++; - redraw[x/2][y/2]=TRUE; - redraw_mask|=REDRAW_TILES; + MarkTileDirty(x/2, y/2); } void DrawMiniGraphicExt(Drawable d, GC gc, int x, int y, int graphic) @@ -709,7 +707,7 @@ void DrawGraphicShifted(int x,int y, int dx,int dy, int graphic, int cut_mode) else if (x==BX2 && dx>0) /* Element verläßt rechts das Bild */ width -= dx; else if (dx) /* allg. Bewegung in x-Richtung */ - redraw[redraw_x1 + x + SIGN(dx)][redraw_y1 + y] = TRUE; + MarkTileDirty(x + SIGN(dx), y); if (y < BY1) /* Element kommt von oben ins Bild */ { @@ -741,12 +739,12 @@ void DrawGraphicShifted(int x,int y, int dx,int dy, int graphic, int cut_mode) height = dy; cy = TILEY-dy; dy = TILEY; - redraw[redraw_x1 + x][redraw_y1 + y + 1] = TRUE; + MarkTileDirty(x, y + 1); } /* Element verläßt unten das Bild */ else if (dy > 0 && (y == BY2 || cut_mode==CUT_BELOW)) height -= dy; else if (dy) /* allg. Bewegung in y-Richtung */ - redraw[redraw_x1 + x][redraw_y1 + y + SIGN(dy)] = TRUE; + MarkTileDirty(x, y + SIGN(dy)); } if (graphic >= GFX_START_ROCKSSCREEN && graphic <= GFX_END_ROCKSSCREEN) @@ -775,9 +773,7 @@ void DrawGraphicShifted(int x,int y, int dx,int dy, int graphic, int cut_mode) } #endif - redraw_tiles++; - redraw[redraw_x1 + x][redraw_y1 + y] = TRUE; - redraw_mask |= REDRAW_TILES; + MarkTileDirty(x,y); } void DrawElementShifted(int x, int y, int dx, int dy, int element,int cut_mode) @@ -903,7 +899,7 @@ void DrawGraphicShiftedThruMask(int x,int y, int dx,int dy, int graphic, else if (x==BX2 && dx>0) /* Element verläßt rechts das Bild */ width -= dx; else if (dx) /* allg. Bewegung in x-Richtung */ - redraw[redraw_x1 + x + SIGN(dx)][redraw_y1 + y] = TRUE; + MarkTileDirty(x + SIGN(dx), y); if (y < BY1) /* Element kommt von oben ins Bild */ { @@ -935,12 +931,12 @@ void DrawGraphicShiftedThruMask(int x,int y, int dx,int dy, int graphic, height = dy; cy = TILEY-dy; dy = TILEY; - redraw[redraw_x1 + x][redraw_y1 + y + 1] = TRUE; + MarkTileDirty(x, y + 1); } /* Element verläßt unten das Bild */ else if (dy > 0 && (y == BY2 || cut_mode==CUT_BELOW)) height -= dy; else if (dy) /* allg. Bewegung in y-Richtung */ - redraw[redraw_x1 + x][redraw_y1 + y + SIGN(dy)] = TRUE; + MarkTileDirty(x, y + SIGN(dy)); } if (graphic >= GFX_START_ROCKSSCREEN && graphic <= GFX_END_ROCKSSCREEN) @@ -978,9 +974,7 @@ void DrawGraphicShiftedThruMask(int x,int y, int dx,int dy, int graphic, } #endif - redraw_tiles++; - redraw[redraw_x1 + x][redraw_y1 + y] = TRUE; - redraw_mask |= REDRAW_TILES; + MarkTileDirty(x,y); } void ErdreichAnbroeckeln(int x, int y) @@ -1048,8 +1042,7 @@ void ErdreichAnbroeckeln(int x, int y) width,height, FX+x*TILEX+cx,FY+y*TILEY+cy); } - redraw_tiles++; - redraw[redraw_x1 + x][redraw_y1 + y] = TRUE; + MarkTileDirty(x,y); } else { @@ -1093,8 +1086,7 @@ void ErdreichAnbroeckeln(int x, int y) SY+(graphic / GFX_PER_LINE)*TILEY+cy, width,height, FX+xx*TILEX+cx,FY+yy*TILEY+cy); - redraw_tiles++; - redraw[redraw_x1 + xx][redraw_y1 + yy] = TRUE; + MarkTileDirty(xx,yy); } } } @@ -1216,10 +1208,6 @@ void DrawMiniElement(int x, int y, int element) graphic = el2gfx(element); DrawMiniGraphic(x,y,graphic); - - redraw_tiles++; - redraw[x/2][y/2]=TRUE; - redraw_mask|=REDRAW_TILES; } void DrawMiniElementOrWall(int x, int y, int scroll_x, int scroll_y)