int viewport_height;
boolean changed = FALSE;
- if (part->last_anim_status == global.anim_status)
+ if (part->last_anim_status == global.anim_status &&
+ part->control_info.class != get_hash_from_key("pointer"))
return FALSE;
part->last_anim_status = global.anim_status;
part->drawing_stage = DRAW_GLOBAL_ANIM_STAGE_2;
}
+ else if (part->control_info.class == get_hash_from_key("pointer"))
+ {
+ viewport_x = gfx.mouse_x + part->control_info.x;
+ viewport_y = gfx.mouse_y + part->control_info.y;
+ viewport_width = part->graphic_info.width;
+ viewport_height = part->graphic_info.height;
+
+ part->drawing_stage = DRAW_GLOBAL_ANIM_STAGE_2;
+ }
else if (part->control_info.class == get_hash_from_key("door_1"))
{
viewport_x = DX;
part->step_yoffset = 0;
}
- if (c->x != ARG_UNDEFINED_VALUE)
- part->x = c->x;
- if (c->y != ARG_UNDEFINED_VALUE)
- part->y = c->y;
+ if (part->control_info.class != get_hash_from_key("pointer"))
+ {
+ if (c->x != ARG_UNDEFINED_VALUE)
+ part->x = c->x;
+ if (c->y != ARG_UNDEFINED_VALUE)
+ part->y = c->y;
+ }
if (c->position == POS_LAST &&
anim->last_x > -g->width && anim->last_x < part->viewport_width &&
InitGlobalAnim_Clicked(-1, -1, ANIM_CLICKED_RESET);
}
-boolean HandleGlobalAnimClicks(int mx, int my, int button)
+boolean HandleGlobalAnimClicks(int mx, int my, int button, boolean force_click)
{
static boolean click_consumed = FALSE;
static int last_button = 0;
boolean release_event;
boolean click_consumed_current = click_consumed;
+ if (button != 0 && force_click)
+ last_button = 0;
+
// check if button state has changed since last invocation
press_event = (button != 0 && last_button == 0);
release_event = (button == 0 && last_button != 0);