rnd-20030125-2-src
[rocksndiamonds.git] / src / main.h
index 4ee539f6835428d7682b6b1377d8c79a9c64e2e5..3fc93b732c3d53bb42eb0ec031db182c63505c66 100644 (file)
 
 #define PLAYER_NR_GFX(g,i)     ((g) + i * (IMG_PLAYER2 - IMG_PLAYER1))
 
+#define ANIM_FRAMES(g)         (graphic_info[g].anim_frames)
+#define ANIM_DELAY(g)          (graphic_info[g].anim_delay)
+#define ANIM_MODE(g)           (graphic_info[g].anim_mode)
+
+#define IS_ANIMATED(g)         (ANIM_FRAMES(g) > 1)
+#define IS_NEW_FRAME(f, g)     ((f) % ANIM_DELAY(g) == 0)
+
+#define IS_LOOP_SOUND(s)       (sound_info[s].loop)
+
 
 #if 0
 
 #define EL_AMOEBA_DRY_PART2                    (EL_FIRST_DUMMY + 22)
 #define EL_AMOEBA_DRY_PART3                    (EL_FIRST_DUMMY + 23)
 #define EL_AMOEBA_DRY_PART4                    (EL_FIRST_DUMMY + 24)
-#define EL_AMOEBA_DEAD_PART1                   (EL_FIRST_DUMMY + 25)
-#define EL_AMOEBA_DEAD_PART2                   (EL_FIRST_DUMMY + 26)
-#define EL_AMOEBA_DEAD_PART3                   (EL_FIRST_DUMMY + 27)
-#define EL_AMOEBA_DEAD_PART4                   (EL_FIRST_DUMMY + 28)
-#define EL_DYNABOMB_ACTIVE                     (EL_FIRST_DUMMY + 29)
-#define EL_SHIELD_NORMAL_ACTIVE                        (EL_FIRST_DUMMY + 30)
-#define EL_SHIELD_DEADLY_ACTIVE                        (EL_FIRST_DUMMY + 31)
-#define EL_ARROW_RED_LEFT                      (EL_FIRST_DUMMY + 32)
-#define EL_ARROW_RED_RIGHT                     (EL_FIRST_DUMMY + 33)
-#define EL_ARROW_RED_UP                                (EL_FIRST_DUMMY + 34)
-#define EL_ARROW_RED_DOWN                      (EL_FIRST_DUMMY + 35)
-
-#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 36)
+#define EL_AMOEBA_FULL_PART1                   (EL_FIRST_DUMMY + 25)
+#define EL_AMOEBA_FULL_PART2                   (EL_FIRST_DUMMY + 26)
+#define EL_AMOEBA_FULL_PART3                   (EL_FIRST_DUMMY + 27)
+#define EL_AMOEBA_FULL_PART4                   (EL_FIRST_DUMMY + 28)
+#define EL_AMOEBA_DEAD_PART1                   (EL_FIRST_DUMMY + 29)
+#define EL_AMOEBA_DEAD_PART2                   (EL_FIRST_DUMMY + 30)
+#define EL_AMOEBA_DEAD_PART3                   (EL_FIRST_DUMMY + 31)
+#define EL_AMOEBA_DEAD_PART4                   (EL_FIRST_DUMMY + 32)
+#define EL_DYNABOMB_ACTIVE                     (EL_FIRST_DUMMY + 33)
+#define EL_SHIELD_NORMAL_ACTIVE                        (EL_FIRST_DUMMY + 34)
+#define EL_SHIELD_DEADLY_ACTIVE                        (EL_FIRST_DUMMY + 35)
+#define EL_ARROW_RED_LEFT                      (EL_FIRST_DUMMY + 36)
+#define EL_ARROW_RED_RIGHT                     (EL_FIRST_DUMMY + 37)
+#define EL_ARROW_RED_UP                                (EL_FIRST_DUMMY + 38)
+#define EL_ARROW_RED_DOWN                      (EL_FIRST_DUMMY + 39)
+
+#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 40)
 
 
 /* values for graphics/sounds action types */
@@ -1030,6 +1043,7 @@ struct ElementInfo
   char *token_name;            /* element token prefix used in config files */
   char *sound_class_name;      /* classification for custom sound effects */
   char *editor_description;    /* short description for level editor */
+  char *custom_description;    /* custom description for level editor */
 
   int graphic[NUM_ACTIONS];    /* default graphics for several actions */
                                /* special graphics for left/right/up/down */
@@ -1112,7 +1126,8 @@ extern unsigned long              Properties1[MAX_NUM_ELEMENTS];
 extern unsigned long           Properties2[MAX_NUM_ELEMENTS];
 
 extern int                     GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short                   GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int                     GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int                     GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 
 extern int                     lev_fieldx, lev_fieldy;
 extern int                     scroll_x, scroll_y;