X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=972e5a24eab5b0e4ea6551fadf86276a4cc627fd;hb=e86e420f8dfeb7cacc69d9d5c32b5ace519855f3;hp=9f6526a3a562416d90f23745436e1592aac0ba81;hpb=f2ddf39ad776c01f9b8a57818fe3ea9777649778;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 9f6526a3..972e5a24 100644 --- a/src/tools.c +++ b/src/tools.c @@ -17,7 +17,7 @@ #include "init.h" #include "game.h" #include "events.h" -#include "cartoons.h" +#include "anim.h" #include "network.h" #include "tape.h" #include "screens.h" @@ -174,9 +174,6 @@ static int el_act2crm(int, int); static struct GadgetInfo *tool_gadget[NUM_TOOL_BUTTONS]; static int request_gadget_id = -1; -static unsigned int sync_frame_delay = 0; -static unsigned int sync_frame_delay_value = GAME_FRAME_DELAY; - static char *print_if_not_empty(int element) { static char *s = NULL; @@ -590,6 +587,17 @@ void BackToFront() #endif } +void BackToFront_WithFrameDelay(unsigned int frame_delay_value) +{ + unsigned int frame_delay_value_old = GetVideoFrameDelay(); + + SetVideoFrameDelay(frame_delay_value); + + BackToFront(); + + SetVideoFrameDelay(frame_delay_value_old); +} + static void FadeCrossSaveBackbuffer() { BlitBitmap(backbuffer, bitmap_db_cross, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0); @@ -2592,7 +2600,6 @@ void AnimateEnvelopeRequest(int anim_mode, int action) redraw_mask |= REDRAW_FIELD; - DoAnimation(); BackToFront(); SkipUntilDelayReached(&anim_delay, anim_delay_value, &i, last_frame); @@ -2639,9 +2646,6 @@ void ShowEnvelopeRequest(char *text, unsigned int req_state, int action) } DrawEnvelopeRequest(text); - - if (game_status != GAME_MODE_MAIN) - InitAnimation(); } game.envelope_active = TRUE; /* needed for RedrawPlayfield() events */ @@ -2669,20 +2673,12 @@ void ShowEnvelopeRequest(char *text, unsigned int req_state, int action) game.envelope_active = FALSE; if (action == ACTION_CLOSING) - { - if (game_status != GAME_MODE_MAIN) - StopAnimation(); - BlitBitmap(bitmap_db_store, backbuffer, 0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0); - } // SetDrawBackgroundMask(last_draw_background_mask); redraw_mask |= REDRAW_FIELD; - if (game_status == GAME_MODE_MAIN) - DoAnimation(); - BackToFront(); if (action == ACTION_CLOSING && @@ -3545,9 +3541,7 @@ void WaitForEventToContinue() still_wait = FALSE; } - DoAnimation(); - - WaitUntilDelayReached(&sync_frame_delay, sync_frame_delay_value); + BackToFront(); } } @@ -3715,14 +3709,8 @@ static int RequestHandleEvents(unsigned int req_state) BlitBitmap(drawto, bitmap_db_cross, sx, sy, width, height, sx, sy); } } - else - { - DoAnimation(); - } BackToFront(); - - WaitUntilDelayReached(&sync_frame_delay, sync_frame_delay_value); } return result; @@ -3866,17 +3854,11 @@ static boolean RequestDoor(char *text, unsigned int req_state) return FALSE; } - if (game_status != GAME_MODE_MAIN) - InitAnimation(); - SetDrawBackgroundMask(REDRAW_FIELD | REDRAW_DOOR_1); // ---------- handle request buttons ---------- result = RequestHandleEvents(req_state); - if (game_status != GAME_MODE_MAIN) - StopAnimation(); - UnmapToolButtons(); if (!(req_state & REQ_STAY_OPEN)) @@ -3971,9 +3953,6 @@ static boolean RequestEnvelope(char *text, unsigned int req_state) // ---------- handle request buttons ---------- result = RequestHandleEvents(req_state); - if (game_status != GAME_MODE_MAIN) - StopAnimation(); - UnmapToolButtons(); ShowEnvelopeRequest(text, req_state, ACTION_CLOSING); @@ -4567,9 +4546,6 @@ unsigned int MoveDoor(unsigned int door_state) { BackToFront(); - if (game_status == GAME_MODE_MAIN) - DoAnimation(); - SkipUntilDelayReached(&door_delay, door_delay_value, &k, last_frame); current_move_delay += max_step_delay; @@ -8363,7 +8339,7 @@ void ChangeViewportPropertiesIfNeeded() int new_scr_fieldy_buffers = new_sysize / new_tilesize_var; boolean init_gfx_buffers = FALSE; boolean init_video_buffer = FALSE; - boolean init_gadgets_and_toons = FALSE; + boolean init_gadgets_and_anims = FALSE; boolean init_em_graphics = FALSE; if (new_win_xsize != WIN_XSIZE || @@ -8374,7 +8350,7 @@ void ChangeViewportPropertiesIfNeeded() init_video_buffer = TRUE; init_gfx_buffers = TRUE; - init_gadgets_and_toons = TRUE; + init_gadgets_and_anims = TRUE; // printf("::: video: init_video_buffer, init_gfx_buffers\n"); } @@ -8489,10 +8465,10 @@ void ChangeViewportPropertiesIfNeeded() TILESIZE_VAR = new_tilesize_var; init_gfx_buffers = TRUE; - init_gadgets_and_toons = TRUE; + init_gadgets_and_anims = TRUE; // printf("::: viewports: init_gfx_buffers\n"); - // printf("::: viewports: init_gadgets_and_toons\n"); + // printf("::: viewports: init_gadgets_and_anims\n"); } if (init_gfx_buffers) @@ -8519,12 +8495,11 @@ void ChangeViewportPropertiesIfNeeded() InitImageTextures(); } - if (init_gadgets_and_toons) + if (init_gadgets_and_anims) { - // printf("::: init_gadgets_and_toons\n"); + // printf("::: init_gadgets_and_anims\n"); InitGadgets(); - InitToons(); InitGlobalAnimations(); }