X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftools.c;h=befacb27d300fe6b6cb142b4ef7af1621dad0a8a;hb=afcc2462852f4f44f50b303d60f02b3c15c15f28;hp=35adb43553ae3d245f63530e5efcc19541585585;hpb=e1e1f0e96140865d39f667f6af11ebec5e8c9cad;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 35adb435..befacb27 100644 --- a/src/tools.c +++ b/src/tools.c @@ -68,7 +68,7 @@ void BackToFront() if (redraw_mask & REDRAW_TILES && redraw_tiles > REDRAWTILES_THRESHOLD) redraw_mask |= REDRAW_FIELD; - if (redraw_mask & REDRAW_FIELD) + if (redraw_mask & REDRAW_FIELD || ScreenMovPos) redraw_mask &= ~REDRAW_TILES; if (!redraw_mask) @@ -104,9 +104,9 @@ void BackToFront() - printf("Full screen redraw (%d) (%ld)\n", - ScreenMovPos, - Counter()); +#if 0 + printf("FULL SCREEN REDRAW [%d]\n", ScreenMovPos); +#endif @@ -402,12 +402,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; } @@ -416,6 +416,9 @@ void DrawPlayerField() + + + if (draw_thru_mask) DrawGraphicShiftedThruMask(sx,sy,sxx,syy,graphic,CUT_NO_CUTTING); /* @@ -433,7 +436,7 @@ void DrawPlayerField() - if (PlayerPushing && PlayerMovPos) + if (PlayerPushing && PlayerGfxPos) { int nextJX = JX + (JX - lastJX); int nextJY = JY + (JY - lastJY); @@ -451,12 +454,19 @@ void DrawPlayerField() if (element == EL_FELSBROCKEN && sxx) { - int phase = PlayerMovPos / (TILEX/4); + int phase = (PlayerGfxPos / (TILEX/4)); if (PlayerMovDir == MV_LEFT) graphic += phase; else - graphic += phase+4; + graphic += (phase+4)%4; + + + /* + printf("----> (%d, %d, %d)\n", + PlayerGfxPos, phase, graphic); + */ + } DrawGraphicShifted(px,py, sxx,syy, graphic, CUT_NO_CUTTING); @@ -473,12 +483,12 @@ void DrawPlayerField() if (element == EL_DYNAMIT) { - if ((phase = (48-MovDelay[x][y])/6) > 6) + if ((phase = (96-MovDelay[x][y])/12) > 6) phase = 6; } else { - if ((phase = ((48-MovDelay[x][y])/3) % 8) > 3) + if ((phase = ((96-MovDelay[x][y])/6) % 8) > 3) phase = 7-phase; } @@ -519,6 +529,9 @@ static int getGraphicAnimationPhase(int frames, int delay, int mode) else phase = (FrameCounter % (delay * frames)) / delay; + if (mode == ANIM_REVERSE) + phase = -phase; + return(phase); } @@ -527,19 +540,6 @@ void DrawGraphicAnimation(int x, int y, int graphic, { int phase = getGraphicAnimationPhase(frames, delay, mode); -/* - int phase; - - if (mode == ANIM_OSCILLATE) - { - int max_anim_frames = frames*2 - 2; - phase = (FrameCounter % (delay * max_anim_frames)) / delay; - phase = (phase < frames ? phase : max_anim_frames - phase); - } - else - phase = (FrameCounter % (delay * frames)) / delay; -*/ - if (!(FrameCounter % delay) && IN_SCR_FIELD(SCROLLX(x),SCROLLY(y))) DrawGraphic(SCROLLX(x),SCROLLY(y), graphic + phase); }