rocksndiamonds-3.0.8
[rocksndiamonds.git] / src / main.h
index 1b002b0d613d53e90fb9f2ddcf5dc0ca80cac172..9484a5c6a90c9f4eb9f12dab53007840e732a057 100644 (file)
 #define CE_PRESSED_BY_PLAYER   2
 #define CE_PUSHED_BY_PLAYER    3
 #define CE_DROPPED_BY_PLAYER   4
-#define CE_COLLISION           5
+#define CE_COLLISION_ACTIVE    5
 #define CE_IMPACT              6
 #define CE_SMASHED             7
 #define CE_OTHER_IS_TOUCHING   8
 #define CE_OTHER_GETS_PUSHED   13
 #define CE_OTHER_GETS_COLLECTED        14
 #define CE_OTHER_GETS_DROPPED  15
-#define CE_BY_PLAYER           16      /* obsolete; now CE_BY_DIRECT_ACTION */
-#define CE_BY_COLLISION                17      /* obsolete; now CE_BY_DIRECT_ACTION */
+#define CE_BY_PLAYER_OBSOLETE  16      /* obsolete; now CE_BY_DIRECT_ACTION */
+#define CE_BY_COLLISION_OBSOLETE 17    /* obsolete; now CE_BY_DIRECT_ACTION */
 #define CE_BY_OTHER_ACTION     18      /* activates other element events */
 #define CE_BY_DIRECT_ACTION    19      /* activates direct element events */
 #define CE_OTHER_GETS_DIGGED   20
 #define CE_OTHER_GETS_LEFT     24
 #define CE_SWITCHED            25
 #define CE_OTHER_IS_SWITCHING  26
+#define CE_COLLISION_PASSIVE   27
+#define CE_OTHER_IS_COLL_ACTIVE        28
+#define CE_OTHER_IS_COLL_PASSIVE 29
 
-#define NUM_CHANGE_EVENTS      27
+#define NUM_CHANGE_EVENTS      30
 
 #define CE_BITMASK_DEFAULT     0
 
 #define MV_BIT_TURNING_LEFT    8
 #define MV_BIT_TURNING_RIGHT   9
 #define MV_BIT_WHEN_PUSHED     10
+#define MV_BIT_MAZE_RUNNER     11
+#define MV_BIT_MAZE_HUNTER     12
 
 /* values for special move patterns for custom elements */
 #define MV_HORIZONTAL          (MV_LEFT | MV_RIGHT)
 #define MV_TURNING_LEFT                (1 << MV_BIT_TURNING_LEFT)
 #define MV_TURNING_RIGHT       (1 << MV_BIT_TURNING_RIGHT)
 #define MV_WHEN_PUSHED         (1 << MV_BIT_WHEN_PUSHED)
+#define MV_MAZE_RUNNER         (1 << MV_BIT_MAZE_RUNNER)
+#define MV_MAZE_HUNTER         (1 << MV_BIT_MAZE_HUNTER)
+#define MV_MAZE_RUNNER_STYLE   (MV_MAZE_RUNNER | MV_MAZE_HUNTER)
 
 /* values for slippery property for custom elements */
 #define SLIPPERY_ANY_RANDOM    0
 #define EL_BD_MAGIC_WALL               61
 #define EL_INVISIBLE_STEELWALL         62
 
-#define EL_UNUSED_63                   63
+#define EL_MAZE_RUNNER                 63
 
 #define EL_DYNABOMB_INCREASE_NUMBER    64
 #define EL_DYNABOMB_INCREASE_SIZE      65
 #define PROGRAM_VERSION_MAJOR  3
 #define PROGRAM_VERSION_MINOR  0
 #define PROGRAM_VERSION_PATCH  8
-#define PROGRAM_VERSION_BUILD  0
+#define PROGRAM_VERSION_BUILD  3
 
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING  "Holger Schemel"
@@ -1209,6 +1217,7 @@ struct PlayerInfo
   int anim_delay_counter;
   int post_delay_counter;
 
+  int action_waiting, last_action_waiting;
   int special_action_bored;
   int special_action_sleeping;
 
@@ -1227,6 +1236,8 @@ struct PlayerInfo
 
   unsigned long actual_frame_counter;
 
+  int step_counter;
+
   int score;
   int gems_still_needed;
   int sokobanfields_still_needed;
@@ -1535,13 +1546,22 @@ struct MusicPrefixInfo
 
 struct MusicFileInfo
 {
-  char *context;
+  char *basename;
+
+  char *title_header;
+  char *artist_header;
+  char *album_header;
+  char *year_header;
 
   char *title;
   char *artist;
   char *album;
   char *year;
 
+  int music;
+
+  boolean is_sound;
+
   struct MusicFileInfo *next;
 };
 
@@ -1613,6 +1633,8 @@ extern short                      AmoebaCnt[MAX_NUM_AMOEBA];
 extern short                   AmoebaCnt2[MAX_NUM_AMOEBA];
 extern short                   ExplodePhase[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 extern short                   ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int                     RunnerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int                     PlayerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 
 extern unsigned long           Properties[MAX_NUM_ELEMENTS][NUM_EP_BITFIELDS];