#include "game.h"
#include "events.h"
-GC tile_clip_gc;
#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 Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-short Frame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-short GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA];
+short ExplodePhase[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-unsigned long Elementeigenschaften1[MAX_ELEMENTS];
-unsigned long Elementeigenschaften2[MAX_ELEMENTS];
+
+unsigned long Properties1[MAX_NUM_ELEMENTS];
+unsigned long Properties2[MAX_NUM_ELEMENTS];
+
+int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+short GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
int lev_fieldx,lev_fieldy, scroll_x,scroll_y;
struct FileInfo *image_files;
struct FileInfo *sound_files;
-struct ElementInfo element_info[MAX_ELEMENTS] =
+struct ElementInfo element_info[MAX_NUM_ELEMENTS] =
{
+ /* "real" level file elements */
+
{ "empty_space", "empty space" }, /* 0 */
{ "sand", "sand" },
{ "wall", "normal wall" },
{ "bomb", "bomb" },
{ "magic_wall", "magic wall" }, /* 20 */
{ "speed_pill", "speed pill" },
- { "acid", "acid pool" },
+ { "acid", "acid" },
{ "amoeba", "dropping amoeba" },
{ "amoeba", "normal amoeba" },
{ "nut", "nut with emerald" },
{ "gameoflife", "Conway's wall of life" },
{ "biomaze", "biomaze" },
{ "dynamite", "burning dynamite" },
- { NULL, "unknown" },
+ { "wall", "wall" },
{ "robot_wheel", "magic wheel" }, /* 30 */
{ "robot_wheel", "magic wheel (running)" },
{ "key", "red key" },
{ "dark_yamyam", "dark yam yam" }, /* 60 */
{ "bd_magic_wall", "magic wall (BD style)" },
{ "wall", "invisible steel wall" },
- { NULL, "-" },
+
+ { NULL, "(not used)" },
+
{ "dynabomb_nr", "increases number of bombs" },
{ "dynabomb_sz", "increases explosion size" },
{ "dynabomb_xl", "increases power of explosion" },
{ "emerald", "purple emerald" },
{ "wall", "wall with red emerald" },
{ "wall", "wall with purple emerald" },
- { NULL, "unknown" }, /* 100 */
- { NULL, "unknown" },
- { NULL, "unknown" },
- { NULL, "unknown" },
- { NULL, "unknown" },
- { NULL, "normal wall (BD style)" },
+ { "wall", "acid pool (top left)" }, /* 100 */
+ { "wall", "acid pool (top right)" },
+ { "wall", "acid pool (bottom left)" },
+ { "wall", "acid pool (bottom)" },
+ { "wall", "acid pool (bottom right)" },
+ { "wall", "normal wall (BD style)" },
{ "bd_rock", "rock (BD style)" },
{ "exit", "open exit" },
{ NULL, "black orb bomb" },
{ "gate", "gray door (EM style, yellow key)"},
{ "gate", "gray door (EM style, green key)"},
{ "gate", "gray door (EM style, blue key)"},
- { NULL, "unknown" },
- { NULL, "unknown" },
+
+ { NULL, "(not used)" },
+ { NULL, "(not used)" },
/* 256 */
{ "mole", "mole (starts moving down)" },
{ "wall", "steel wall (slanted)" },
{ "sand", "invisible sand" },
- { NULL, "dx unknown 15" },
- { NULL, "dx unknown 42" },
- { NULL, "-" },
- { NULL, "-" }, /* 320 */
+
+ { NULL, "dx unknown element 15" },
+ { NULL, "dx unknown element 42" },
+
+ { NULL, "(not used)" },
+ { NULL, "(not used)" }, /* 320 */
+
{ "shield_deadly", "shield (deadly, kills enemies)"},
{ "timegate", "time gate (open)" },
{ "timegate", "time gate (closed)" },
{ "spring", "spring" },
{ "trap", "trap" },
{ "dx_bomb", "stable bomb (DX style)" },
- { NULL, "-" }
+ { NULL, "-" },
+ { NULL, "-" },
+ { "custom", "custom element 1" }, /* 360 */
+ { "custom", "custom element 2" },
+ { "custom", "custom element 3" },
+ { "custom", "custom element 4" },
+ { "custom", "custom element 5" },
+ { "custom", "custom element 6" },
+ { "custom", "custom element 7" },
+ { "custom", "custom element 8" },
+ { "custom", "custom element 9" },
+ { "custom", "custom element 10" },
+ { "custom", "custom element 11" }, /* 370 */
+ { "custom", "custom element 12" },
+ { "custom", "custom element 13" },
+ { "custom", "custom element 14" },
+ { "custom", "custom element 15" },
+ { "custom", "custom element 16" },
+ { "custom", "custom element 17" },
+ { "custom", "custom element 18" },
+ { "custom", "custom element 19" },
+ { "custom", "custom element 20" },
+ { "custom", "custom element 21" }, /* 380 */
+ { "custom", "custom element 22" },
+ { "custom", "custom element 23" },
+ { "custom", "custom element 24" },
+ { "custom", "custom element 25" },
+ { "custom", "custom element 26" },
+ { "custom", "custom element 27" },
+ { "custom", "custom element 28" },
+ { "custom", "custom element 29" },
+ { "custom", "custom element 30" },
+ { "custom", "custom element 31" }, /* 390 */
+ { "custom", "custom element 32" },
+ { "custom", "custom element 33" },
+ { "custom", "custom element 34" },
+ { "custom", "custom element 35" },
+ { "custom", "custom element 36" },
+ { "custom", "custom element 37" },
+ { "custom", "custom element 38" },
+ { "custom", "custom element 39" },
+ { "custom", "custom element 40" },
+ { "custom", "custom element 41" }, /* 400 */
+ { "custom", "custom element 42" },
+ { "custom", "custom element 43" },
+ { "custom", "custom element 44" },
+ { "custom", "custom element 45" },
+ { "custom", "custom element 46" },
+ { "custom", "custom element 47" },
+ { "custom", "custom element 48" },
+ { "custom", "custom element 49" },
+ { "custom", "custom element 50" },
+ { "custom", "custom element 51" }, /* 410 */
+ { "custom", "custom element 52" },
+ { "custom", "custom element 53" },
+ { "custom", "custom element 54" },
+ { "custom", "custom element 55" },
+ { "custom", "custom element 56" },
+ { "custom", "custom element 57" },
+ { "custom", "custom element 58" },
+ { "custom", "custom element 59" },
+ { "custom", "custom element 60" },
+ { "custom", "custom element 61" }, /* 420 */
+ { "custom", "custom element 62" },
+ { "custom", "custom element 63" },
+ { "custom", "custom element 64" },
+ { "custom", "custom element 65" },
+ { "custom", "custom element 66" },
+ { "custom", "custom element 67" },
+ { "custom", "custom element 68" },
+ { "custom", "custom element 69" },
+ { "custom", "custom element 70" },
+ { "custom", "custom element 71" }, /* 430 */
+ { "custom", "custom element 72" },
+ { "custom", "custom element 73" },
+ { "custom", "custom element 74" },
+ { "custom", "custom element 75" },
+ { "custom", "custom element 76" },
+ { "custom", "custom element 77" },
+ { "custom", "custom element 78" },
+ { "custom", "custom element 79" },
+ { "custom", "custom element 80" },
+ { "custom", "custom element 81" }, /* 440 */
+ { "custom", "custom element 82" },
+ { "custom", "custom element 83" },
+ { "custom", "custom element 84" },
+ { "custom", "custom element 85" },
+ { "custom", "custom element 86" },
+ { "custom", "custom element 87" },
+ { "custom", "custom element 88" },
+ { "custom", "custom element 89" },
+ { "custom", "custom element 90" },
+ { "custom", "custom element 91" }, /* 450 */
+ { "custom", "custom element 92" },
+ { "custom", "custom element 93" },
+ { "custom", "custom element 94" },
+ { "custom", "custom element 95" },
+ { "custom", "custom element 96" },
+ { "custom", "custom element 97" },
+ { "custom", "custom element 98" },
+ { "custom", "custom element 99" },
+ { "custom", "custom element 100" },
+ { "custom", "custom element 101" }, /* 460 */
+ { "custom", "custom element 102" },
+ { "custom", "custom element 103" },
+ { "custom", "custom element 104" },
+ { "custom", "custom element 105" },
+ { "custom", "custom element 106" },
+ { "custom", "custom element 107" },
+ { "custom", "custom element 108" },
+ { "custom", "custom element 109" },
+ { "custom", "custom element 110" },
+ { "custom", "custom element 111" }, /* 470 */
+ { "custom", "custom element 112" },
+ { "custom", "custom element 113" },
+ { "custom", "custom element 114" },
+ { "custom", "custom element 115" },
+ { "custom", "custom element 116" },
+ { "custom", "custom element 117" },
+ { "custom", "custom element 118" },
+ { "custom", "custom element 119" },
+ { "custom", "custom element 120" },
+ { "custom", "custom element 121" }, /* 480 */
+ { "custom", "custom element 122" },
+ { "custom", "custom element 123" },
+ { "custom", "custom element 124" },
+ { "custom", "custom element 125" },
+ { "custom", "custom element 126" },
+ { "custom", "custom element 127" },
+ { "custom", "custom element 128" },
+
+ /* "real" (and therefore drawable) runtime elements */
+
+ { "key", "-" },
+ { "key", "-" },
+ { "key", "-" }, /* 490 */
+ { "key", "-" },
+ { "dynabomb", "-" },
+ { "dynabomb", "-" },
+ { "dynabomb", "-" },
+ { "dynabomb", "-" },
+ { "switchgate", "-" },
+ { "switchgate", "-" },
+ { "timegate", "-" },
+ { "timegate", "-" },
+ { "pearl", "-" }, /* 500 */
+ { "trap", "-" },
+ { "wall", "-" },
+ { "wall", "-" },
+ { "sand", "-" },
+ { "conveyor_belt", "-" },
+ { "conveyor_belt", "-" },
+ { "conveyor_belt", "-" },
+ { "conveyor_belt", "-" },
+ { "conveyor_belt", "-" },
+ { "conveyor_belt", "-" }, /* 510 */
+ { "conveyor_belt", "-" },
+ { "conveyor_belt", "-" },
+ { "conveyor_belt", "-" },
+ { "conveyor_belt", "-" },
+ { "conveyor_belt", "-" },
+ { "conveyor_belt", "-" },
+ { "exit", "-" },
+ { "sp_exit", "-" },
+ { "sp_terminal", "-" },
+ { "sp_buggy_base", "-" }, /* 520 */
+ { "sp_buggy_base", "-" },
+ { "murphy_clone", "-" },
+ { "amoeba", "-" },
+ { "quicksand", "-" },
+ { "magic_wall", "-" },
+ { "magic_wall", "-" },
+ { "magic_wall", "-" },
+ { "magic_wall", "-" },
+ { "magic_wall", "-" },
+ { "magic_wall", "-" }, /* 530 */
+ { "magic_wall", "-" },
+ { "magic_wall", "-" },
- /*
- "-------------------------------",
- */
+ { NULL, "-" }
};
+#if 0
struct GraphicInfo graphic_info[MAX_GRAPHICS];
+#endif
struct NewGraphicInfo new_graphic_info[NUM_IMAGE_FILES];