X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=6980eb9aecf61ac491540be33597d16563365fb1;hb=b996c2fc5496c0fda9fb62fc324ca978998b7717;hp=ea7c8f9a744742b46fdf179a7d40ac3f5b719506;hpb=17c100ba4bca1cf8475905b6eeb502e581489c5c;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index ea7c8f9a..6980eb9a 100644 --- a/src/init.c +++ b/src/init.c @@ -97,6 +97,9 @@ void DrawInitAnim() int sync_frame = FrameCounter; int x, y; + /* prevent OS (Windows) from complaining about program not responding */ + CheckQuitEvent(); + if (game_status != GAME_MODE_LOADING) return; @@ -1714,10 +1717,10 @@ static void InitGraphicInfo() for (i = 0; i < num_images; i++) { - Bitmap *src_bitmap; + Bitmap *src_bitmap = graphic_info[i].bitmap; int src_x, src_y; int width, height; - int first_frame, last_frame; + int last_frame; int src_bitmap_width, src_bitmap_height; /* now check if no animation frames are outside of the loaded image */ @@ -1735,9 +1738,7 @@ static void InitGraphicInfo() /* check if first animation frame is inside specified bitmap */ - first_frame = 0; - getFixedGraphicSource(i, first_frame, &src_bitmap, &src_x, &src_y); - + /* do not use getGraphicSourceXY() here to get position of first frame; */ /* this avoids calculating wrong start position for out-of-bounds frame */ src_x = graphic_info[i].src_x; src_y = graphic_info[i].src_y; @@ -1767,12 +1768,15 @@ static void InitGraphicInfo() Error(ERR_INFO_LINE, "-"); graphic_info[i] = graphic_info[fallback_graphic]; + + /* if first frame out of bounds, do not check last frame anymore */ + continue; } /* check if last animation frame is inside specified bitmap */ last_frame = graphic_info[i].anim_frames - 1; - getFixedGraphicSource(i, last_frame, &src_bitmap, &src_x, &src_y); + getGraphicSourceXY(i, last_frame, &src_x, &src_y, FALSE); if (src_x < 0 || src_y < 0 || src_x + width > src_bitmap_width || @@ -4835,6 +4839,7 @@ static void InitGlobal() global.create_images_dir = NULL; global.frames_per_second = 0; + global.show_frames_per_second = FALSE; global.border_status = GAME_MODE_LOADING; global.anim_status = global.anim_status_next = GAME_MODE_LOADING; @@ -5054,6 +5059,9 @@ static void InitSetup() if (setup.options.verbose) options.verbose = TRUE; + + if (setup.debug.show_frames_per_second) + global.show_frames_per_second = TRUE; } static void InitGameInfo() @@ -6108,7 +6116,7 @@ void CloseAllAndExit(int exit_value) CloseVideoDisplay(); ClosePlatformDependentStuff(); - if (exit_value != 0) + if (exit_value != 0 && !options.execute_command) { /* fall back to default level set (current set may have caused an error) */ SaveLevelSetup_LastSeries_Deactivate();