From 895d5cb33db251c933445778400bb3e50b76d4ab Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Tue, 12 Dec 2023 14:21:04 +0100 Subject: [PATCH] fixed setting (and maybe inheriting) draw order for global animations --- src/anim.c | 8 ++++++++ src/init.c | 21 +++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/anim.c b/src/anim.c index a23d6e58..0cb2023d 100644 --- a/src/anim.c +++ b/src/anim.c @@ -535,6 +535,10 @@ static void InitGlobalAnimControls(void) anim->state = ANIM_STATE_INACTIVE; + // if draw order is undefined, set to default value "0" + if (anim->control_info.draw_order == ARG_UNDEFINED_VALUE) + anim->control_info.draw_order = 0; + part_nr = 0; for (p = 0; p < NUM_GLOBAL_ANIM_PARTS_ALL; p++) @@ -606,6 +610,10 @@ static void InitGlobalAnimControls(void) if (part->control_info.class == get_hash_from_key("pointer") && part->control_info.style == STYLE_DEFAULT) part->control_info.style |= STYLE_PASSTHROUGH; + + // if draw order is undefined, inherit it from main animation + if (part->control_info.draw_order == ARG_UNDEFINED_VALUE) + part->control_info.draw_order = anim->control_info.draw_order; } if (anim->num_parts > 0 || anim->has_base) diff --git a/src/init.c b/src/init.c index af11e4c7..45945dcd 100644 --- a/src/init.c +++ b/src/init.c @@ -722,14 +722,23 @@ static void InitGlobalAnimGraphicInfo(void) 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 @@ -1657,6 +1666,10 @@ static void set_graphic_parameters_ext(int graphic, int *parameter, 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]; -- 2.34.1