#define MIN_LEV_FIELDY 3
#define STD_LEV_FIELDX 64
#define STD_LEV_FIELDY 32
-#define MAX_LEV_FIELDX 128
-#define MAX_LEV_FIELDY 128
+#define MAX_LEV_FIELDX MAX_PLAYFIELD_WIDTH
+#define MAX_LEV_FIELDY MAX_PLAYFIELD_HEIGHT
#define SCREENX(a) ((a) - scroll_x)
#define SCREENY(a) ((a) - scroll_y)
#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_EM_GATE_3_GRAY 252
#define EL_EM_GATE_4_GRAY 253
-#define EL_UNUSED_254 254
-#define EL_UNUSED_255 255
+#define EL_EM_DYNAMITE 254
+#define EL_EM_DYNAMITE_ACTIVE 255
#define EL_PEARL 256
#define EL_CRYSTAL 257
#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 */
#define ACTION_TURNING_FROM_DOWN 46
#define ACTION_SMASHED_BY_ROCK 47
#define ACTION_SMASHED_BY_SPRING 48
-#define ACTION_SLURPING 49
+#define ACTION_EATING 49
#define ACTION_TWINKLING 50
#define ACTION_SPLASHING 51
#define ACTION_PAGE_1 52
boolean is_pushing;
boolean is_switching;
boolean is_dropping;
+ boolean is_dropping_pressed;
boolean is_bored;
boolean is_sleeping;
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;
unsigned long actual_frame_counter;
int drop_delay;
+ int drop_pressed_delay;
int step_counter;
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 */
/* values for special game initialization control */
boolean restart_level;
+
+ /* values for special game control */
+ int centered_player_nr;
+ int centered_player_nr_next;
+ boolean set_centered_player;
};
struct GlobalInfo