X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftools.c;h=744065cd5923675762f020124912bc5a78a6dd8e;hb=5f4853f8672712c12c9063b1ab5ec3674f09218e;hp=a20e117759a785dd77bd709c53c3a49b6e998692;hpb=2bcba5d4d363ba2f58c9d3f22aba6a455522f499;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index a20e1177..744065cd 100644 --- a/src/tools.c +++ b/src/tools.c @@ -34,6 +34,7 @@ /* forward declaration for internal use */ static void UnmapToolButtons(); static void HandleToolButtons(struct GadgetInfo *); +static int el_act_dir2crm(int, int, int); static struct GadgetInfo *tool_gadget[NUM_TOOL_BUTTONS]; static int request_gadget_id = -1; @@ -503,6 +504,9 @@ inline void DrawLevelGraphicAnimationIfNeeded(int x, int y, int graphic) return; DrawGraphicAnimation(sx, sy, graphic); + + if (CAN_BE_CRUMBLED(Feld[x][y])) + DrawLevelFieldCrumbledSand(x, y); } void DrawLevelElementAnimationIfNeeded(int x, int y, int element) @@ -519,6 +523,9 @@ void DrawLevelElementAnimationIfNeeded(int x, int y, int element) return; DrawGraphicAnimation(sx, sy, graphic); + + if (CAN_BE_CRUMBLED(element)) + DrawLevelFieldCrumbledSand(x, y); } void DrawAllPlayers() @@ -658,8 +665,13 @@ void DrawPlayer(struct PlayerInfo *player) { if (player_is_moving && GfxElement[jx][jy] != EL_UNDEFINED) { +#if 1 + if (CAN_BE_CRUMBLED(GfxElement[jx][jy])) + DrawLevelFieldCrumbledSandDigging(jx, jy, move_dir, player->StepFrame); +#else if (GfxElement[jx][jy] == EL_SAND) DrawLevelFieldCrumbledSandDigging(jx, jy, move_dir, player->StepFrame); +#endif else { int old_element = GfxElement[jx][jy]; @@ -1298,8 +1310,13 @@ void DrawLevelFieldCrumbledSand(int x, int y) void DrawLevelFieldCrumbledSandDigging(int x, int y, int direction, int step_frame) { +#if 1 + int graphic1 = el_act_dir2img(GfxElement[x][y], ACTION_DIGGING, direction); + int graphic2 = el_act_dir2crm(GfxElement[x][y], ACTION_DIGGING, direction); +#else int graphic1 = el_act_dir2img(EL_SAND, ACTION_DIGGING, direction); int graphic2 = el_act_dir2img(EL_SAND_CRUMBLED, ACTION_DIGGING, direction); +#endif int frame1 = getGraphicAnimationFrame(graphic1, step_frame); int frame2 = getGraphicAnimationFrame(graphic2, step_frame); int sx = SCREENX(x), sy = SCREENY(y); @@ -2446,6 +2463,14 @@ int el_act_dir2img(int element, int action, int direction) return element_info[element].direction_graphic[action][direction]; } +static int el_act_dir2crm(int element, int action, int direction) +{ + element = GFX_ELEMENT(element); + direction = MV_DIR_BIT(direction); + + return element_info[element].direction_crumbled[action][direction]; +} + int el_act2img(int element, int action) { element = GFX_ELEMENT(element);