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++)
anim->has_base = TRUE;
}
- // force pointer-style animations to pass-through clicks
- if (part->control_info.class == get_hash_from_key("pointer") &&
- part->control_info.style == STYLE_DEFAULT)
- part->control_info.style |= STYLE_PASSTHROUGH;
+ // apply special settings to pointer-style animations
+ if (part->control_info.class == get_hash_from_string("pointer"))
+ {
+ // force pointer-style animations to be checked for clicks first
+ part->control_info.draw_order = 1000000;
- // 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;
+ // force pointer-style animations to pass-through clicks
+ part->control_info.style |= STYLE_PASSTHROUGH;
+ }
}
if (anim->num_parts > 0 || anim->has_base)
int mode_nr;
int i;
- if (!setup.toons)
+ if (!setup.global_animations)
return;
if (drawing_stage == DRAW_GLOBAL_ANIM_STAGE_1 &&
int frame;
int last_anim_random_frame = gfx.anim_random_frame;
+ if (!setup.toons &&
+ part->graphic >= IMG_TOON_1 &&
+ part->graphic <= IMG_TOON_20)
+ continue;
+
// when preparing source fading buffer, only draw animations to be stopped
if (drawing_target == DRAW_TO_FADE_SOURCE &&
game_mode_anim_action[part->mode_nr] != ANIM_STOP)
boolean changed = FALSE;
if (part->last_anim_status == global.anim_status &&
- part->control_info.class != get_hash_from_key("pointer"))
+ part->control_info.class != get_hash_from_string("pointer"))
return FALSE;
part->last_anim_status = global.anim_status;
part->class_playfield_or_door = FALSE;
- if (part->control_info.class == get_hash_from_key("window") ||
- part->control_info.class == get_hash_from_key("border"))
+ if (part->control_info.class == get_hash_from_string("window") ||
+ part->control_info.class == get_hash_from_string("border"))
{
viewport_x = 0;
viewport_y = 0;
part->drawing_stage = DRAW_GLOBAL_ANIM_STAGE_2;
}
- else if (part->control_info.class == get_hash_from_key("pointer"))
+ else if (part->control_info.class == get_hash_from_string("pointer"))
{
int mx = MIN(MAX(0, gfx.mouse_x), WIN_XSIZE - 1);
int my = MIN(MAX(0, gfx.mouse_y), WIN_YSIZE - 1);
if (global.anim_status != GAME_MODE_LOADING)
gfx.cursor_mode_override = CURSOR_NONE;
}
- else if (part->control_info.class == get_hash_from_key("door_1"))
+ else if (part->control_info.class == get_hash_from_string("door_1"))
{
viewport_x = DX;
viewport_y = DY;
part->class_playfield_or_door = TRUE;
}
- else if (part->control_info.class == get_hash_from_key("door_2"))
+ else if (part->control_info.class == get_hash_from_string("door_2"))
{
if (part->mode_nr == GAME_MODE_EDITOR)
{
part->viewport_width = viewport_width;
part->viewport_height = viewport_height;
- if (part->control_info.class != get_hash_from_key("pointer"))
+ if (part->control_info.class != get_hash_from_string("pointer"))
changed = TRUE;
}
part->step_yoffset = 0;
}
- if (part->control_info.class != get_hash_from_key("pointer"))
+ if (part->control_info.class != get_hash_from_string("pointer"))
{
if (c->x != ARG_UNDEFINED_VALUE)
part->x = c->x;
// if request dialog is active, only handle pointer-style animations
if (game.request_active &&
- part->control_info.class != get_hash_from_key("pointer"))
+ part->control_info.class != get_hash_from_string("pointer"))
continue;
if (clicked_event == ANIM_CLICKED_RESET)