struct GraphicInfo *g = &graphic_info[graphic];
struct FileInfo *image = getImageListEntryFromImageID(graphic);
char **parameter_raw = image->parameter;
- int p = GFX_ARG_DRAW_MASKED;
- int draw_masked = get_graphic_parameter_value(parameter_raw[p],
- image_config_suffix[p].token,
- image_config_suffix[p].type);
+ int p1 = GFX_ARG_DRAW_MASKED;
+ int p2 = GFX_ARG_DRAW_ORDER;
+ int draw_masked = get_graphic_parameter_value(parameter_raw[p1],
+ image_config_suffix[p1].token,
+ image_config_suffix[p1].type);
+ int draw_order = get_graphic_parameter_value(parameter_raw[p2],
+ image_config_suffix[p2].token,
+ image_config_suffix[p2].type);
// if ".draw_masked" parameter is undefined, use default value "TRUE"
if (draw_masked == ARG_UNDEFINED_VALUE)
g->draw_masked = TRUE;
+
+ // if ".draw_order" parameter is undefined, set back to "undefined"
+ // (used to be able to inherit draw order from main animation later)
+ if (draw_order == ARG_UNDEFINED_VALUE)
+ g->draw_order = ARG_UNDEFINED_VALUE;
}
#if 0
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;
}
g->sort_priority = 0; // default for title screens
g->class = 0;
g->style = STYLE_DEFAULT;
+ g->alpha = -1;
g->bitmaps = src_bitmaps;
g->bitmap = src_bitmap;
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
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)
{
g->draw_yoffset = parameter[GFX_ARG_DRAW_YOFFSET];
// use a different default value for global animations and toons
- if ((graphic >= IMG_GFX_GLOBAL_ANIM_1 && graphic <= IMG_GFX_GLOBAL_ANIM_8) ||
+ if ((graphic >= IMG_GFX_GLOBAL_ANIM_1 && graphic <= IMG_GFX_GLOBAL_ANIM_32) ||
(graphic >= IMG_TOON_1 && graphic <= IMG_TOON_20))
g->draw_masked = TRUE;
if (parameter[GFX_ARG_DRAW_MASKED] != ARG_UNDEFINED_VALUE)
g->draw_masked = parameter[GFX_ARG_DRAW_MASKED];
+ // use a different default value for global animations (corrected later)
+ if (graphic >= IMG_GLOBAL_ANIM_1 && graphic <= IMG_GLOBAL_ANIM_32)
+ g->draw_order = ARG_UNDEFINED_VALUE;
+
// used for toon animations and global animations
if (parameter[GFX_ARG_DRAW_ORDER] != ARG_UNDEFINED_VALUE)
g->draw_order = parameter[GFX_ARG_DRAW_ORDER];
g->class = parameter[GFX_ARG_CLASS];
if (parameter[GFX_ARG_STYLE] != ARG_UNDEFINED_VALUE)
g->style = parameter[GFX_ARG_STYLE];
+ if (parameter[GFX_ARG_ALPHA] != ARG_UNDEFINED_VALUE)
+ g->alpha = parameter[GFX_ARG_ALPHA];
// this is only used for drawing menu buttons and text
g->active_xoffset = parameter[GFX_ARG_ACTIVE_XOFFSET];
static void InitGameInfo(void)
{
game.restart_level = FALSE;
-
game.request_active = FALSE;
- game.request_active_or_moving = FALSE;
game.use_masked_elements_initial = FALSE;
}
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++)
InitGfxDrawGlobalAnimFunction(DrawGlobalAnimations);
InitGfxDrawGlobalBorderFunction(DrawMaskedBorderToTarget);
InitGfxDrawTileCursorFunction(DrawTileCursor);
+ InitGfxDrawEnvelopeRequestFunction(DrawEnvelopeRequestToScreen);
gfx.fade_border_source_status = global.border_status;
gfx.fade_border_target_status = global.border_status;