X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fanim.c;h=3b96adfa55d0b9f1d11d9cd1c9f32e08cd9ac6e7;hb=d2fe72fafa7704884ffbfcb8fa5ee7b9effe32db;hp=d226d5cddcc82626191dde2c34abb6edcca32f48;hpb=4be294f9d518dcacd0a54dc718e35c15c7c75c33;p=rocksndiamonds.git diff --git a/src/anim.c b/src/anim.c index d226d5cd..3b96adfa 100644 --- a/src/anim.c +++ b/src/anim.c @@ -536,6 +536,20 @@ static void InitGlobalAnimControls(void) anim->base = *part; anim->has_base = TRUE; } + + // apply special settings for pointer-style animations + if (part->control_info.class == get_hash_from_key("pointer")) + { + // force animation to be on top (must set anim and part control) + if (anim->control_info.draw_order == 0) + anim->control_info.draw_order = 1000000; + if (part->control_info.draw_order == 0) + part->control_info.draw_order = 1000000; + + // force animation to pass-through clicks (must set part control) + if (part->control_info.style == STYLE_DEFAULT) + part->control_info.style |= STYLE_PASSTHROUGH; + } } if (anim->num_parts > 0 || anim->has_base) @@ -863,14 +877,19 @@ static boolean SetGlobalAnimPart_Viewport(struct GlobalAnimPartControlInfo *part } 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; + int mx = MIN(MAX(0, gfx.mouse_x), WIN_XSIZE - 1); + int my = MIN(MAX(0, gfx.mouse_y), WIN_YSIZE - 1); + + viewport_x = mx - part->control_info.x; + viewport_y = my - part->control_info.y; viewport_width = part->graphic_info.width; viewport_height = part->graphic_info.height; part->drawing_stage = DRAW_GLOBAL_ANIM_STAGE_2; - gfx.cursor_mode_override = CURSOR_NONE; + // do not use global animation mouse pointer when reloading artwork + 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")) {