#include "events.h"
#include "config.h"
-#if 0
-GC tile_clip_gc;
-Bitmap *pix[NUM_BITMAPS];
-#endif
Bitmap *bitmap_db_field, *bitmap_db_door;
-#if 0
-Pixmap tile_clipmask[NUM_TILES];
-#endif
DrawBuffer *fieldbuffer;
DrawBuffer *drawto_field;
short MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short ChangeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short ChangePage[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+short CustomValue[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short Back[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
boolean Pushed[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-unsigned long Changed[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-unsigned long ChangeEvent[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+short ChangeCount[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+short ChangeEvent[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short WasJustMoving[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short WasJustFalling[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short CheckCollision[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
int FX = SX, FY = SY;
int ScrollStepSize;
-int ScreenMovDir = MV_NO_MOVING, ScreenMovPos = 0;
+int ScreenMovDir = MV_NONE, ScreenMovPos = 0;
int ScreenGfxPos = 0;
int BorderElement = EL_STEELWALL;
int GameFrameDelay = GAME_FRAME_DELAY;
"letter '$'"
},
{
- "char_procent",
+ "char_percent",
"char",
"letter '%'"
},
{
"balloon_switch_left",
"balloon_switch",
- "send balloon to the left"
+ "wind switch (left)"
},
{
"balloon_switch_right",
"balloon_switch",
- "send balloon to the right"
+ "wind switch (right)"
},
{
"balloon_switch_up",
"balloon_switch",
- "send balloon up"
+ "wind switch (up)"
},
{
"balloon_switch_down",
"balloon_switch",
- "send balloon down"
+ "wind switch (down)"
},
{
"balloon_switch_any",
"balloon_switch",
- "send balloon in any direction"
+ "wind switch (any direction)"
},
{
"emc_steelwall_1",
{
"balloon_switch_none",
"balloon_switch",
- "stop moving balloon"
- },
- {
- "emc_level_border",
- "wall",
- "level border steelwall",
- },
- {
- "emc_android",
- "emc_android",
- "android",
- },
- {
- "emc_android_right",
- "emc_android",
- "android",
- },
- {
- "emc_android_up",
- "emc_android",
- "android",
- },
- {
- "emc_android_left",
- "emc_android",
- "android",
- },
- {
- "emc_android_down",
- "emc_android",
- "android",
- },
- {
- "emc_android_left_up",
- "emc_android",
- "android",
- },
- {
- "emc_android_left_down",
- "emc_android",
- "android",
- },
- {
- "emc_android_right_up",
- "emc_android",
- "android",
- },
- {
- "emc_android_right_down",
- "emc_android",
- "android",
- },
- {
- "emc_grass",
- "emc_grass",
- "grass",
- },
- {
- "emc_generator_ball",
- "emc_generator_ball",
- "generator ball",
- },
- {
- "emc_gate_1",
- "gate",
- "door 1 (EMC style)",
- },
- {
- "emc_gate_2",
- "gate",
- "door 2 (EMC style)",
- },
- {
- "emc_gate_3",
- "gate",
- "door 3 (EMC style)",
- },
- {
- "emc_gate_4",
- "gate",
- "door 4 (EMC style)",
+ "wind switch (off)"
},
{
"emc_gate_5",
"gate",
"door 8 (EMC style)",
},
- {
- "emc_gate_1_gray",
- "gate",
- "gray door (EMC style, key 1)",
- },
- {
- "emc_gate_2_gray",
- "gate",
- "gray door (EMC style, key 2)",
- },
- {
- "emc_gate_3_gray",
- "gate",
- "gray door (EMC style, key 3)",
- },
- {
- "emc_gate_4_gray",
- "gate",
- "gray door (EMC style, key 4)",
- },
{
"emc_gate_5_gray",
"gate",
"gate",
"gray door (EMC style, key 8)",
},
- {
- "emc_key_1",
- "key",
- "key 1 (EMC style)",
- },
- {
- "emc_key_2",
- "key",
- "key 2 (EMC style)",
- },
- {
- "emc_key_3",
- "key",
- "key 3 (EMC style)",
- },
- {
- "emc_key_4",
- "key",
- "key 4 (EMC style)",
- },
{
"emc_key_5",
"key",
"key 8 (EMC style)",
},
{
- "emc_bumper",
- "emc_bumper",
- "bumper",
+ "emc_android",
+ "emc_android",
+ "android",
+ },
+ {
+ "emc_grass",
+ "emc_grass",
+ "grass",
+ },
+ {
+ "emc_magic_ball",
+ "emc_magic_ball",
+ "magic ball",
+ },
+ {
+ "emc_magic_ball.active",
+ "emc_magic_ball",
+ "magic ball (activated)",
+ },
+ {
+ "emc_magic_ball_switch",
+ "emc_magic_ball_switch",
+ "magic ball switch (off)",
+ },
+ {
+ "emc_magic_ball_switch.active",
+ "emc_magic_ball_switch",
+ "magic ball switch (on)",
+ },
+ {
+ "emc_spring_bumper",
+ "emc_spring_bumper",
+ "spring bumper",
},
{
"emc_plant",
"emc_magnifier",
"magnifier",
},
+ {
+ "emc_wall_9",
+ "wall",
+ "normal wall"
+ },
+ {
+ "emc_wall_10",
+ "wall",
+ "normal wall"
+ },
+ {
+ "emc_wall_11",
+ "wall",
+ "normal wall"
+ },
+ {
+ "emc_wall_12",
+ "wall",
+ "normal wall"
+ },
+ {
+ "emc_wall_13",
+ "wall",
+ "normal wall"
+ },
+ {
+ "emc_wall_14",
+ "wall",
+ "normal wall"
+ },
+ {
+ "emc_wall_15",
+ "wall",
+ "normal wall"
+ },
+ {
+ "emc_wall_16",
+ "wall",
+ "normal wall"
+ },
+ {
+ "emc_wall_slippery_1",
+ "wall",
+ "slippery wall"
+ },
+ {
+ "emc_wall_slippery_2",
+ "wall",
+ "slippery wall"
+ },
+ {
+ "emc_wall_slippery_3",
+ "wall",
+ "slippery wall"
+ },
+ {
+ "emc_wall_slippery_4",
+ "wall",
+ "slippery wall"
+ },
+ {
+ "emc_fake_grass",
+ "fake_grass",
+ "fake grass"
+ },
+ {
+ "emc_fake_acid",
+ "fake_acid",
+ "fake acid"
+ },
+ {
+ "emc_dripper",
+ "dripper",
+ "dripper"
+ },
+ {
+ "trigger_ce_value",
+ "trigger",
+ "CE value of element triggering change"
+ },
/* ----------------------------------------------------------------------- */
/* "real" (and therefore drawable) runtime elements */
"-"
},
+ {
+ "emc_fake_grass.active",
+ "fake_grass",
+ "-"
+ },
+ {
+ "gate_1_gray.active",
+ "gate",
+ ""
+ },
+ {
+ "gate_2_gray.active",
+ "gate",
+ ""
+ },
+ {
+ "gate_3_gray.active",
+ "gate",
+ ""
+ },
+ {
+ "gate_4_gray.active",
+ "gate",
+ ""
+ },
+ {
+ "em_gate_1_gray.active",
+ "gate",
+ ""
+ },
+ {
+ "em_gate_2_gray.active",
+ "gate",
+ ""
+ },
+ {
+ "em_gate_3_gray.active",
+ "gate",
+ ""
+ },
+ {
+ "em_gate_4_gray.active",
+ "gate",
+ ""
+ },
+ {
+ "emc_gate_5_gray.active",
+ "gate",
+ "",
+ },
+ {
+ "emc_gate_6_gray.active",
+ "gate",
+ "",
+ },
+ {
+ "emc_gate_7_gray.active",
+ "gate",
+ "",
+ },
+ {
+ "emc_gate_8_gray.active",
+ "gate",
+ "",
+ },
+ {
+ "emc_dripper.active",
+ "dripper",
+ "dripper"
+ },
+ {
+ "emc_spring_bumper.active",
+ "emc_spring_bumper",
+ "spring bumper",
+ },
+
/* ----------------------------------------------------------------------- */
/* "unreal" (and therefore not drawable) runtime elements */
/* ----------------------------------------------------------------------- */
"-",
"-"
},
+ {
+ "element.snapping",
+ "-",
+ "-"
+ },
+ {
+ "diagonal.shrinking",
+ "-",
+ "-"
+ },
+ {
+ "diagonal.growing",
+ "-",
+ "-"
+ },
/* ----------------------------------------------------------------------- */
/* dummy elements (never used as game elements, only used as graphics) */
"internal",
"-"
},
+ {
+ "internal_cascade_bd",
+ "internal",
+ "show Boulder Dash elements"
+ },
+ {
+ "internal_cascade_bd.active",
+ "internal",
+ "hide Boulder Dash elements"
+ },
+ {
+ "internal_cascade_em",
+ "internal",
+ "show Emerald Mine elements"
+ },
+ {
+ "internal_cascade_em.active",
+ "internal",
+ "hide Emerald Mine elements"
+ },
+ {
+ "internal_cascade_emc",
+ "internal",
+ "show Emerald Mine Club elements"
+ },
+ {
+ "internal_cascade_emc.active",
+ "internal",
+ "hide Emerald Mine Club elements"
+ },
+ {
+ "internal_cascade_rnd",
+ "internal",
+ "show Rocks'n'Diamonds elements"
+ },
+ {
+ "internal_cascade_rnd.active",
+ "internal",
+ "hide Rocks'n'Diamonds elements"
+ },
+ {
+ "internal_cascade_sb",
+ "internal",
+ "show Sokoban elements"
+ },
+ {
+ "internal_cascade_sb.active",
+ "internal",
+ "hide Sokoban elements"
+ },
+ {
+ "internal_cascade_sp",
+ "internal",
+ "show Supaplex elements"
+ },
+ {
+ "internal_cascade_sp.active",
+ "internal",
+ "hide Supaplex elements"
+ },
+ {
+ "internal_cascade_dc",
+ "internal",
+ "show Diamond Caves II elements"
+ },
+ {
+ "internal_cascade_dc.active",
+ "internal",
+ "hide Diamond Caves II elements"
+ },
+ {
+ "internal_cascade_dx",
+ "internal",
+ "show DX Boulderdash elements"
+ },
+ {
+ "internal_cascade_dx.active",
+ "internal",
+ "hide DX Boulderdash elements"
+ },
+ {
+ "internal_cascade_chars",
+ "internal",
+ "show text elements"
+ },
+ {
+ "internal_cascade_chars.active",
+ "internal",
+ "hide text elements"
+ },
+ {
+ "internal_cascade_ce",
+ "internal",
+ "show custom elements"
+ },
+ {
+ "internal_cascade_ce.active",
+ "internal",
+ "hide custom elements"
+ },
+ {
+ "internal_cascade_ge",
+ "internal",
+ "show group elements"
+ },
+ {
+ "internal_cascade_ge.active",
+ "internal",
+ "hide group elements"
+ },
+ {
+ "internal_cascade_user",
+ "internal",
+ "show user defined elements"
+ },
+ {
+ "internal_cascade_user.active",
+ "internal",
+ "hide user defined elements"
+ },
+ {
+ "internal_cascade_generic",
+ "internal",
+ "show elements"
+ },
+ {
+ "internal_cascade_generic.active",
+ "internal",
+ "hide elements"
+ },
+ {
+ "internal_cascade_dynamic",
+ "internal",
+ "show elements used in this level"
+ },
+ {
+ "internal_cascade_dynamic.active",
+ "internal",
+ "hide elements used in this level"
+ },
/* keyword to stop parser: "ELEMENT_INFO_END" <-- do not change! */
{ ".turning_from_right", ACTION_TURNING_FROM_RIGHT, FALSE },
{ ".turning_from_up", ACTION_TURNING_FROM_UP, FALSE },
{ ".turning_from_down", ACTION_TURNING_FROM_DOWN, FALSE },
+ { ".smashed_by_rock", ACTION_SMASHED_BY_ROCK, FALSE },
+ { ".smashed_by_spring", ACTION_SMASHED_BY_SPRING, FALSE },
+ { ".slurped_by_spring", ACTION_SLURPED_BY_SPRING, FALSE },
+ { ".twinkling", ACTION_TWINKLING, FALSE },
+ { ".splashing", ACTION_SPLASHING, FALSE },
+ { ".page[1]", ACTION_PAGE_1, FALSE },
+ { ".page[2]", ACTION_PAGE_2, FALSE },
+ { ".page[3]", ACTION_PAGE_3, FALSE },
+ { ".page[4]", ACTION_PAGE_4, FALSE },
+ { ".page[5]", ACTION_PAGE_5, FALSE },
+ { ".page[6]", ACTION_PAGE_6, FALSE },
+ { ".page[7]", ACTION_PAGE_7, FALSE },
+ { ".page[8]", ACTION_PAGE_8, FALSE },
+ { ".page[9]", ACTION_PAGE_9, FALSE },
+ { ".page[10]", ACTION_PAGE_10, FALSE },
+ { ".page[11]", ACTION_PAGE_11, FALSE },
+ { ".page[12]", ACTION_PAGE_12, FALSE },
+ { ".page[13]", ACTION_PAGE_13, FALSE },
+ { ".page[14]", ACTION_PAGE_14, FALSE },
+ { ".page[15]", ACTION_PAGE_15, FALSE },
+ { ".page[16]", ACTION_PAGE_16, FALSE },
+ { ".page[17]", ACTION_PAGE_17, FALSE },
+ { ".page[18]", ACTION_PAGE_18, FALSE },
+ { ".page[19]", ACTION_PAGE_19, FALSE },
+ { ".page[20]", ACTION_PAGE_20, FALSE },
+ { ".page[21]", ACTION_PAGE_21, FALSE },
+ { ".page[22]", ACTION_PAGE_22, FALSE },
+ { ".page[23]", ACTION_PAGE_23, FALSE },
+ { ".page[24]", ACTION_PAGE_24, FALSE },
+ { ".page[25]", ACTION_PAGE_25, FALSE },
+ { ".page[26]", ACTION_PAGE_26, FALSE },
+ { ".page[27]", ACTION_PAGE_27, FALSE },
+ { ".page[28]", ACTION_PAGE_28, FALSE },
+ { ".page[29]", ACTION_PAGE_29, FALSE },
+ { ".page[30]", ACTION_PAGE_30, FALSE },
+ { ".page[31]", ACTION_PAGE_31, FALSE },
+ { ".page[32]", ACTION_PAGE_32, FALSE },
{ ".other", ACTION_OTHER, FALSE },
/* empty suffix always matches -- check as last entry in InitSoundInfo() */
{ NULL, 0, 0 }
};
-struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS + 1] =
+struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS_FULL + 1] =
{
{ ".left", MV_BIT_LEFT },
{ ".right", MV_BIT_RIGHT },
{ ".up", MV_BIT_UP },
{ ".down", MV_BIT_DOWN },
+ { ".upleft", MV_BIT_UP },
+ { ".upright", MV_BIT_RIGHT },
+ { ".downleft", MV_BIT_LEFT },
+ { ".downright", MV_BIT_DOWN },
{ NULL, 0 }
};
{
{ "global.num_toons", &global.num_toons },
- { "menu.draw_xoffset", &menu.draw_xoffset_default },
- { "menu.draw_yoffset", &menu.draw_yoffset_default },
+ { "menu.draw_xoffset", &menu.draw_xoffset[GFX_SPECIAL_ARG_DEFAULT]},
+ { "menu.draw_yoffset", &menu.draw_yoffset[GFX_SPECIAL_ARG_DEFAULT]},
{ "menu.draw_xoffset.MAIN", &menu.draw_xoffset[GFX_SPECIAL_ARG_MAIN] },
{ "menu.draw_yoffset.MAIN", &menu.draw_yoffset[GFX_SPECIAL_ARG_MAIN] },
{ "menu.draw_xoffset.LEVELS", &menu.draw_xoffset[GFX_SPECIAL_ARG_LEVELS] },
{ "menu.scrollbar_xoffset", &menu.scrollbar_xoffset },
- { "menu.list_size", &menu.list_size_default },
+ { "menu.list_size", &menu.list_size[GFX_SPECIAL_ARG_DEFAULT] },
{ "menu.list_size.LEVELS", &menu.list_size[GFX_SPECIAL_ARG_LEVELS] },
{ "menu.list_size.SCORES", &menu.list_size[GFX_SPECIAL_ARG_SCORES] },
{ "menu.list_size.INFO", &menu.list_size[GFX_SPECIAL_ARG_INFO] },
+ { "door_1.width", &door_1.width },
+ { "door_1.height", &door_1.height },
{ "door_1.step_offset", &door_1.step_offset },
{ "door_1.step_delay", &door_1.step_delay },
{ "door_1.anim_mode", &door_1.anim_mode },
+ { "door_2.width", &door_2.width },
+ { "door_2.height", &door_2.height },
{ "door_2.step_offset", &door_2.step_offset },
{ "door_2.step_delay", &door_2.step_delay },
{ "door_2.anim_mode", &door_2.anim_mode },
" \"print helptext.conf\" print default helptext config\n"
" \"dump level FILE\" dump level data from FILE\n"
" \"dump tape FILE\" dump tape data from FILE\n"
- " \"autoplay LEVELDIR [NR]\" play level tapes for LEVELDIR\n"
+ " \"autoplay LEVELDIR [NR ...]\" play level tapes for LEVELDIR\n"
" \"convert LEVELDIR [NR]\" convert levels in LEVELDIR\n"
"\n",
program.command_basename);