#define ANIM_CLASS_BIT_TITLE_INITIAL 0
#define ANIM_CLASS_BIT_TITLE 1
-#define ANIM_CLASS_BIT_SUBMENU 2
-#define ANIM_CLASS_BIT_MENU 3
-#define ANIM_CLASS_BIT_TOONS 4
+#define ANIM_CLASS_BIT_MAIN 2
+#define ANIM_CLASS_BIT_SUBMENU 3
+#define ANIM_CLASS_BIT_MENU 4
+#define ANIM_CLASS_BIT_TOONS 5
-#define NUM_ANIM_CLASSES 5
+#define NUM_ANIM_CLASSES 6
#define ANIM_CLASS_NONE 0
#define ANIM_CLASS_TITLE_INITIAL (1 << ANIM_CLASS_BIT_TITLE_INITIAL)
#define ANIM_CLASS_TITLE (1 << ANIM_CLASS_BIT_TITLE)
+#define ANIM_CLASS_MAIN (1 << ANIM_CLASS_BIT_MAIN)
#define ANIM_CLASS_SUBMENU (1 << ANIM_CLASS_BIT_SUBMENU)
#define ANIM_CLASS_MENU (1 << ANIM_CLASS_BIT_MENU)
#define ANIM_CLASS_TOONS (1 << ANIM_CLASS_BIT_TOONS)
-#define ANIM_CLASS_TOONS_MENU (ANIM_CLASS_TOONS | \
- ANIM_CLASS_MENU)
+#define ANIM_CLASS_TOONS_MENU_MAIN (ANIM_CLASS_TOONS | \
+ ANIM_CLASS_MENU | \
+ ANIM_CLASS_MAIN)
#define ANIM_CLASS_TOONS_MENU_SUBMENU (ANIM_CLASS_TOONS | \
ANIM_CLASS_MENU | \
{ GAME_MODE_LEVELNR, ANIM_CLASS_TOONS_MENU_SUBMENU },
{ GAME_MODE_INFO, ANIM_CLASS_TOONS_MENU_SUBMENU },
{ GAME_MODE_SETUP, ANIM_CLASS_TOONS_MENU_SUBMENU },
- { GAME_MODE_MAIN, ANIM_CLASS_TOONS_MENU },
+ { GAME_MODE_PSEUDO_MAINONLY, ANIM_CLASS_TOONS_MENU_MAIN },
+ { GAME_MODE_PSEUDO_TYPENAME, ANIM_CLASS_TOONS_MENU_MAIN },
{ GAME_MODE_SCORES, ANIM_CLASS_TOONS },
{ -1, -1 }
{
{ ANIM_CLASS_BIT_TITLE_INITIAL, GAME_MODE_TITLE_INITIAL },
{ ANIM_CLASS_BIT_TITLE, GAME_MODE_TITLE },
+ { ANIM_CLASS_BIT_MAIN, GAME_MODE_MAIN },
{ ANIM_CLASS_BIT_SUBMENU, GAME_MODE_PSEUDO_SUBMENU },
{ ANIM_CLASS_BIT_MENU, GAME_MODE_PSEUDO_MENU },
{ ANIM_CLASS_BIT_TOONS, GAME_MODE_PSEUDO_TOONS },
for (i = 0; i < num_toons; i++)
{
struct GlobalAnimPartControlInfo *part = &anim->part[part_nr];
+ int sound = SND_UNDEFINED;
int graphic = IMG_TOON_1 + i;
int control = graphic;
part->nr = part_nr;
part->anim_nr = anim_nr;
part->mode_nr = mode_nr;
+ part->sound = sound;
part->graphic = graphic;
part->graphic_info = graphic_info[graphic];
part->control_info = graphic_info[control];
if (part->anim_delay_counter == 0 &&
part->post_delay_counter == 0)
{
+ StopGlobalAnimSound(part);
+
part->post_delay_counter =
(c->post_delay_fixed + GetSimpleRandom(c->post_delay_random));
if (part->post_delay_counter > 0)
return ANIM_STATE_RUNNING;
- StopGlobalAnimSound(part);
-
+ // drawing last frame not needed here -- animation not visible anymore
return ANIM_STATE_RESTART;
}
}
if (part->anim_delay_counter == 0)
{
+ StopGlobalAnimSound(part);
+
part->post_delay_counter =
(c->post_delay_fixed + GetSimpleRandom(c->post_delay_random));
if (part->post_delay_counter > 0)
return ANIM_STATE_RUNNING;
- StopGlobalAnimSound(part);
-
// additional state "RUNNING" required to not skip drawing last frame
return ANIM_STATE_RESTART | ANIM_STATE_RUNNING;
}
{
part->post_delay_counter--;
- if (part->post_delay_counter == 0)
- StopGlobalAnimSound(part);
-
if (part->post_delay_counter == 0)
return ANIM_STATE_RESTART;