rnd-20040130-2-src
[rocksndiamonds.git] / src / main.h
index 9d78b18a008fdf70bded85d3c9fdaea6cbce07db..b1e9840675d4bcd3895639af2f2c5847326700c2 100644 (file)
 #define EP_CAN_SMASH           69
 #define EP_CAN_EXPLODE         70
 #define EP_CAN_EXPLODE_3X3     71
+#define EP_SP_PORT             72
 
 /* values for internal purpose only (level editor) */
-#define EP_EXPLODE_RESULT      72
-#define EP_WALK_TO_OBJECT      73
-#define EP_DEADLY              74
+#define EP_EXPLODE_RESULT      73
+#define EP_WALK_TO_OBJECT      74
+#define EP_DEADLY              75
 
-#define NUM_ELEMENT_PROPERTIES 75
+#define NUM_ELEMENT_PROPERTIES 76
 
 #define NUM_EP_BITFIELDS       ((NUM_ELEMENT_PROPERTIES + 31) / 32)
 #define EP_BITFIELD_BASE       0
 #define CAN_SMASH(e)           HAS_PROPERTY(e, EP_CAN_SMASH)
 #define CAN_EXPLODE(e)         HAS_PROPERTY(e, EP_CAN_EXPLODE)
 #define CAN_EXPLODE_3X3(e)     HAS_PROPERTY(e, EP_CAN_EXPLODE_3X3)
+#define IS_SP_PORT(e)          HAS_PROPERTY(e, EP_SP_PORT)
 
 /* special macros used in game engine */
 #define IS_CUSTOM_ELEMENT(e)   ((e) >= EL_CUSTOM_START &&              \
 
 
 /* fundamental game speed values */
+#define ONE_SECOND_DELAY       1000    /* delay value for one second */
 #define GAME_FRAME_DELAY       20      /* frame delay in milliseconds */
 #define FFWD_FRAME_DELAY       10      /* 200% speed for fast forward */
-#define FRAMES_PER_SECOND      (1000 / GAME_FRAME_DELAY)
+#define FRAMES_PER_SECOND      (ONE_SECOND_DELAY / GAME_FRAME_DELAY)
 #define MICROLEVEL_SCROLL_DELAY        50      /* delay for scrolling micro level */
 #define MICROLEVEL_LABEL_DELAY 250     /* delay for micro level label */
 
@@ -1252,6 +1255,8 @@ struct PlayerInfo
 
   boolean use_murphy_graphic;
 
+  boolean block_last_field;
+
   boolean LevelSolved, GameOver;
 
   int last_move_dir;
@@ -1355,6 +1360,8 @@ struct LevelInfo
   boolean double_speed;
   boolean initial_gravity;
   boolean em_slippery_gems;    /* EM style "gems slip from wall" behaviour */
+  boolean block_last_field;    /* player blocks previous field while moving */
+  boolean sp_block_last_field; /* player blocks previous field while moving */
 
   short field[MAX_LEV_FIELDX][MAX_LEV_FIELDY];