added option to not trigger further animations if CE change event consumed
authorHolger Schemel <info@artsoft.org>
Sun, 20 Aug 2023 12:57:58 +0000 (14:57 +0200)
committerHolger Schemel <info@artsoft.org>
Sun, 3 Sep 2023 20:59:58 +0000 (22:59 +0200)
This adds the parameter "consume_ce_event" to the ".style" option of
global animations to prevent any further global animation to be
triggered by "ce_change" events (".init_event" or ".anim_event") if
the event was already recognized by any other global animation (which
therefore "consumes" this event).

Using this option, several similar global animations can be defined
that are triggered one after another by several custom element changes
to make it possible to show several similar global animations for
multiple CE changes at the same time.

src/anim.c
src/files.c
src/libgame/system.h

index 0e866110cb24cd4a6ec290dabe928f4ee60bb727..68147f0bc06ac100e36e0a51135864a93b587e84 100644 (file)
@@ -1411,6 +1411,10 @@ static void InitGlobalAnim_Triggered_ByCustomElement(int nr, int page,
 
        part2->triggered = TRUE;
 
+       // do not trigger any other animation if CE change event was consumed
+       if (c->style == STYLE_CONSUME_CE_EVENT)
+         return;
+
 #if 0
        Debug("anim:InitGlobalAnim_Triggered_ByCustomElement",
              "%d.%d TRIGGERED BY CE %d", anim2_nr, part2_nr, nr + 1);
index 11f4c1425624e2c3ad73e9590d5b7412b7ef83e3..d9addaf1fc074a8ef0f8bde81ead0dfd780f579d 100644 (file)
@@ -11915,6 +11915,9 @@ int get_parameter_value(char *value_raw, char *suffix, int type)
 
     if (string_has_parameter(value, "multiple_actions"))
       result |= STYLE_MULTIPLE_ACTIONS;
+
+    if (string_has_parameter(value, "consume_ce_event"))
+      result |= STYLE_CONSUME_CE_EVENT;
   }
   else if (strEqual(suffix, ".fade_mode"))
   {
index 05f9f08ac9b66540d6e342c576c0ca2ff4a93f69..d74b057b60b28314dbf760ac72ec0293d8d5c50c 100644 (file)
 #define STYLE_BLOCK            (1 << 4)
 #define STYLE_PASSTHROUGH      (1 << 5)
 #define STYLE_MULTIPLE_ACTIONS (1 << 6)
+#define STYLE_CONSUME_CE_EVENT (1 << 7)
 
 #define STYLE_DEFAULT          STYLE_NONE