static void DoAnimationExt(void);
static struct GlobalAnimControlInfo global_anim_ctrl[NUM_GAME_MODES];
-static struct ToonInfo toons[MAX_NUM_TOONS];
static unsigned int anim_sync_frame = 0;
-static unsigned int anim_sync_frame_delay = 0;
-static unsigned int anim_sync_frame_delay_value = GAME_FRAME_DELAY;
static int game_mode_anim_classes[NUM_GAME_MODES];
static int anim_class_game_modes[NUM_ANIM_CLASSES];
return compare_result;
}
-static void PrepareBackbuffer()
-{
- if (game_status != GAME_MODE_PLAYING)
- return;
-
- BlitScreenToBitmap(backbuffer);
-}
-
-boolean ToonNeedsRedraw()
-{
- return TRUE;
-}
-
-void InitToons()
-{
- int num_toons = MAX_NUM_TOONS;
- int i;
-
- if (global.num_toons >= 0 && global.num_toons < MAX_NUM_TOONS)
- num_toons = global.num_toons;
-
- for (i = 0; i < num_toons; i++)
- {
- int graphic = IMG_TOON_1 + i;
- struct FileInfo *image = getImageListEntryFromImageID(graphic);
-
- toons[i].bitmap = graphic_info[graphic].bitmap;
-
- toons[i].src_x = graphic_info[graphic].src_x;
- toons[i].src_y = graphic_info[graphic].src_y;
-
- toons[i].width = graphic_info[graphic].width;
- toons[i].height = graphic_info[graphic].height;
-
- toons[i].anim_frames = graphic_info[graphic].anim_frames;
- toons[i].anim_delay = graphic_info[graphic].anim_delay;
- toons[i].anim_mode = graphic_info[graphic].anim_mode;
- toons[i].anim_start_frame = graphic_info[graphic].anim_start_frame;
-
- toons[i].step_offset = graphic_info[graphic].step_offset;
- toons[i].step_delay = graphic_info[graphic].step_delay;
-
- toons[i].direction = image->parameter[GFX_ARG_DIRECTION];
- toons[i].position = image->parameter[GFX_ARG_POSITION];
- }
-
- InitToonScreen(bitmap_db_toons,
- BackToFront, PrepareBackbuffer, ToonNeedsRedraw,
- toons, num_toons,
- REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE,
- GAME_FRAME_DELAY);
-}
-
static void InitToonControls()
{
int mode_nr_toons = GAME_MODE_PSEUDO_TOONS;
anim_sync_frame = 0;
- ResetDelayCounter(&anim_sync_frame_delay);
-
for (m = 0; m < NUM_GAME_MODES; m++)
{
mode_nr = m;
InitGlobalAnimControls();
}
-void DrawGlobalAnimExt(int drawing_stage)
+void DrawGlobalAnimationsExt(int drawing_stage)
{
int mode_nr;
}
}
-void DrawGlobalAnim(int drawing_stage)
+void DrawGlobalAnimations(int drawing_stage)
{
- DrawGlobalAnimExt(drawing_stage);
+ DrawGlobalAnimationsExt(drawing_stage);
}
boolean SetGlobalAnimPart_Viewport(struct GlobalAnimPartControlInfo *part)
HandleGlobalAnim_Mode(&global_anim_ctrl[game_mode], action);
}
-void InitAnimation()
-{
-}
-
-void StopAnimation()
-{
-}
-
static void DoAnimationExt()
{
int i;
printf("::: DoAnimation [%d, %d]\n", anim_sync_frame, Counter());
#endif
-#if 1
- WaitUntilDelayReached(&anim_sync_frame_delay, anim_sync_frame_delay_value);
+ // global animations now synchronized with frame delay of screen update
anim_sync_frame++;
-#else
- if (DelayReached(&anim_sync_frame_delay, anim_sync_frame_delay_value))
- anim_sync_frame++;
-#endif
for (i = 0; i < NUM_GAME_MODES; i++)
HandleGlobalAnim(ANIM_CONTINUE, i);
redraw_mask = REDRAW_ALL;
#endif
}
-
-void DoAnimation()
-{
- // HandleAnimation(ANIM_CONTINUE);
-
-#if 1
- // force screen redraw in next frame to continue drawing global animations
- redraw_mask = REDRAW_ALL;
-#endif
-}