X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Ftools.c;h=eaea76ea0da5a3041978dac4ea08d4f24dbac870;hb=8384bb8b95c79c4c336d10de9a87a7287ecfd19c;hp=712be2395879d8483061304dec048c086b0945b3;hpb=89ce36da9108b04faf263cd2624db2a2d9fc8f27;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 712be239..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,6 +5119,38 @@ int font2baseimg(int font_nr) return font_info[font_nr].special_graphic[GFX_SPECIAL_ARG_DEFAULT]; } +void setCenteredPlayerNr_EM(int centered_player_nr) +{ + game.centered_player_nr = game.centered_player_nr_next = centered_player_nr; +} + +int getCenteredPlayerNr_EM() +{ + 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; + + if (game.centered_player_nr != game.centered_player_nr_next) + game.centered_player_nr = game.centered_player_nr_next; + + 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; @@ -5129,17 +5166,6 @@ int getGameFrameDelay_EM(int native_em_game_frame_delay) return game_frame_delay_value; } -int getCenteredPlayer_EM() -{ - if (!native_em_level.ply[game.centered_to_player_next]->alive) - game.centered_to_player_next = game.centered_to_player; - - if (game.centered_to_player != game.centered_to_player_next) - game.centered_to_player = game.centered_to_player_next; - - return game.centered_to_player; -} - unsigned int InitRND(long seed) { if (level.game_engine_type == GAME_ENGINE_TYPE_EM)