X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=e96344eb51caf8da240895cc395e18bc1b096e16;hb=d811a094287f78f4cf22aa53c76ed228f81322a7;hp=aae262f58332f4479498f562389b9ec9f6a7b9e4;hpb=7f44b998d7a52222429d0794d3ec1713f37a7f47;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index aae262f5..e96344eb 100644 --- a/src/init.c +++ b/src/init.c @@ -1337,19 +1337,27 @@ static int get_graphic_parameter_value(char *value_raw, char *suffix, int type) return -1; } -static int get_scaled_graphic_width(int graphic) +static int get_scaled_graphic_width(Bitmap *src_bitmap, int graphic) { int original_width = getOriginalImageWidthFromImageID(graphic); int scale_up_factor = graphic_info[graphic].scale_up_factor; + // only happens when loaded outside artwork system (like "global.busy") + if (graphic_info == image_initial && src_bitmap) + original_width = src_bitmap->width; + return original_width * scale_up_factor; } -static int get_scaled_graphic_height(int graphic) +static int get_scaled_graphic_height(Bitmap *src_bitmap, int graphic) { int original_height = getOriginalImageHeightFromImageID(graphic); int scale_up_factor = graphic_info[graphic].scale_up_factor; + // only happens when loaded outside artwork system (like "global.busy") + if (graphic_info == image_initial && src_bitmap) + original_height = src_bitmap->height; + return original_height * scale_up_factor; } @@ -1433,8 +1441,8 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, if (g->use_image_size) { // set new default bitmap size (with scaling, but without small images) - g->width = get_scaled_graphic_width(graphic); - g->height = get_scaled_graphic_height(graphic); + g->width = get_scaled_graphic_width(src_bitmap, graphic); + g->height = get_scaled_graphic_height(src_bitmap, graphic); } // optional width and height of each animation frame @@ -1481,15 +1489,8 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, if (src_bitmap) { // get final bitmap size (with scaling, but without small images) - int src_image_width = get_scaled_graphic_width(graphic); - int src_image_height = get_scaled_graphic_height(graphic); - - if (src_image_width == 0 || src_image_height == 0) - { - // only happens when loaded outside artwork system (like "global.busy") - src_image_width = src_bitmap->width; - src_image_height = src_bitmap->height; - } + int src_image_width = get_scaled_graphic_width(src_bitmap, graphic); + int src_image_height = get_scaled_graphic_height(src_bitmap, graphic); if (parameter[GFX_ARG_TILE_SIZE] != ARG_UNDEFINED_VALUE) { @@ -5713,6 +5714,7 @@ void InitGfxBuffers(void) InitGfxBuffers_EM(); InitGfxBuffers_SP(); + InitGfxBuffers_MM(); } static void InitGfx(void) @@ -5791,10 +5793,6 @@ static void InitGfx(void) InitFontGraphicInfo(); - DrawProgramInfo(); - - DrawInitTextHead("Loading graphics"); - InitMenuDesignSettings_Static(); // initialize settings for initial images with default values @@ -5892,6 +5890,9 @@ static void InitGfx(void) checked_free(filename_image_initial[i]); } + for (i = 0; i < NUM_INITIAL_IMAGES; i++) + image_initial[i].use_image_size = TRUE; + graphic_info = image_initial; // graphic == 0 => image_initial for (i = 0; i < NUM_INITIAL_IMAGES; i++) @@ -5910,10 +5911,13 @@ static void InitGfx(void) ClearRectangleOnBackground(window, 0, 0, WIN_XSIZE, WIN_YSIZE); + DrawProgramInfo(); + InitGfxDrawBusyAnimFunction(DrawInitAnim); InitGfxDrawGlobalAnimFunction(DrawGlobalAnimations); InitGfxDrawGlobalBorderFunction(DrawMaskedBorderToTarget); InitGfxDrawTileCursorFunction(DrawTileCursor); + InitGfxDrawEnvelopeRequestFunction(DrawEnvelopeRequestToScreen); gfx.fade_border_source_status = global.border_status; gfx.fade_border_target_status = global.border_status;