int graphic;
int frame = 0;
boolean player_is_moving = (last_jx != jx || last_jy != jy ? TRUE : FALSE);
+ int current_action = ACTION_DEFAULT;
if (!player->active || !IN_SCR_FIELD(SCREENX(last_jx), SCREENY(last_jy)))
return;
if (element == EL_EXPLOSION)
return;
+ current_action = (player->Pushing ? ACTION_PUSHING :
+ player->is_digging ? ACTION_DIGGING :
+ player->is_collecting ? ACTION_COLLECTING :
+ player->is_moving ? ACTION_MOVING :
+ player->snapped ? ACTION_SNAPPING : ACTION_DEFAULT);
+
+ InitPlayerGfxAnimation(player, current_action, player->MovDir);
+
/* ----------------------------------------------------------------------- */
/* draw things in the field the player is leaving, if needed */
/* ----------------------------------------------------------------------- */
int old_element = GfxElement[jx][jy];
int old_graphic =
el_act_dir2img(old_element, ACTION_DIGGING, player->MovDir);
- int frame = getGraphicAnimationFrame(old_graphic, player->Frame);
+ int frame = getGraphicAnimationFrame(old_graphic, player->StepFrame);
+
#if 0
Bitmap *src_bitmap;
int src_x, src_y;
width, height, FX + sx * TILEX + cx, FY + sy * TILEY + cy);
#else
#if 0
- printf("::: %d, %d, %d, %d => %d, %d [%d]\n",
+ printf("::: %d, %d, %d, %d => %d, %d [%d, %d, %d]\n",
old_element, ACTION_DIGGING, player->MovDir, player->Frame,
old_graphic, frame,
- player->GfxPos);
+ player->MovPos, player->GfxPos, player->StepFrame);
#endif
DrawGraphic(sx, sy, old_graphic, frame);
/* draw player himself */
/* ----------------------------------------------------------------------- */
- player->GfxAction = (player->Pushing ? ACTION_PUSHING :
- player->is_digging ? ACTION_DIGGING :
- player->is_moving ? ACTION_MOVING :
- player->snapped ? ACTION_SNAPPING : ACTION_DEFAULT);
-
if (player->use_murphy_graphic)
{
static int last_horizontal_dir = MV_LEFT;
static int door1 = DOOR_OPEN_1;
static int door2 = DOOR_CLOSE_2;
static unsigned long door_delay = 0;
- int x, start, stepsize = 2;
- unsigned long door_delay_value = stepsize * 5;
+ int x, start, stepsize = global.door_step_offset;
+ unsigned long door_delay_value = global.door_step_delay;
if (door_state == DOOR_GET_STATE)
return(door1 | door2);
stepsize = 20;
door_delay_value = 0;
- StopSound(SND_MENU_DOOR_OPENING);
- StopSound(SND_MENU_DOOR_CLOSING);
+ StopSound(SND_DOOR_OPENING);
+ StopSound(SND_DOOR_CLOSING);
}
if (global.autoplay_leveldir)
{
/* opening door sound has priority over simultaneously closing door */
if (door_state & (DOOR_OPEN_1 | DOOR_OPEN_2))
- PlaySoundStereo(SND_MENU_DOOR_OPENING, SOUND_MAX_RIGHT);
+ PlaySoundStereo(SND_DOOR_OPENING, SOUND_MIDDLE);
else if (door_state & (DOOR_CLOSE_1 | DOOR_CLOSE_2))
- PlaySoundStereo(SND_MENU_DOOR_CLOSING, SOUND_MAX_RIGHT);
+ PlaySoundStereo(SND_DOOR_CLOSING, SOUND_MIDDLE);
}
start = ((door_state & DOOR_NO_DELAY) ? DXSIZE : 0);
if (setup.quick_doors)
{
- StopSound(SND_MENU_DOOR_OPENING);
- StopSound(SND_MENU_DOOR_CLOSING);
+ StopSound(SND_DOOR_OPENING);
+ StopSound(SND_DOOR_CLOSING);
}
if (door_state & DOOR_ACTION_1)