rnd-20051209-1-src
[rocksndiamonds.git] / src / main.h
index d18e2de2da392a0770c7312c6ed97c36c6d6f74b..1ab53e5bdcbf10fa5cd7ed8e217ebe4ab2351f4e 100644 (file)
 
 /* values for change action mode for custom elements */
 #define CA_MODE_UNDEFINED      0
-#define CA_MODE_ADD            1
-#define CA_MODE_SUBTRACT       2
-#define CA_MODE_MULTIPLY       3
-#define CA_MODE_DIVIDE         4
-#define CA_MODE_SET            5
+#define CA_MODE_SET            1
+#define CA_MODE_ADD            2
+#define CA_MODE_SUBTRACT       3
+#define CA_MODE_MULTIPLY       4
+#define CA_MODE_DIVIDE         5
+#define CA_MODE_MODULO         6
 
 /* values for change action parameters for custom elements */
 #define CA_ARG_MIN             0
 #define GFX_ARG_POST_DELAY_RANDOM      35
 #define GFX_ARG_NAME                   36
 #define GFX_ARG_SCALE_UP_FACTOR                37
+#define GFX_ARG_CLONE_FROM             38
 
-#define NUM_GFX_ARGS                   38
+#define NUM_GFX_ARGS                   39
 
 
 /* values for sound configuration suffixes */
@@ -1942,8 +1944,8 @@ struct ElementInfo
 
   int access_direction;                /* accessible from which direction */
 
-  int collect_score;           /* score value for collecting */
-  int collect_count;           /* count value for collecting */
+  int collect_score_initial;   /* initial score value for collecting */
+  int collect_count_initial;   /* initial count value for collecting */
 
   int push_delay_fixed;                /* constant delay before pushing */
   int push_delay_random;       /* additional random delay before pushing */
@@ -1968,8 +1970,6 @@ struct ElementInfo
   int explosion_delay;         /* duration of explosion of this element */
   int ignition_delay;          /* delay for explosion by other explosion */
 
-  int counter_initial;         /* initial value of generic CE counter */
-
   struct ElementChangeInfo *change_page; /* actual list of change pages */
   struct ElementChangeInfo *change;     /* pointer to current change page */
 
@@ -1987,7 +1987,7 @@ struct ElementInfo
 
   boolean in_group[NUM_GROUP_ELEMENTS];
 
-  int counter;                 /* current value of generic CE counter */
+  int collect_score;           /* runtime score value for collecting */
 
   /* ---------- internal values used in level editor ---------- */
 
@@ -2019,6 +2019,9 @@ struct FontInfo
 struct GraphicInfo
 {
   Bitmap *bitmap;
+  int src_image_width;         /* scaled bitmap size, but w/o small images */
+  int src_image_height;                /* scaled bitmap size, but w/o small images */
+
   int src_x, src_y;            /* start position of animation frames */
   int width, height;           /* width/height of each animation frame */
   int offset_x, offset_y;      /* x/y offset to next animation frame */
@@ -2035,6 +2038,7 @@ struct GraphicInfo
   int diggable_like;           /* element for cloning digging graphics */
   int border_size;             /* border size for "crumbled" graphics */
   int scale_up_factor;         /* optional factor for scaling image up */
+  int clone_from;              /* graphic for cloning *all* settings */
 
   int anim_delay_fixed;                /* optional delay values for bored and   */
   int anim_delay_random;       /* sleeping player animations (animation */
@@ -2147,6 +2151,7 @@ extern short                      MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   ChangeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   ChangePage[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short                   Count[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY];