X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=3bdf371f09e197e831f5e95ad620ddb7c7f3e937;hb=1fcb3ddbb8404effdcfa5ebbd53d3ff5009260f6;hp=eaea76ea0da5a3041978dac4ea08d4f24dbac870;hpb=3e71d06e9a97be7bb8c50c76717d08e5c46e0cc8;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index eaea76ea..3bdf371f 100644 --- a/src/tools.c +++ b/src/tools.c @@ -63,6 +63,12 @@ void DumpTile(int x, int y) int sx = SCREENX(x); int sy = SCREENY(y); + if (level.game_engine_type == GAME_ENGINE_TYPE_EM) + { + x--; + y--; + } + printf_line("-", 79); printf("Field Info: SCREEN(%d, %d), LEVEL(%d, %d)\n", sx, sy, x, y); printf_line("-", 79); @@ -1825,6 +1831,7 @@ void DrawPlayer(struct PlayerInfo *player) int next_jx = jx + dx; int next_jy = jy + dy; boolean player_is_moving = (player->MovPos ? TRUE : FALSE); + boolean player_is_opaque = FALSE; int sx = SCREENX(jx), sy = SCREENY(jy); int sxx = 0, syy = 0; int element = Feld[jx][jy], last_element = Feld[last_jx][last_jy]; @@ -1865,6 +1872,11 @@ void DrawPlayer(struct PlayerInfo *player) player->is_dropping ? ACTION_DROPPING : player->is_waiting ? player->action_waiting : ACTION_DEFAULT); +#if 1 + if (player->is_waiting) + move_dir = player->dir_waiting; +#endif + InitPlayerGfxAnimation(player, action, move_dir); /* ----------------------------------------------------------------------- */ @@ -1913,16 +1925,17 @@ void DrawPlayer(struct PlayerInfo *player) { if (player_is_moving && GfxElement[jx][jy] != EL_UNDEFINED) { - if (GFX_CRUMBLED(GfxElement[jx][jy])) + int old_element = GfxElement[jx][jy]; + int old_graphic = el_act_dir2img(old_element, action, move_dir); + int frame = getGraphicAnimationFrame(old_graphic, player->StepFrame); + + if (GFX_CRUMBLED(old_element)) DrawLevelFieldCrumbledSandDigging(jx, jy, move_dir, player->StepFrame); else - { - int old_element = GfxElement[jx][jy]; - int old_graphic = el_act_dir2img(old_element, action, move_dir); - int frame = getGraphicAnimationFrame(old_graphic, player->StepFrame); - DrawGraphic(sx, sy, old_graphic, frame); - } + + if (graphic_info[old_graphic].anim_mode & ANIM_OPAQUE_PLAYER) + player_is_opaque = TRUE; } else { @@ -1960,7 +1973,10 @@ void DrawPlayer(struct PlayerInfo *player) if (!setup.soft_scrolling && ScreenMovPos) sxx = syy = 0; - DrawGraphicShiftedThruMask(sx, sy, sxx, syy, graphic, frame, NO_CUTTING); + if (player_is_opaque) + DrawGraphicShifted(sx, sy, sxx, syy, graphic, frame,NO_CUTTING,NO_MASKING); + else + DrawGraphicShiftedThruMask(sx, sy, sxx, syy, graphic, frame, NO_CUTTING); if (SHIELD_ON(player)) { @@ -3474,19 +3490,19 @@ em_object_mapping_list[] = }, { Xeater_n, TRUE, FALSE, - EL_YAMYAM, -1, -1 + EL_YAMYAM_UP, -1, -1 }, { - Xeater_e, FALSE, FALSE, - EL_YAMYAM, -1, -1 + Xeater_e, TRUE, FALSE, + EL_YAMYAM_RIGHT, -1, -1 }, { - Xeater_w, FALSE, FALSE, - EL_YAMYAM, -1, -1 + Xeater_w, TRUE, FALSE, + EL_YAMYAM_LEFT, -1, -1 }, { - Xeater_s, FALSE, FALSE, - EL_YAMYAM, -1, -1 + Xeater_s, TRUE, FALSE, + EL_YAMYAM_DOWN, -1, -1 }, { Yeater_n, FALSE, FALSE, @@ -4596,10 +4612,6 @@ em_object_mapping_list[] = Xalpha_copyr, TRUE, FALSE, EL_CHAR('©'), -1, -1 }, - { - Xalpha_copyr, TRUE, FALSE, - EL_CHAR('©'), -1, -1 - }, { Xboom_bug, FALSE, FALSE, @@ -5119,6 +5131,7 @@ int font2baseimg(int font_nr) return font_info[font_nr].special_graphic[GFX_SPECIAL_ARG_DEFAULT]; } +#if 0 void setCenteredPlayerNr_EM(int centered_player_nr) { game.centered_player_nr = game.centered_player_nr_next = centered_player_nr; @@ -5126,9 +5139,11 @@ void setCenteredPlayerNr_EM(int centered_player_nr) int getCenteredPlayerNr_EM() { +#if 0 if (game.centered_player_nr_next >= 0 && !native_em_level.ply[game.centered_player_nr_next]->alive) game.centered_player_nr_next = game.centered_player_nr; +#endif if (game.centered_player_nr != game.centered_player_nr_next) game.centered_player_nr = game.centered_player_nr_next; @@ -5136,7 +5151,18 @@ int getCenteredPlayerNr_EM() return game.centered_player_nr; } -int getActivePlayers_EM() +void setSetCenteredPlayer_EM(boolean set_centered_player) +{ + game.set_centered_player = set_centered_player; +} + +boolean getSetCenteredPlayer_EM() +{ + return game.set_centered_player; +} +#endif + +int getNumActivePlayers_EM() { int num_players = 0; int i; @@ -5151,6 +5177,7 @@ int getActivePlayers_EM() return num_players; } +#if 1 int getGameFrameDelay_EM(int native_em_game_frame_delay) { int game_frame_delay_value; @@ -5165,6 +5192,7 @@ int getGameFrameDelay_EM(int native_em_game_frame_delay) return game_frame_delay_value; } +#endif unsigned int InitRND(long seed) {