X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=8bf4818494aafa34495fd81a1036fb7b778b3037;hb=c5321d9d36d0a74062651d0352fbbaccbe125eca;hp=eaf9ee12e8bb92dae1e76654a6dbbc120132c40b;hpb=5a2237add0a19d1559c0fe20c3f27651a71adf6c;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index eaf9ee12..8bf48184 100644 --- a/src/game.c +++ b/src/game.c @@ -1124,6 +1124,14 @@ void DrawGameDoorValues() DrawGameValue_Time(TimeLeft); } +void DrawGameDoorValues_EM(int emeralds, int dynamite, int score, int time) +{ + DrawGameValue_Emeralds(emeralds); + DrawGameValue_Dynamite(dynamite); + DrawGameValue_Score(score); + DrawGameValue_Time(time); +} + static void resolve_group_element(int group_element, int recursion_depth) { static int group_nr; @@ -2052,18 +2060,27 @@ void InitGame() CloseDoor(DOOR_CLOSE_1); - DrawLevel(); - DrawAllPlayers(); + /* !!! FIX THIS (START) !!! */ + if (level.game_engine_type == GAME_ENGINE_TYPE_EM) + { + InitGameEngine_EM(); + } + else + { + DrawLevel(); + DrawAllPlayers(); - /* after drawing the level, correct some elements */ - if (game.timegate_time_left == 0) - CloseAllOpenTimegates(); + /* after drawing the level, correct some elements */ + if (game.timegate_time_left == 0) + CloseAllOpenTimegates(); - if (setup.soft_scrolling) - BlitBitmap(fieldbuffer, backbuffer, FX, FY, SXSIZE, SYSIZE, SX, SY); + if (setup.soft_scrolling) + BlitBitmap(fieldbuffer, backbuffer, FX, FY, SXSIZE, SYSIZE, SX, SY); - redraw_mask |= REDRAW_FROM_BACKBUFFER; - FadeToFront(); + redraw_mask |= REDRAW_FROM_BACKBUFFER; + FadeToFront(); + } + /* !!! FIX THIS (END) !!! */ /* copy default game door content to main double buffer */ BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, @@ -8512,8 +8529,8 @@ void AdvanceFrameAndPlayerCounters(int player_nr) void GameActions() { - static unsigned long action_delay = 0; - unsigned long action_delay_value; + static unsigned long game_frame_delay = 0; + unsigned long game_frame_delay_value; int magic_wall_x = 0, magic_wall_y = 0; int i, x, y, element, graphic; byte *recorded_player_action; @@ -8525,15 +8542,15 @@ void GameActions() if (game_status != GAME_MODE_PLAYING) return; - action_delay_value = + game_frame_delay_value = (tape.playing && tape.fast_forward ? FfwdFrameDelay : GameFrameDelay); if (tape.playing && tape.warp_forward && !tape.pausing) - action_delay_value = 0; + game_frame_delay_value = 0; /* ---------- main game synchronization point ---------- */ - WaitUntilDelayReached(&action_delay, action_delay_value); + WaitUntilDelayReached(&game_frame_delay, game_frame_delay_value); if (network_playing && !network_player_action_received) { @@ -8572,6 +8589,7 @@ void GameActions() recorded_player_action = (tape.playing ? TapePlayAction() : NULL); #if 1 + /* !!! CHECK THIS (tape.pausing is always FALSE here!) !!! */ if (recorded_player_action == NULL && tape.pausing) return; #endif