X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Finit.c;h=169d0582f3a359f9482bd15107c1e850fd498b00;hp=4314580ed26c259266d131275d902e1bb0295a4d;hb=5c5685a92a0ca8060018c4d035e6b37fea7e0f5a;hpb=3f878a4e9c28dbb09ab2ed13e972aa2f77ef236e diff --git a/src/init.c b/src/init.c index 4314580e..169d0582 100644 --- a/src/init.c +++ b/src/init.c @@ -219,13 +219,26 @@ void InitElementSmallImages() print_timestamp_done("InitElementSmallImages"); } +inline static void InitScaledImagesScaledUp(int graphic) +{ + struct GraphicInfo *g = &graphic_info[graphic]; + + ScaleImage(graphic, g->scale_up_factor); +} + void InitScaledImages() { + struct PropertyMapping *property_mapping = getImageListPropertyMapping(); + int num_property_mappings = getImageListPropertyMappingSize(); int i; /* scale normal images from static configuration, if not already scaled */ for (i = 0; i < NUM_IMAGE_FILES; i++) - ScaleImage(i, graphic_info[i].scale_up_factor); + InitScaledImagesScaledUp(i); + + /* scale images from dynamic configuration, if not already scaled */ + for (i = 0; i < num_property_mappings; i++) + InitScaledImagesScaledUp(property_mapping[i].artwork_index); } void InitBitmapPointers() @@ -937,14 +950,12 @@ void InitElementGraphicInfo() (move_dir == MV_BIT_UP && !front_is_left_or_upper) || (move_dir == MV_BIT_RIGHT && front_is_left_or_upper) || (move_dir == MV_BIT_DOWN && front_is_left_or_upper))); - Bitmap *dummy; /* swap frontside and backside graphic tile coordinates, if needed */ if (swap_movement_tiles_always || swap_movement_tiles_autodetected) { /* get current (wrong) backside tile coordinates */ - getFixedGraphicSourceExt(graphic, 0, &dummy, - &src_x_back, &src_y_back, TRUE); + getGraphicSourceXY(graphic, 0, &src_x_back, &src_y_back, TRUE); /* set frontside tile coordinates to backside tile coordinates */ g->src_x = src_x_back; @@ -1346,13 +1357,13 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, if (parameter[GFX_ARG_TILE_SIZE] != ARG_UNDEFINED_VALUE) { - anim_frames_per_row = src_image_width / g->tile_size; - anim_frames_per_col = src_image_height / g->tile_size; + anim_frames_per_row = MAX(1, src_image_width / g->tile_size); + anim_frames_per_col = MAX(1, src_image_height / g->tile_size); } else { - anim_frames_per_row = src_image_width / g->width; - anim_frames_per_col = src_image_height / g->height; + anim_frames_per_row = MAX(1, src_image_width / g->width); + anim_frames_per_col = MAX(1, src_image_height / g->height); } g->src_image_width = src_image_width; @@ -1708,6 +1719,7 @@ static void InitGraphicInfo() Error(ERR_INFO, "- config file: '%s'", getImageConfigFilename()); Error(ERR_INFO, "- config token: '%s'", getTokenFromImageID(i)); Error(ERR_INFO, "- image file: '%s'", src_bitmap->source_filename); + Error(ERR_INFO, "- frame size: %d, %d", width, height); Error(ERR_INFO, "error: first animation frame out of bounds (%d, %d) [%d, %d]", src_x, src_y, src_bitmap_width, src_bitmap_height); @@ -1736,10 +1748,10 @@ static void InitGraphicInfo() Error(ERR_INFO, "- config file: '%s'", getImageConfigFilename()); Error(ERR_INFO, "- config token: '%s'", getTokenFromImageID(i)); Error(ERR_INFO, "- image file: '%s'", src_bitmap->source_filename); + Error(ERR_INFO, "- frame size: %d, %d", width, height); Error(ERR_INFO, "error: last animation frame (%d) out of bounds (%d, %d) [%d, %d]", last_frame, src_x, src_y, src_bitmap_width, src_bitmap_height); - Error(ERR_INFO, "::: %d, %d", width, height); Error(ERR_INFO, "custom graphic rejected for this element/action"); if (i == fallback_graphic) @@ -5457,6 +5469,9 @@ static void InitImages() ReinitializeGraphics(); print_timestamp_time("ReinitializeGraphics"); + LoadMenuDesignSettings_AfterGraphics(); + print_timestamp_time("LoadMenuDesignSettings_AfterGraphics"); + UPDATE_BUSY_STATE(); print_timestamp_done("InitImages"); @@ -5889,6 +5904,8 @@ void OpenAll() print_timestamp_time("[init setup/config stuff (1)]"); + InitScoresInfo(); + if (options.execute_command) Execute_Command(options.execute_command); @@ -5924,7 +5941,7 @@ void OpenAll() InitVideoDisplay(); InitVideoBuffer(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH, setup.fullscreen); - InitEventFilter(FilterEvents); + InitOverlayInfo(); print_timestamp_time("[init video stuff]");