X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftools.c;h=eaea76ea0da5a3041978dac4ea08d4f24dbac870;hb=8384bb8b95c79c4c336d10de9a87a7287ecfd19c;hp=4ce303450a2ec08fe552271eef51a8758dcd22f2;hpb=a765d70dda7da4500e7005ffa5913e24cd32c0fa;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 4ce30345..eaea76ea 100644 --- a/src/tools.c +++ b/src/tools.c @@ -903,10 +903,6 @@ void DrawLevelFieldThruMask(int x, int y) DrawLevelElementExt(x, y, 0, 0, Feld[x][y], NO_CUTTING, USE_MASKING); } -#define TILE_GFX_ELEMENT(x, y) \ - (GfxElement[x][y] != EL_UNDEFINED && Feld[x][y] != EL_EXPLOSION ? \ - GfxElement[x][y] : Feld[x][y]) - static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame) { Bitmap *src_bitmap; @@ -1041,10 +1037,17 @@ void DrawLevelFieldCrumbledSand(int x, int y) return; #if 1 + /* if (Feld[x][y] == EL_ELEMENT_SNAPPING && GFX_CRUMBLED(GfxElement[x][y])) + */ + + if (Feld[x][y] == EL_ELEMENT_SNAPPING && + GfxElement[x][y] != EL_UNDEFINED && + GFX_CRUMBLED(GfxElement[x][y])) { DrawLevelFieldCrumbledSandDigging(x, y, GfxDir[x][y], GfxFrame[x][y]); + return; } #endif @@ -2020,7 +2023,9 @@ void DrawPlayer(struct PlayerInfo *player) if (player_is_moving && last_element == EL_EXPLOSION) { - int graphic = el_act2img(GfxElement[last_jx][last_jy], ACTION_EXPLODING); + int element = (GfxElement[last_jx][last_jy] != EL_UNDEFINED ? + GfxElement[last_jx][last_jy] : EL_EMPTY); + int graphic = el_act2img(element, ACTION_EXPLODING); int delay = (game.emulation == EMU_SUPAPLEX ? 3 : 2); int phase = ExplodePhase[last_jx][last_jy] - 1; int frame = getGraphicAnimationFrame(graphic, phase - delay); @@ -5114,19 +5119,9 @@ int font2baseimg(int font_nr) return font_info[font_nr].special_graphic[GFX_SPECIAL_ARG_DEFAULT]; } -int getGameFrameDelay_EM(int native_em_game_frame_delay) +void setCenteredPlayerNr_EM(int centered_player_nr) { - int game_frame_delay_value; - - game_frame_delay_value = - (tape.playing && tape.fast_forward ? FfwdFrameDelay : - GameFrameDelay == GAME_FRAME_DELAY ? native_em_game_frame_delay : - GameFrameDelay); - - if (tape.playing && tape.warp_forward && !tape.pausing) - game_frame_delay_value = 0; - - return game_frame_delay_value; + game.centered_player_nr = game.centered_player_nr_next = centered_player_nr; } int getCenteredPlayerNr_EM() @@ -5141,6 +5136,36 @@ int getCenteredPlayerNr_EM() return game.centered_player_nr; } +int getActivePlayers_EM() +{ + int num_players = 0; + int i; + + if (!tape.playing) + return -1; + + for (i = 0; i < MAX_PLAYERS; i++) + if (tape.player_participates[i]) + num_players++; + + return num_players; +} + +int getGameFrameDelay_EM(int native_em_game_frame_delay) +{ + int game_frame_delay_value; + + game_frame_delay_value = + (tape.playing && tape.fast_forward ? FfwdFrameDelay : + GameFrameDelay == GAME_FRAME_DELAY ? native_em_game_frame_delay : + GameFrameDelay); + + if (tape.playing && tape.warp_forward && !tape.pausing) + game_frame_delay_value = 0; + + return game_frame_delay_value; +} + unsigned int InitRND(long seed) { if (level.game_engine_type == GAME_ENGINE_TYPE_EM)