X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=130111dc2c8bd10c45826580cf84af5be549c7ed;hb=113df1c4ad60b24a31ec6498f8cd3b2d4cd9dbfd;hp=04b3c424867d5ab640265bdf8cec15703b55abb0;hpb=c1dca83f9655759c36e3e5e9e95739d46c55c894;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 04b3c424..130111dc 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); @@ -127,11 +133,9 @@ void RedrawPlayfield(boolean force_redraw, int x, int y, int width, int height) if (game_status == GAME_MODE_PLAYING && level.game_engine_type == GAME_ENGINE_TYPE_EM) { -#if 1 - RedrawPlayfield_EM(force_redraw); -#else - BlitScreenToBitmap_EM(backbuffer); -#endif + /* currently there is no partial redraw -- always redraw whole playfield */ + + RedrawPlayfield_EM(TRUE); } else if (game_status == GAME_MODE_PLAYING && !game.envelope_active) { @@ -1825,6 +1829,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 +1870,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 +1923,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 +1971,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)) { @@ -5115,6 +5129,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; @@ -5122,9 +5137,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; @@ -5132,7 +5149,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; @@ -5147,6 +5175,7 @@ int getActivePlayers_EM() return num_players; } +#if 1 int getGameFrameDelay_EM(int native_em_game_frame_delay) { int game_frame_delay_value; @@ -5161,6 +5190,7 @@ int getGameFrameDelay_EM(int native_em_game_frame_delay) return game_frame_delay_value; } +#endif unsigned int InitRND(long seed) {