#define ANIM_CLASS_BIT_TITLE_INITIAL 0
#define ANIM_CLASS_BIT_TITLE 1
#define ANIM_CLASS_BIT_MAIN 2
-#define ANIM_CLASS_BIT_SCORES 3
-#define ANIM_CLASS_BIT_SUBMENU 4
-#define ANIM_CLASS_BIT_MENU 5
-#define ANIM_CLASS_BIT_TOONS 6
-#define ANIM_CLASS_BIT_NO_TITLE 7
+#define ANIM_CLASS_BIT_NAMES 3
+#define ANIM_CLASS_BIT_SCORES 4
+#define ANIM_CLASS_BIT_SCORESONLY 5
+#define ANIM_CLASS_BIT_SUBMENU 6
+#define ANIM_CLASS_BIT_MENU 7
+#define ANIM_CLASS_BIT_TOONS 8
+#define ANIM_CLASS_BIT_NO_TITLE 9
-#define NUM_ANIM_CLASSES 8
+#define NUM_ANIM_CLASSES 10
#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_NAMES (1 << ANIM_CLASS_BIT_NAMES)
#define ANIM_CLASS_SCORES (1 << ANIM_CLASS_BIT_SCORES)
+#define ANIM_CLASS_SCORESONLY (1 << ANIM_CLASS_BIT_SCORESONLY)
#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)
ANIM_CLASS_SCORES | \
ANIM_CLASS_NO_TITLE)
+#define ANIM_CLASS_TOONS_SCORESONLY (ANIM_CLASS_TOONS | \
+ ANIM_CLASS_SCORES | \
+ ANIM_CLASS_SCORESONLY | \
+ ANIM_CLASS_NO_TITLE)
+
#define ANIM_CLASS_TOONS_MENU_MAIN (ANIM_CLASS_TOONS | \
ANIM_CLASS_MENU | \
ANIM_CLASS_MAIN | \
ANIM_CLASS_SUBMENU | \
ANIM_CLASS_NO_TITLE)
+#define ANIM_CLASS_TOONS_MENU_SUBMENU_2 (ANIM_CLASS_TOONS | \
+ ANIM_CLASS_MENU | \
+ ANIM_CLASS_SUBMENU | \
+ ANIM_CLASS_NAMES | \
+ ANIM_CLASS_NO_TITLE)
+
// values for global animation states
#define ANIM_STATE_INACTIVE 0
#define ANIM_STATE_RESTART (1 << 0)
unsigned int initial_anim_sync_frame;
unsigned int anim_random_frame;
- unsigned int step_delay, step_delay_value;
+
+ DelayCounter step_delay;
int init_delay_counter;
int anim_delay_counter;
{ 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_PSEUDO_NAMESONLY, ANIM_CLASS_TOONS_MENU_SUBMENU },
- { GAME_MODE_PSEUDO_TYPENAMES, ANIM_CLASS_TOONS_MENU_SUBMENU },
+ { GAME_MODE_PSEUDO_NAMESONLY, ANIM_CLASS_TOONS_MENU_SUBMENU_2 },
+ { GAME_MODE_PSEUDO_TYPENAMES, ANIM_CLASS_TOONS_MENU_SUBMENU_2 },
{ GAME_MODE_PSEUDO_MAINONLY, ANIM_CLASS_TOONS_MENU_MAIN },
{ GAME_MODE_PSEUDO_TYPENAME, ANIM_CLASS_TOONS_MENU_MAIN },
- { GAME_MODE_PSEUDO_SCORESOLD, ANIM_CLASS_TOONS_SCORES },
- { GAME_MODE_PSEUDO_SCORESNEW, ANIM_CLASS_TOONS_SCORES },
+ { GAME_MODE_PSEUDO_SCORESOLD, ANIM_CLASS_TOONS_SCORESONLY },
+ { GAME_MODE_PSEUDO_SCORESNEW, ANIM_CLASS_TOONS_SCORESONLY },
{ GAME_MODE_SCOREINFO, ANIM_CLASS_TOONS_SCORES },
{ GAME_MODE_EDITOR, ANIM_CLASS_NO_TITLE },
{ GAME_MODE_PLAYING, ANIM_CLASS_NO_TITLE },
{ 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_NAMES, GAME_MODE_NAMES },
{ ANIM_CLASS_BIT_SCORES, GAME_MODE_SCORES },
+ { ANIM_CLASS_BIT_SCORESONLY, GAME_MODE_PSEUDO_SCORESONLY },
{ ANIM_CLASS_BIT_SUBMENU, GAME_MODE_PSEUDO_SUBMENU },
{ ANIM_CLASS_BIT_MENU, GAME_MODE_PSEUDO_MENU },
{ ANIM_CLASS_BIT_TOONS, GAME_MODE_PSEUDO_TOONS },
part->initial_anim_sync_frame = 0;
part->anim_random_frame = -1;
- part->step_delay = 0;
- part->step_delay_value = graphic_info[control].step_delay;
+ part->step_delay.count = 0;
+ part->step_delay.value = graphic_info[control].step_delay;
part->state = ANIM_STATE_INACTIVE;
part->last_anim_status = -1;
part->initial_anim_sync_frame = 0;
part->anim_random_frame = -1;
- part->step_delay = 0;
- part->step_delay_value = graphic_info[control].step_delay;
+ part->step_delay.count = 0;
+ part->step_delay.value = graphic_info[control].step_delay;
part->state = ANIM_STATE_INACTIVE;
part->last_anim_status = -1;
// special case to prevent expiring loop sounds when playing
PlayGlobalAnimSoundIfLoop(part);
- if (!DelayReachedExt(&part->step_delay, part->step_delay_value,
- anim_sync_frame))
+ if (!DelayReachedExt(&part->step_delay, anim_sync_frame))
return ANIM_STATE_RUNNING;
#if 0
if (event_action == ANIM_EVENT_ACTION_NONE)
return FALSE;
- PushUserEvent(USEREVENT_ANIM_EVENT_ACTION, event_action, 0);
+ if (event_action < MAX_IMAGE_FILES)
+ PushUserEvent(USEREVENT_ANIM_EVENT_ACTION, event_action, 0);
+ else
+ OpenURLFromHash(anim_url_hash, event_action);
// check if further actions are allowed to be executed
if (part->control_info.style & STYLE_MULTIPLE_ACTIONS)