rnd-20021227-2-src
[rocksndiamonds.git] / src / libgame / toons.h
index f090b4d293922ca3b55e254293f13b8a24ab6940..3588d7da46a4a0df1080c7f796780f20f492b15d 100644 (file)
 #include "system.h"
 
 
-/* values for toon animation */
+/* values for animation mode (frame order and direction) */
+#define ANIM_NONE              0
+#define ANIM_LOOP              (1 << 0)
+#define ANIM_LINEAR            (1 << 1)
+#define ANIM_PINGPONG          (1 << 2)
+#define ANIM_PINGPONG2         (1 << 3)
+#define ANIM_REVERSE           (1 << 4)
+
+/* values for toon animation direction */
 #define ANIMDIR_LEFT   1
 #define ANIMDIR_RIGHT  2
 #define ANIMDIR_UP     4
@@ -33,7 +41,6 @@
 
 struct ToonScreenInfo
 {
-  Bitmap **toon_bitmap_array;
   Bitmap *save_buffer;
   void (*update_function)(void);
   void (*prepare_backbuffer_function)(void);
@@ -44,23 +51,34 @@ struct ToonScreenInfo
 
   int startx, starty;
   int width, height;
+
+  int frame_delay_value;
 };
 
 struct ToonInfo
 {
-  int bitmap_nr;
+  int graphic;
   int width, height;
   int src_x, src_y;
-  int frames;
-  int frames_per_second;
+  int anim_frames;
+  int move_delay;
   int stepsize;
-  boolean pingpong;
+  int anim_mode;
   int direction;
   int position;
+
+  int anim_delay;
+  int start_frame;
+  Bitmap *bitmap;      /* dynamically initialized */
 };
 
 
-void InitToonScreen();
+int getAnimationFrame(int, int, int, int, int);
+
+void InitToonScreen(Bitmap *, void (*update_function)(void),
+                   void (*prepare_backbuffer_function)(void),
+                   boolean (*redraw_needed_function)(void),
+                   struct ToonInfo *, int, int, int, int, int, int);
 void InitAnimation(void);
 void StopAnimation(void);
 void DoAnimation(void);