X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fanim.c;h=d780658c39e8c4567542f79b86d0476a42c95082;hp=bbc38dc45903bde745711a925b9ad3bc3983333e;hb=a761d121263d681381a61087f110a9320626a8d0;hpb=064d7909aadd84f633fefcccee3c6f6eb44d47ff diff --git a/src/anim.c b/src/anim.c index bbc38dc4..d780658c 100644 --- a/src/anim.c +++ b/src/anim.c @@ -1191,6 +1191,7 @@ static void PlayGlobalAnimSoundIfLoop(struct GlobalAnimPartControlInfo *part) static boolean checkGlobalAnimEvent(int anim_event, int mask) { int mask_anim_only = mask & ~ANIM_EVENT_PART_MASK; + int mask_ce_only = mask & ~ANIM_EVENT_PAGE_MASK; if (mask & ANIM_EVENT_ANY) return (anim_event & ANIM_EVENT_ANY); @@ -1199,7 +1200,8 @@ static boolean checkGlobalAnimEvent(int anim_event, int mask) else if (mask & ANIM_EVENT_UNCLICK_ANY) return (anim_event & ANIM_EVENT_UNCLICK_ANY); else if (mask & ANIM_EVENT_CE_CHANGE) - return (anim_event == mask); + return (anim_event == mask || + anim_event == mask_ce_only); else return (anim_event == mask || anim_event == mask_anim_only); @@ -1358,12 +1360,13 @@ static void InitGlobalAnim_Triggered(struct GlobalAnimPartControlInfo *part, } } -static void InitGlobalAnim_Triggered_ByCustomElement(int nr) +static void InitGlobalAnim_Triggered_ByCustomElement(int nr, int page) { struct GlobalAnimControlInfo *ctrl = &global_anim_ctrl[GAME_MODE_PLAYING]; int event_value = ANIM_EVENT_CE_CHANGE; - int mask = event_value | (nr << ANIM_EVENT_CE_BIT); + int event_bits = (nr << ANIM_EVENT_CE_BIT) | (page << ANIM_EVENT_PAGE_BIT); + int mask = event_value | event_bits; int anim2_nr; for (anim2_nr = 0; anim2_nr < ctrl->num_anims; anim2_nr++) @@ -2140,10 +2143,11 @@ int getGlobalAnimSyncFrame(void) return anim_sync_frame; } -void HandleGlobalAnimEventByElementChange(int element) +void HandleGlobalAnimEventByElementChange(int element, int page) { if (!IS_CUSTOM_ELEMENT(element)) return; - InitGlobalAnim_Triggered_ByCustomElement(element - EL_CUSTOM_START); + // custom element stored as 0 to 255, change page stored as 1 to 32 + InitGlobalAnim_Triggered_ByCustomElement(element - EL_CUSTOM_START, page + 1); }