rnd-20030807-1-src
[rocksndiamonds.git] / src / main.h
index 86155b077cded23320bf9bfb257cf157f3f1a0d4..24ecedf4673ee89a14b0090a0cc2fe78b30b7912 100644 (file)
 #define EL_EMPTY                       EL_EMPTY_SPACE
 #define EL_SAND                                1
 #define EL_WALL                                2
-#define EL_WALL_CRUMBLED               3
+#define EL_WALL_SLIPPERY               3
 #define EL_ROCK                                4
 #define EL_KEY_OBSOLETE                        5 /* obsolete; mapped to EL_KEY_1 */
 #define EL_EMERALD                     6
 #define EL_MOLE_RIGHT                  312
 #define EL_MOLE_UP                     313
 #define EL_MOLE_DOWN                   314
-#define EL_STEELWALL_SLANTED           315
+#define EL_STEELWALL_SLIPPERY          315
 #define EL_INVISIBLE_SAND              316
 #define EL_DX_UNKNOWN_15               317
 #define EL_DX_UNKNOWN_42               318
 #define EL_INVISIBLE_STEELWALL_BOTTOMRIGHT     (EL_FIRST_DUMMY + 9)
 #define EL_INVISIBLE_STEELWALL_HORIZONTAL      (EL_FIRST_DUMMY + 10)
 #define EL_INVISIBLE_STEELWALL_VERTICAL                (EL_FIRST_DUMMY + 11)
-#define EL_SAND_CRUMBLED                       (EL_FIRST_DUMMY + 12)
+#define EL_DYNABOMB                            (EL_FIRST_DUMMY + 12)
 #define EL_DYNABOMB_ACTIVE                     (EL_FIRST_DUMMY + 13)
-#define EL_SHIELD_NORMAL_ACTIVE                        (EL_FIRST_DUMMY + 14)
-#define EL_SHIELD_DEADLY_ACTIVE                        (EL_FIRST_DUMMY + 15)
-#define EL_DEFAULT                             (EL_FIRST_DUMMY + 16)
-#define EL_BD_DEFAULT                          (EL_FIRST_DUMMY + 17)
-#define EL_SP_DEFAULT                          (EL_FIRST_DUMMY + 18)
-#define EL_SB_DEFAULT                          (EL_FIRST_DUMMY + 19)
+#define EL_DYNABOMB_PLAYER_1                   (EL_FIRST_DUMMY + 14)
+#define EL_DYNABOMB_PLAYER_2                   (EL_FIRST_DUMMY + 15)
+#define EL_DYNABOMB_PLAYER_3                   (EL_FIRST_DUMMY + 16)
+#define EL_DYNABOMB_PLAYER_4                   (EL_FIRST_DUMMY + 17)
+#define EL_SHIELD_NORMAL_ACTIVE                        (EL_FIRST_DUMMY + 18)
+#define EL_SHIELD_DEADLY_ACTIVE                        (EL_FIRST_DUMMY + 19)
+#define EL_DEFAULT                             (EL_FIRST_DUMMY + 20)
+#define EL_BD_DEFAULT                          (EL_FIRST_DUMMY + 21)
+#define EL_SP_DEFAULT                          (EL_FIRST_DUMMY + 22)
+#define EL_SB_DEFAULT                          (EL_FIRST_DUMMY + 23)
 
-#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 20)
+#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 24)
 
 
 /* values for graphics/sounds action types */
 #define GFX_SPECIAL_ARG_SETUP                  5
 #define GFX_SPECIAL_ARG_DOOR                   6
 #define GFX_SPECIAL_ARG_PREVIEW                        7
+#define GFX_SPECIAL_ARG_CRUMBLED               8
 
-#define NUM_SPECIAL_GFX_ARGS                   8
+#define NUM_SPECIAL_GFX_ARGS                   9
 
 
 /* values for image configuration suffixes */
 #define GFX_ARG_DELAY                          13
 #define GFX_ARG_ANIM_MODE                      14
 #define GFX_ARG_GLOBAL_SYNC                    15
-#define GFX_ARG_STEP_OFFSET                    16
-#define GFX_ARG_STEP_DELAY                     17
-#define GFX_ARG_DIRECTION                      18
-#define GFX_ARG_POSITION                       19
-#define GFX_ARG_DRAW_XOFFSET                   20
-#define GFX_ARG_DRAW_YOFFSET                   21
-#define GFX_ARG_NAME                           22
+#define GFX_ARG_CRUMBLED_LIKE                  16
+#define GFX_ARG_DIGGABLE_LIKE                  17
+#define GFX_ARG_STEP_OFFSET                    18
+#define GFX_ARG_STEP_DELAY                     19
+#define GFX_ARG_DIRECTION                      20
+#define GFX_ARG_POSITION                       21
+#define GFX_ARG_DRAW_XOFFSET                   22
+#define GFX_ARG_DRAW_YOFFSET                   23
+#define GFX_ARG_NAME                           24
 
-#define NUM_GFX_ARGS                           23
+#define NUM_GFX_ARGS                           25
 
 
 /* values for sound configuration suffixes */
 #define GAME_MODE_SETUP                                5
 #define GAME_MODE_PSEUDO_DOOR                  6
 #define GAME_MODE_PSEUDO_PREVIEW               7
+#define GAME_MODE_PSEUDO_CRUMBLED              8
 
 /* there are no special config file suffixes for these modes */
-#define GAME_MODE_PLAYING                      8
-#define GAME_MODE_PSEUDO_TYPENAME              9
-#define GAME_MODE_QUIT                         10
+#define GAME_MODE_PLAYING                      9
+#define GAME_MODE_PSEUDO_TYPENAME              10
+#define GAME_MODE_QUIT                         11
 
-#define PROGRAM_VERSION_MAJOR  2
-#define PROGRAM_VERSION_MINOR  2
-#define PROGRAM_VERSION_PATCH  0
-#define PROGRAM_VERSION_RELEASE        7
-#define PROGRAM_VERSION_STRING "2.2.0rc7"
+#define PROGRAM_VERSION_MAJOR  3
+#define PROGRAM_VERSION_MINOR  0
+#define PROGRAM_VERSION_PATCH  1
+#define PROGRAM_VERSION_RELEASE        0
+#define PROGRAM_VERSION_STRING "3.0.1"
 
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING  "Holger Schemel"
@@ -1109,7 +1117,7 @@ struct LevelInfo
   int time_light;
   int time_timegate;
   boolean double_speed;
-  boolean gravity;
+  boolean initial_gravity;
   boolean em_slippery_gems;    /* EM style "gems slip from wall" behaviour */
 
   short field[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
@@ -1171,6 +1179,7 @@ struct GameInfo
   int switchgate_pos;
   int balloon_dir;
   boolean explosions_delayed;
+  boolean current_gravity;
 };
 
 struct GlobalInfo
@@ -1192,6 +1201,8 @@ struct MenuInfo
   int draw_xoffset[NUM_SPECIAL_GFX_ARGS];
   int draw_yoffset[NUM_SPECIAL_GFX_ARGS];
 
+  int scrollbar_xoffset;
+
   int list_size_default;
   int list_size[NUM_SPECIAL_GFX_ARGS];
 };
@@ -1245,6 +1256,11 @@ struct ElementInfo
   int graphic[NUM_ACTIONS];    /* default graphics for several actions */
   int direction_graphic[NUM_ACTIONS][NUM_DIRECTIONS];
                                /* special graphics for left/right/up/down */
+
+  int crumbled[NUM_ACTIONS];   /* crumbled graphics for several actions */
+  int direction_crumbled[NUM_ACTIONS][NUM_DIRECTIONS];
+                               /* crumbled graphics for left/right/up/down */
+
   int special_graphic[NUM_SPECIAL_GFX_ARGS];
                                /* special graphics for certain screens */
 
@@ -1313,6 +1329,8 @@ struct GraphicInfo
   int anim_delay;              /* important: delay of 1 means "no delay"! */
   int anim_mode;
   boolean anim_global_sync;
+  int crumbled_like;           /* element for cloning crumble graphics */
+  int diggable_like;           /* element for cloning digging graphics */
 
   int step_offset;             /* optional step offset of toon animations */
   int step_delay;              /* optional step delay of toon animations */
@@ -1379,6 +1397,7 @@ extern short                      StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   Back[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern boolean                 Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern boolean                 Pushed[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern boolean                 Changing[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   AmoebaCnt[MAX_NUM_AMOEBA];