X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=867ee3c0f394bb2162a9368f474773d615ac1c5a;hb=aacdd16335c68a011fab047272b828792a2a884e;hp=f2f3cdd03859b746a9b97f774d6854db2c8d7a0c;hpb=4c2027809249e8cfb5d81ef0ab5835f40c3a3835;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index f2f3cdd0..867ee3c0 100644 --- a/src/tools.c +++ b/src/tools.c @@ -707,7 +707,12 @@ void DrawPlayer(struct PlayerInfo *player) NO_CUTTING); else { +#if 0 + int element = Feld[jx][jy]; +#else int element = Feld[next_jx][next_jy]; +#endif + int graphic = el2img(element); int frame = 0; @@ -739,10 +744,14 @@ void DrawPlayer(struct PlayerInfo *player) if (player_is_moving && last_element == EL_EXPLOSION) { +#if 1 + int graphic = el_act2img(GfxElement[last_jx][last_jy], ACTION_EXPLODING); +#else int stored = Store[last_jx][last_jy]; int graphic = (game.emulation != EMU_SUPAPLEX ? IMG_EXPLOSION : stored == EL_SP_INFOTRON ? IMG_SP_EXPLOSION_INFOTRON : IMG_SP_EXPLOSION); +#endif int delay = (game.emulation == EMU_SUPAPLEX ? 3 : 2); int phase = ExplodePhase[last_jx][last_jy] - 1; int frame = getGraphicAnimationFrame(graphic, phase - delay); @@ -1191,7 +1200,7 @@ static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame) element = (GfxElement[x][y] != EL_UNDEFINED ? GfxElement[x][y] : Feld[x][y]); /* crumble field itself */ - if (CAN_BE_CRUMBLED(element)) + if (CAN_BE_CRUMBLED(element) && !IS_MOVING(x, y)) { if (!IN_SCR_FIELD(sx, sy)) return; @@ -1206,7 +1215,7 @@ static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame) element = (IN_LEV_FIELD(xx, yy) ? Feld[xx][yy] : EL_STEELWALL); /* check if neighbour field is of same type */ - if (CAN_BE_CRUMBLED(element)) + if (CAN_BE_CRUMBLED(element) && !IS_MOVING(xx, yy)) continue; if (i == 1 || i == 2) @@ -1243,7 +1252,8 @@ static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame) if (!IN_LEV_FIELD(xx, yy) || !IN_SCR_FIELD(sxx, syy) || - !CAN_BE_CRUMBLED(Feld[xx][yy])) + !CAN_BE_CRUMBLED(Feld[xx][yy]) || + IS_MOVING(xx, yy)) continue; if (i == 1 || i == 2)