}
else if (mode & ANIM_LEVEL_NR) // play frames by level number
{
- int level_pos = level_nr - leveldir_current->first_level;
+ int level_pos = level_nr - gfx.anim_first_level;
frame = level_pos % num_frames;
}
(struct GlobalAnimPartControlInfo *)obj2;
int compare_result;
- if (o1->control_info.draw_order != o2->control_info.draw_order)
- compare_result = o1->control_info.draw_order - o2->control_info.draw_order;
- else
- compare_result = o1->nr - o2->nr;
+ // do not sort animations parts by draw order (as it would be confusing)
+ compare_result = o1->nr - o2->nr;
return compare_result;
}
{
struct GlobalAnimPartControlInfo *part = &anim->part[part_nr];
+ // if request dialog is active, only handle pointer-style animations
+ if (game.request_active &&
+ part->control_info.class != get_hash_from_key("pointer"))
+ continue;
+
if (clicked_event == ANIM_CLICKED_RESET)
{
part->clicked = FALSE;