rnd-20060313-1-src
[rocksndiamonds.git] / src / main.h
index ffde34c3fadf17fa1f714f3713f63d5248b64b26..bb7d8766f9146d446bc7d0b3be113c8293074556 100644 (file)
 #define GFX_ELEMENT(e)         (element_info[e].use_gfx_element ?      \
                                 element_info[e].gfx_element : e)
 
+#if 1
+#define TILE_GFX_ELEMENT(x, y)                                         \
+                  (GfxElement[x][y] != EL_UNDEFINED &&                 \
+                   Feld[x][y] != EL_EXPLOSION ?                        \
+                   GfxElement[x][y] : Feld[x][y])
+#else
+#define TILE_GFX_ELEMENT(x, y)                                         \
+       GFX_ELEMENT(GfxElement[x][y] != EL_UNDEFINED &&                 \
+                   Feld[x][y] != EL_EXPLOSION ?                        \
+                   GfxElement[x][y] : Feld[x][y])
+#endif
+
 /* !!! "use sound" deactivated due to problems with level "bug machine" !!! */
 /* (solution: add separate "use sound of element" to level file and editor) */
 #if 0
 
 #define EL_TRIGGER_CE_VALUE            705
 
-#define NUM_FILE_ELEMENTS              706
+#define EL_YAMYAM_LEFT                 706
+#define EL_YAMYAM_RIGHT                        707
+#define EL_YAMYAM_UP                   708
+#define EL_YAMYAM_DOWN                 709
+
+#define NUM_FILE_ELEMENTS              710
 
 
 /* "real" (and therefore drawable) runtime elements */
@@ -1813,6 +1830,7 @@ struct PlayerInfo
   boolean is_pushing;
   boolean is_switching;
   boolean is_dropping;
+  boolean is_dropping_pressed;
 
   boolean is_bored;
   boolean is_sleeping;
@@ -1825,6 +1843,7 @@ struct PlayerInfo
   int anim_delay_counter;
   int post_delay_counter;
 
+  int dir_waiting;
   int action_waiting, last_action_waiting;
   int special_action_bored;
   int special_action_sleeping;
@@ -1848,6 +1867,7 @@ struct PlayerInfo
   unsigned long actual_frame_counter;
 
   int drop_delay;
+  int drop_pressed_delay;
 
   int step_counter;
 
@@ -1977,6 +1997,7 @@ struct LevelInfo
   boolean can_pass_to_walkable;        /* player can pass to empty or walkable tile */
   boolean grow_into_diggable;  /* amoeba can grow into anything diggable */
 
+  boolean continuous_snapping; /* repeated snapping without releasing key */
   boolean block_snap_field;    /* snapping blocks field to show animation */
   boolean block_last_field;    /* player blocks previous field while moving */
   boolean sp_block_last_field; /* player blocks previous field while moving */
@@ -2083,6 +2104,7 @@ struct GameInfo
   /* values for special game control */
   int centered_player_nr;
   int centered_player_nr_next;
+  boolean set_centered_player;
 };
 
 struct GlobalInfo