#ifndef TILE_H
#define TILE_H

#include "main_em.h"

#ifdef EM_ENGINE_BAD_ROLL
#define BAD_ROLL
#endif

#ifdef EM_ENGINE_BAD_SPRING
#define BAD_SPRING
#endif


#if 0

/* 2000-07-30T11:06:03Z
 */

/* define these for backwards compatibility */
#define BAD_ROLL
#define BAD_SPRING

enum
{
  Xblank = 0, /* still */
  Yacid_splash_eB, /* hmm */
  Yacid_splash_wB, /* hmm */

#ifdef BAD_ROLL
  Xstone_force_e, /* only use these in eater */
  Xstone_force_w,
  Xnut_force_e,
  Xnut_force_w,
  Xspring_force_e,
  Xspring_force_w,
  Xemerald_force_e,
  Xemerald_force_w,
  Xdiamond_force_e,
  Xdiamond_force_w,
  Xbomb_force_e,
  Xbomb_force_w,
#endif

  Xstone,
  Xstone_pause,
  Xstone_fall,
  Ystone_s,
  Ystone_sB,
  Ystone_e,
  Ystone_eB,
  Ystone_w,
  Ystone_wB,
  Xnut,
  Xnut_pause,
  Xnut_fall,
  Ynut_s,
  Ynut_sB,
  Ynut_e,
  Ynut_eB,
  Ynut_w,
  Ynut_wB,
  Xbug_n,
  Xbug_e,
  Xbug_s,
  Xbug_w,
  Xbug_gon,
  Xbug_goe,
  Xbug_gos,
  Xbug_gow,
  Ybug_n,
  Ybug_nB,
  Ybug_e,
  Ybug_eB,
  Ybug_s,
  Ybug_sB,
  Ybug_w,
  Ybug_wB,
  Ybug_w_n,
  Ybug_n_e,
  Ybug_e_s,
  Ybug_s_w,
  Ybug_e_n,
  Ybug_s_e,
  Ybug_w_s,
  Ybug_n_w,
  Ybug_stone,
  Ybug_spring,
  Xtank_n,
  Xtank_e,
  Xtank_s,
  Xtank_w,
  Xtank_gon,
  Xtank_goe,
  Xtank_gos,
  Xtank_gow,
  Ytank_n,
  Ytank_nB,
  Ytank_e,
  Ytank_eB,
  Ytank_s,
  Ytank_sB,
  Ytank_w,
  Ytank_wB,
  Ytank_w_n,
  Ytank_n_e,
  Ytank_e_s,
  Ytank_s_w,
  Ytank_e_n,
  Ytank_s_e,
  Ytank_w_s,
  Ytank_n_w,
  Ytank_stone,
  Ytank_spring,
  Xandroid,
  Xandroid_1_n,
  Xandroid_2_n,
  Xandroid_1_e,
  Xandroid_2_e,
  Xandroid_1_w,
  Xandroid_2_w,
  Xandroid_1_s,
  Xandroid_2_s,
  Yandroid_n,
  Yandroid_nB,
  Yandroid_ne,
  Yandroid_neB,
  Yandroid_e,
  Yandroid_eB,
  Yandroid_se,
  Yandroid_seB,
  Yandroid_s,
  Yandroid_sB,
  Yandroid_sw,
  Yandroid_swB,
  Yandroid_w,
  Yandroid_wB,
  Yandroid_nw,
  Yandroid_nwB,
  Xspring,
  Xspring_pause,
  Xspring_e,
  Xspring_w,
  Xspring_fall,
  Yspring_s,
  Yspring_sB,
  Yspring_e,
  Yspring_eB,
  Yspring_w,
  Yspring_wB,
  Yspring_kill_e,
  Yspring_kill_eB,
  Yspring_kill_w,
  Yspring_kill_wB,
  Xeater_n,
  Xeater_e,
  Xeater_w,
  Xeater_s,
  Yeater_n,
  Yeater_nB,
  Yeater_e,
  Yeater_eB,
  Yeater_s,
  Yeater_sB,
  Yeater_w,
  Yeater_wB,
  Yeater_stone,
  Yeater_spring,
  Xalien,
  Xalien_pause,
  Yalien_n,
  Yalien_nB,
  Yalien_e,
  Yalien_eB,
  Yalien_s,
  Yalien_sB,
  Yalien_w,
  Yalien_wB,
  Yalien_stone,
  Yalien_spring,
  Xemerald,
  Xemerald_pause,
  Xemerald_fall,
  Xemerald_shine,
  Yemerald_s,
  Yemerald_sB,
  Yemerald_e,
  Yemerald_eB,
  Yemerald_w,
  Yemerald_wB,
  Yemerald_eat,
  Yemerald_stone,
  Xdiamond,
  Xdiamond_pause,
  Xdiamond_fall,
  Xdiamond_shine,
  Ydiamond_s,
  Ydiamond_sB,
  Ydiamond_e,
  Ydiamond_eB,
  Ydiamond_w,
  Ydiamond_wB,
  Ydiamond_eat,
  Ydiamond_stone,
  Xdrip_fall,
  Xdrip_stretch,
  Xdrip_stretchB,
  Xdrip_eat,
  Ydrip_s1,
  Ydrip_s1B,
  Ydrip_s2,
  Ydrip_s2B,
  Xbomb,
  Xbomb_pause,
  Xbomb_fall,
  Ybomb_s,
  Ybomb_sB,
  Ybomb_e,
  Ybomb_eB,
  Ybomb_w,
  Ybomb_wB,
  Ybomb_eat,
  Xballoon,
  Yballoon_n,
  Yballoon_nB,
  Yballoon_e,
  Yballoon_eB,
  Yballoon_s,
  Yballoon_sB,
  Yballoon_w,
  Yballoon_wB,
  Xgrass,
  Ygrass_nB,
  Ygrass_eB,
  Ygrass_sB,
  Ygrass_wB,
  Xdirt,
  Ydirt_nB,
  Ydirt_eB,
  Ydirt_sB,
  Ydirt_wB,
  Xacid_ne,
  Xacid_se,
  Xacid_s,
  Xacid_sw,
  Xacid_nw,
  Xacid_1,
  Xacid_2,
  Xacid_3,
  Xacid_4,
  Xacid_5,
  Xacid_6,
  Xacid_7,
  Xacid_8,
  Xball_1,
  Xball_1B,
  Xball_2,
  Xball_2B,
  Yball_eat,
  Xgrow_ns,
  Ygrow_ns_eat,
  Xgrow_ew,
  Ygrow_ew_eat,
  Xwonderwall,
  XwonderwallB,
  Xamoeba_1,
  Xamoeba_2,
  Xamoeba_3,
  Xamoeba_4,
  Xamoeba_5,
  Xamoeba_6,
  Xamoeba_7,
  Xamoeba_8,
  Xdoor_1,
  Xdoor_2,
  Xdoor_3,
  Xdoor_4,
  Xdoor_5,
  Xdoor_6,
  Xdoor_7,
  Xdoor_8,
  Xkey_1,
  Xkey_2,
  Xkey_3,
  Xkey_4,
  Xkey_5,
  Xkey_6,
  Xkey_7,
  Xkey_8,
  Xwind_n,
  Xwind_e,
  Xwind_s,
  Xwind_w,
  Xwind_nesw,
  Xwind_stop,
  Xexit,
  Xexit_1,
  Xexit_2,
  Xexit_3,
  Xdynamite,
  Ydynamite_eat,
  Xdynamite_1,
  Xdynamite_2,
  Xdynamite_3,
  Xdynamite_4,
  Xbumper,
  XbumperB,
  Xwheel,
  XwheelB,
  Xswitch,
  XswitchB,
  Xsand,
  Xsand_stone,
  Xsand_stonein_1,
  Xsand_stonein_2,
  Xsand_stonein_3,
  Xsand_stonein_4,
  Xsand_stonesand_1,
  Xsand_stonesand_2,
  Xsand_stonesand_3,
  Xsand_stonesand_4,
  Xsand_stoneout_1,
  Xsand_stoneout_2,
  Xsand_sandstone_1,
  Xsand_sandstone_2,
  Xsand_sandstone_3,
  Xsand_sandstone_4,
  Xplant,
  Yplant,
  Xlenses,
  Xmagnify,
  Xdripper,
  XdripperB,
  Xfake_blank,
  Xfake_blankB,
  Xfake_grass,
  Xfake_grassB,
  Xfake_door_1,
  Xfake_door_2,
  Xfake_door_3,
  Xfake_door_4,
  Xfake_door_5,
  Xfake_door_6,
  Xfake_door_7,
  Xfake_door_8,
  Xsteel_1,
  Xsteel_2,
  Xsteel_3,
  Xsteel_4,
  Xwall_1,
  Xwall_2,
  Xwall_3,
  Xwall_4,
  Xround_wall_1,
  Xround_wall_2,
  Xround_wall_3,
  Xround_wall_4,
  Xdecor_1,
  Xdecor_2,
  Xdecor_3,
  Xdecor_4,
  Xdecor_5,
  Xdecor_6,
  Xdecor_7,
  Xdecor_8,
  Xdecor_9,
  Xdecor_10,
  Xdecor_11,
  Xdecor_12,
  Xalpha_0,
  Xalpha_1,
  Xalpha_2,
  Xalpha_3,
  Xalpha_4,
  Xalpha_5,
  Xalpha_6,
  Xalpha_7,
  Xalpha_8,
  Xalpha_9,
  Xalpha_excla,
  Xalpha_quote,
  Xalpha_comma,
  Xalpha_minus,
  Xalpha_perio,
  Xalpha_colon,
  Xalpha_quest,
  Xalpha_a,
  Xalpha_b,
  Xalpha_c,
  Xalpha_d,
  Xalpha_e,
  Xalpha_f,
  Xalpha_g,
  Xalpha_h,
  Xalpha_i,
  Xalpha_j,
  Xalpha_k,
  Xalpha_l,
  Xalpha_m,
  Xalpha_n,
  Xalpha_o,
  Xalpha_p,
  Xalpha_q,
  Xalpha_r,
  Xalpha_s,
  Xalpha_t,
  Xalpha_u,
  Xalpha_v,
  Xalpha_w,
  Xalpha_x,
  Xalpha_y,
  Xalpha_z,
  Xalpha_arrow_e,
  Xalpha_arrow_w,
  Xalpha_copyr,

  Xboom_bug, /* passed from explode to synchro (linked explosion); transition to explode_normal */
  Xboom_bomb, /* passed from explode to synchro (linked explosion); transition to explode_normal */
  Xboom_android, /* passed from explode to synchro; transition to boom_2 */
  Xboom_1, /* passed from explode to synchro; transition to boom_2 */
  Xboom_2, /* transition to boom[] */

  Znormal, /* no picture */ /* this tile is passed from synchro to explode, only in next[] */
  Zdynamite, /* no picture */ /* this tile is passed from synchro to explode, only in next[] */
  Zplayer, /* no picture */ /* special code to indicate player */
  ZBORDER, /* no picture */ /* special code to indicate border */

  TILE_MAX
};

enum
{
  SPR_still = 0,
  SPR_walk  = 1,
  SPR_push  = 5,
  SPR_spray = 9,

  SPR_MAX   = 13
};

#endif

extern unsigned char tab_blank[TILE_MAX];
extern unsigned char tab_acid[TILE_MAX];
extern unsigned char tab_amoeba[TILE_MAX];
extern unsigned char tab_android_move[TILE_MAX];
extern unsigned short tab_explode_normal[TILE_MAX];
extern unsigned short tab_explode_dynamite[TILE_MAX];

extern unsigned short map_obj[8][TILE_MAX];
extern unsigned short map_spr[2][8][SPR_MAX];
extern unsigned short map_ttl[128];

#endif
