X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=6935fc82d99c1a058fefa609ea009469a217618d;hb=72b2940bea34cebf61175bc62a474cb78dcec467;hp=a80393344f993fccaf72e302fc65420c71ba33b9;hpb=c878cb2be6a0bffee850bf4f2dcb1939d5d2cd4f;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index a8039334..6935fc82 100644 --- a/src/init.c +++ b/src/init.c @@ -17,10 +17,14 @@ #include "misc.h" #include "sound.h" #include "screens.h" +#include "editor.h" +#include "game.h" +#include "tape.h" #include "tools.h" #include "files.h" #include "joystick.h" #include "image.h" +#include "pcx.h" #include "network.h" #include "netserv.h" @@ -46,6 +50,7 @@ static void InitSoundServer(void); static void InitWindow(int, char **); static void InitGfx(void); static void LoadGfx(int, struct PictureFileInfo *); +static void InitGadgets(void); static void InitElementProperties(void); void OpenAll(int argc, char *argv[]) @@ -77,6 +82,7 @@ void OpenAll(int argc, char *argv[]) InitGfx(); InitElementProperties(); + InitGadgets(); DrawMainMenu(); @@ -105,21 +111,25 @@ void InitLevelAndPlayerInfo() void InitNetworkServer() { +#ifndef MSDOS int nr_wanted; +#endif if (!options.network) return; +#ifndef MSDOS nr_wanted = Request("Choose player", REQ_PLAYER | REQ_STAY_CLOSED); if (!ConnectToServer(options.server_host, options.server_port)) - Error(ERR_EXIT, "cannot connect to multiplayer server"); + Error(ERR_EXIT, "cannot connect to network game server"); - SendToServer_Nickname(setup.player_name); + SendToServer_PlayerName(setup.player_name); SendToServer_ProtocolVersion(); if (nr_wanted) SendToServer_NrWanted(nr_wanted); +#endif } void InitSound() @@ -155,20 +165,21 @@ void InitSound() */ #endif -#else +#else /* MSDOS */ sound_loops_allowed = TRUE; /* setup.sound_loops_on = TRUE; */ -#endif +#endif /* MSDOS */ for(i=0; i= num_joysticks) + joystick_nr = -1; + + /* misuse joystick file descriptor variable to store joystick number */ + stored_player[i].joystick_fd = joystick_nr; + } #endif } void InitDisplay() { +#ifndef MSDOS XVisualInfo vinfo_template, *vinfo; int num_visuals; +#endif unsigned int depth; /* connect to X server */ @@ -271,6 +309,7 @@ void InitDisplay() depth = DefaultDepth(display, screen); cmap = DefaultColormap(display, screen); +#ifndef MSDOS /* look for good enough visual */ vinfo_template.screen = screen; vinfo_template.class = (depth == 8 ? PseudoColor : TrueColor); @@ -295,29 +334,33 @@ void InitDisplay() printf("Sorry, cannot get appropriate visual.\n"); exit(-1); } +#endif } void InitWindow(int argc, char *argv[]) { unsigned int border_width = 4; + XGCValues gc_values; + unsigned long gc_valuemask; +#ifndef MSDOS + XTextProperty windowName, iconName; Pixmap icon_pixmap, iconmask_pixmap; - unsigned int icon_width,icon_height; - int icon_hot_x,icon_hot_y; + unsigned int icon_width, icon_height; + int icon_hot_x, icon_hot_y; char icon_filename[256]; XSizeHints size_hints; XWMHints wm_hints; XClassHint class_hints; - XTextProperty windowName, iconName; - XGCValues gc_values; - unsigned long gc_valuemask; - char *window_name = WINDOWTITLE_STRING; - char *icon_name = WINDOWTITLE_STRING; + char *window_name = WINDOW_TITLE_STRING; + char *icon_name = WINDOW_TITLE_STRING; long window_event_mask; Atom proto_atom = None, delete_atom = None; +#endif int screen_width, screen_height; int win_xpos = WIN_XPOS, win_ypos = WIN_YPOS; unsigned long pen_fg = WhitePixel(display,screen); unsigned long pen_bg = BlackPixel(display,screen); + const int width = WIN_XSIZE, height = WIN_YSIZE; #ifndef MSDOS static struct IconFileInfo icon_pic = @@ -330,9 +373,6 @@ void InitWindow(int argc, char *argv[]) screen_width = XDisplayWidth(display, screen); screen_height = XDisplayHeight(display, screen); - width = WIN_XSIZE; - height = WIN_YSIZE; - win_xpos = (screen_width - width) / 2; win_ypos = (screen_height - height) / 2; @@ -399,9 +439,11 @@ void InitWindow(int argc, char *argv[]) XFree(iconName.value); /* Select event types wanted */ - window_event_mask = ExposureMask | StructureNotifyMask | FocusChangeMask | - ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | - KeyPressMask | KeyReleaseMask; + window_event_mask = + ExposureMask | StructureNotifyMask | FocusChangeMask | + ButtonPressMask | ButtonReleaseMask | PointerMotionMask | + PointerMotionHintMask | KeyPressMask | KeyReleaseMask; + XSelectInput(display, window, window_event_mask); #endif @@ -438,6 +480,7 @@ void InitGfx() { "Door", TRUE }, { "Heroes", TRUE }, { "Toons", TRUE }, + { "More", TRUE }, { "Font", FALSE }, { "Font2", FALSE } }; @@ -448,11 +491,27 @@ void InitGfx() { "RocksDoor", TRUE }, { "RocksHeroes", TRUE }, { "RocksToons", TRUE }, + { "RocksMore", TRUE }, { "RocksFont", FALSE }, { "RocksFont2", FALSE } }; #endif +#ifdef DEBUG +#if 0 + static struct PictureFileInfo test_pic1 = + { + "RocksFont2", + FALSE + }; + static struct PictureFileInfo test_pic2 = + { + "mouse", + FALSE + }; +#endif +#endif + static struct { int start; @@ -484,6 +543,15 @@ void InitGfx() { GFX_SPIELER4_RIGHT, 4 }, { GFX_SPIELER4_PUSH_LEFT, 4 }, { GFX_SPIELER4_PUSH_RIGHT, 4 }, + { GFX_SP_MURPHY, 1 }, + { GFX_MURPHY_GO_LEFT, 3 }, + { GFX_MURPHY_GO_RIGHT, 3 }, + { GFX_MURPHY_SNAP_UP, 1 }, + { GFX_MURPHY_SNAP_DOWN, 1 }, + { GFX_MURPHY_SNAP_RIGHT, 1 }, + { GFX_MURPHY_SNAP_LEFT, 1 }, + { GFX_MURPHY_PUSH_RIGHT, 1 }, + { GFX_MURPHY_PUSH_LEFT, 1 }, { GFX_GEBLUBBER, 4 }, { GFX_DYNAMIT, 7 }, { GFX_DYNABOMB, 4 }, @@ -498,13 +566,26 @@ void InitGfx() debug_print_timestamp(0, NULL); /* initialize timestamp function */ #endif +#ifdef DEBUG +#if 0 + printf("Test: Loading RocksFont2.pcx ...\n"); + LoadGfx(PIX_SMALLFONT,&test_pic1); + printf("Test: Done.\n"); + printf("Test: Loading mouse.pcx ...\n"); + LoadGfx(PIX_SMALLFONT,&test_pic2); + printf("Test: Done.\n"); +#endif +#endif + + + LoadGfx(PIX_SMALLFONT,&pic[PIX_SMALLFONT]); - DrawInitText(WINDOWTITLE_STRING,20,FC_YELLOW); + DrawInitText(WINDOW_TITLE_STRING,20,FC_YELLOW); DrawInitText(COPYRIGHT_STRING,50,FC_RED); #ifdef MSDOS DrawInitText("MSDOS version done by Guido Schulz",210,FC_BLUE); rest(200); -#endif MSDOS +#endif /* MSDOS */ DrawInitText("Loading graphics:",120,FC_GREEN); for(i=0; i= GFX_START_ROCKSSCREEN && graphic <= GFX_END_ROCKSSCREEN) { @@ -576,6 +658,14 @@ void InitGfx() } else break; +#else + + int pixmap_nr; + + getGraphicSource(graphic, &pixmap_nr, &src_x, &src_y); + src_pixmap = clipmask[pixmap_nr]; + +#endif tile_clipmask[tile] = XCreatePixmap(display, window, TILEX,TILEY, 1); @@ -643,7 +733,7 @@ void LoadGfx(int pos, struct PictureFileInfo *pic) #ifdef MSDOS rest(100); -#endif MSDOS +#endif /* MSDOS */ #if DEBUG_TIMING debug_print_timestamp(1, NULL); /* initialize timestamp function */ @@ -676,8 +766,8 @@ void LoadGfx(int pos, struct PictureFileInfo *pic) #else /* !USE_XPM_LIBRARY */ - pcx_err = Read_PCX_to_Pixmaps(display, window, gc, filename, - &pix[pos], &clipmask[pos]); + pcx_err = Read_PCX_to_Pixmap(display, window, gc, filename, + &pix[pos], &clipmask[pos]); switch(pcx_err) { case PCX_Success: @@ -750,6 +840,14 @@ void LoadGfx(int pos, struct PictureFileInfo *pic) } } +void InitGadgets() +{ + CreateLevelEditorGadgets(); + CreateGameButtons(); + CreateTapeButtons(); + CreateToolButtons(); +} + void InitElementProperties() { int i,j; @@ -778,7 +876,11 @@ void InitElementProperties() EL_SCHLUESSEL1, EL_SCHLUESSEL2, EL_SCHLUESSEL3, - EL_SCHLUESSEL4 + EL_SCHLUESSEL4, + EL_EM_KEY_1, + EL_EM_KEY_2, + EL_EM_KEY_3, + EL_EM_KEY_4 }; static int ep_schluessel_num = sizeof(ep_schluessel)/sizeof(int); @@ -791,7 +893,15 @@ void InitElementProperties() EL_PFORTE1X, EL_PFORTE2X, EL_PFORTE3X, - EL_PFORTE4X + EL_PFORTE4X, + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, + EL_EM_GATE_1X, + EL_EM_GATE_2X, + EL_EM_GATE_3X, + EL_EM_GATE_4X }; static int ep_pforte_num = sizeof(ep_pforte)/sizeof(int); @@ -814,11 +924,13 @@ void InitElementProperties() EL_AMOEBE_BD, EL_MORAST_VOLL, EL_MORAST_LEER, - EL_SIEB_VOLL, + EL_SIEB_INAKTIV, EL_SIEB_LEER, + EL_SIEB_VOLL, EL_SIEB_TOT, - EL_SIEB2_VOLL, + EL_SIEB2_INAKTIV, EL_SIEB2_LEER, + EL_SIEB2_VOLL, EL_SIEB2_TOT, EL_LIFE, EL_LIFE_ASYNC, @@ -826,11 +938,30 @@ void InitElementProperties() EL_BADEWANNE2, EL_BADEWANNE3, EL_BADEWANNE4, - EL_BADEWANNE5 + EL_BADEWANNE5, + EL_SP_CHIP_SINGLE, + EL_SP_CHIP_LEFT, + EL_SP_CHIP_RIGHT, + EL_SP_CHIP_UPPER, + EL_SP_CHIP_LOWER, + EL_SP_HARD_GRAY, + EL_SP_HARD_GREEN, + EL_SP_HARD_BLUE, + EL_SP_HARD_RED, + EL_SP_HARD_YELLOW, + EL_SP_HARD_BASE1, + EL_SP_HARD_BASE2, + EL_SP_HARD_BASE3, + EL_SP_HARD_BASE4, + EL_SP_HARD_BASE5, + EL_SP_HARD_BASE6, + EL_SP_TERMINAL, + EL_SP_EXIT, + EL_INVISIBLE_STEEL }; static int ep_solid_num = sizeof(ep_solid)/sizeof(int); - static int ep_massiv[] = + static int ep_massive[] = { EL_BETON, EL_SALZSAEURE, @@ -846,9 +977,29 @@ void InitElementProperties() EL_PFORTE1X, EL_PFORTE2X, EL_PFORTE3X, - EL_PFORTE4X + EL_PFORTE4X, + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, + EL_EM_GATE_1X, + EL_EM_GATE_2X, + EL_EM_GATE_3X, + EL_EM_GATE_4X, + EL_SP_HARD_GRAY, + EL_SP_HARD_GREEN, + EL_SP_HARD_BLUE, + EL_SP_HARD_RED, + EL_SP_HARD_YELLOW, + EL_SP_HARD_BASE1, + EL_SP_HARD_BASE2, + EL_SP_HARD_BASE3, + EL_SP_HARD_BASE4, + EL_SP_HARD_BASE5, + EL_SP_HARD_BASE6, + EL_INVISIBLE_STEEL }; - static int ep_massiv_num = sizeof(ep_massiv)/sizeof(int); + static int ep_massive_num = sizeof(ep_massive)/sizeof(int); static int ep_slippery[] = { @@ -870,7 +1021,15 @@ void InitElementProperties() EL_BIRNE_AUS, EL_BADEWANNE1, EL_BADEWANNE2, - EL_SONDE + EL_SONDE, + EL_SP_ZONK, + EL_SP_INFOTRON, + EL_SP_CHIP_SINGLE, + EL_SP_CHIP_LEFT, + EL_SP_CHIP_RIGHT, + EL_SP_CHIP_UPPER, + EL_SP_CHIP_LOWER, + EL_SPEED_PILL }; static int ep_slippery_num = sizeof(ep_slippery)/sizeof(int); @@ -883,7 +1042,9 @@ void InitElementProperties() EL_MAMPFER, EL_MAMPFER2, EL_ROBOT, - EL_PACMAN + EL_PACMAN, + EL_SP_SNIKSNAK, + EL_SP_ELECTRON }; static int ep_enemy_num = sizeof(ep_enemy)/sizeof(int); @@ -898,6 +1059,14 @@ void InitElementProperties() EL_PFORTE2X, EL_PFORTE3X, EL_PFORTE4X, + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, + EL_EM_GATE_1X, + EL_EM_GATE_2X, + EL_EM_GATE_3X, + EL_EM_GATE_4X, EL_AUSGANG_ZU, EL_AUSGANG_ACT, EL_AUSGANG_AUF, @@ -907,7 +1076,26 @@ void InitElementProperties() EL_MAUER_X, EL_MAUER_Y, EL_MAUER_XY, - EL_MAUERND + EL_MAUERND, + EL_SP_CHIP_SINGLE, + EL_SP_CHIP_LEFT, + EL_SP_CHIP_RIGHT, + EL_SP_CHIP_UPPER, + EL_SP_CHIP_LOWER, + EL_SP_HARD_GRAY, + EL_SP_HARD_GREEN, + EL_SP_HARD_BLUE, + EL_SP_HARD_RED, + EL_SP_HARD_YELLOW, + EL_SP_HARD_BASE1, + EL_SP_HARD_BASE2, + EL_SP_HARD_BASE3, + EL_SP_HARD_BASE4, + EL_SP_HARD_BASE5, + EL_SP_HARD_BASE6, + EL_SP_TERMINAL, + EL_SP_EXIT, + EL_INVISIBLE_STEEL }; static int ep_mauer_num = sizeof(ep_mauer)/sizeof(int); @@ -927,7 +1115,10 @@ void InitElementProperties() EL_SIEB_VOLL, EL_SIEB2_VOLL, EL_ZEIT_VOLL, - EL_ZEIT_LEER + EL_ZEIT_LEER, + EL_SP_ZONK, + EL_SP_INFOTRON, + EL_SP_DISK_ORANGE }; static int ep_can_fall_num = sizeof(ep_can_fall)/sizeof(int); @@ -944,11 +1135,18 @@ void InitElementProperties() EL_SCHLUESSEL2, EL_SCHLUESSEL3, EL_SCHLUESSEL4, + EL_EM_KEY_1, + EL_EM_KEY_2, + EL_EM_KEY_3, + EL_EM_KEY_4, EL_BOMBE, EL_KOKOSNUSS, EL_TROPFEN, EL_ZEIT_VOLL, - EL_ZEIT_LEER + EL_ZEIT_LEER, + EL_SP_ZONK, + EL_SP_INFOTRON, + EL_SP_DISK_ORANGE }; static int ep_can_smash_num = sizeof(ep_can_smash)/sizeof(int); @@ -978,7 +1176,9 @@ void InitElementProperties() EL_PINGUIN, EL_SCHWEIN, EL_DRACHE, - EL_SONDE + EL_SONDE, + EL_SP_SNIKSNAK, + EL_SP_ELECTRON }; static int ep_can_move_num = sizeof(ep_can_move)/sizeof(int); @@ -1027,7 +1227,10 @@ void InitElementProperties() EL_ROBOT, EL_PACMAN, EL_TROPFEN, - EL_SALZSAEURE + EL_SALZSAEURE, + EL_SP_SNIKSNAK, + EL_SP_ELECTRON, + EL_SP_BUG_ACTIVE }; static int ep_dont_go_to_num = sizeof(ep_dont_go_to)/sizeof(int); @@ -1063,7 +1266,7 @@ void InitElementProperties() EL_FELSBODEN, EL_FELSBROCKEN, EL_EDELSTEIN_BD, - EL_SIEB2_LEER, + EL_SIEB2_INAKTIV, EL_AUSGANG_ZU, EL_AUSGANG_AUF, EL_BETON, @@ -1090,7 +1293,8 @@ void InitElementProperties() EL_SOKOBAN_OBJEKT, EL_SOKOBAN_FELD_LEER, EL_SOKOBAN_FELD_VOLL, - EL_SPIELFIGUR + EL_SPIELFIGUR, + EL_INVISIBLE_STEEL }; static int ep_sb_element_num = sizeof(ep_sb_element)/sizeof(int); @@ -1101,7 +1305,8 @@ void InitElementProperties() EL_EDELSTEIN_GELB, EL_EDELSTEIN_ROT, EL_EDELSTEIN_LILA, - EL_DIAMANT + EL_DIAMANT, + EL_SP_INFOTRON }; static int ep_gem_num = sizeof(ep_gem)/sizeof(int); @@ -1121,6 +1326,10 @@ void InitElementProperties() EL_SCHLUESSEL2, EL_SCHLUESSEL3, EL_SCHLUESSEL4, + EL_EM_KEY_1, + EL_EM_KEY_2, + EL_EM_KEY_3, + EL_EM_KEY_4, EL_PFORTE1, EL_PFORTE2, EL_PFORTE3, @@ -1129,6 +1338,14 @@ void InitElementProperties() EL_PFORTE2X, EL_PFORTE3X, EL_PFORTE4X, + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, + EL_EM_GATE_1X, + EL_EM_GATE_2X, + EL_EM_GATE_3X, + EL_EM_GATE_4X, EL_DYNAMIT_AUS, EL_UNSICHTBAR, EL_BIRNE_AUS, @@ -1150,10 +1367,45 @@ void InitElementProperties() EL_BADEWANNE3, EL_BADEWANNE4, EL_BADEWANNE5, + EL_SIEB_INAKTIV, EL_SIEB_TOT, + EL_SIEB2_INAKTIV, EL_SIEB2_TOT, EL_AMOEBA2DIAM, - EL_BLOCKED + EL_BLOCKED, + EL_SP_EMPTY, + EL_SP_BASE, + EL_SP_PORT1_RIGHT, + EL_SP_PORT1_DOWN, + EL_SP_PORT1_LEFT, + EL_SP_PORT1_UP, + EL_SP_PORT2_RIGHT, + EL_SP_PORT2_DOWN, + EL_SP_PORT2_LEFT, + EL_SP_PORT2_UP, + EL_SP_PORT_X, + EL_SP_PORT_Y, + EL_SP_PORT_XY, + EL_SP_DISK_RED, + EL_SP_DISK_YELLOW, + EL_SP_CHIP_SINGLE, + EL_SP_CHIP_LEFT, + EL_SP_CHIP_RIGHT, + EL_SP_CHIP_UPPER, + EL_SP_CHIP_LOWER, + EL_SP_HARD_GRAY, + EL_SP_HARD_GREEN, + EL_SP_HARD_BLUE, + EL_SP_HARD_RED, + EL_SP_HARD_YELLOW, + EL_SP_HARD_BASE1, + EL_SP_HARD_BASE2, + EL_SP_HARD_BASE3, + EL_SP_HARD_BASE4, + EL_SP_HARD_BASE5, + EL_SP_HARD_BASE6, + EL_SP_EXIT, + EL_INVISIBLE_STEEL }; static int ep_inactive_num = sizeof(ep_inactive)/sizeof(int); @@ -1171,7 +1423,12 @@ void InitElementProperties() EL_PINGUIN, EL_SCHWEIN, EL_DRACHE, - EL_SONDE + EL_SONDE, + EL_SP_DISK_RED, + EL_SP_DISK_ORANGE, + EL_SP_DISK_YELLOW, + EL_SP_SNIKSNAK, + EL_SP_ELECTRON }; static int ep_explosive_num = sizeof(ep_explosive)/sizeof(int); @@ -1194,7 +1451,10 @@ void InitElementProperties() EL_ZEIT_LEER, EL_SOKOBAN_FELD_VOLL, EL_SOKOBAN_OBJEKT, - EL_SONDE + EL_SONDE, + EL_SP_ZONK, + EL_SP_DISK_ORANGE, + EL_SP_DISK_YELLOW }; static int ep_pushable_num = sizeof(ep_pushable)/sizeof(int); @@ -1208,6 +1468,109 @@ void InitElementProperties() }; static int ep_player_num = sizeof(ep_player)/sizeof(int); + static int ep_has_content[] = + { + EL_MAMPFER, + EL_AMOEBE_NASS, + EL_AMOEBE_NORM, + EL_AMOEBE_VOLL, + EL_AMOEBE_BD + }; + static int ep_has_content_num = sizeof(ep_has_content)/sizeof(int); + + static int ep_eatable[] = + { + EL_ERDREICH, + EL_SP_BASE, + EL_SP_BUG + }; + static int ep_eatable_num = sizeof(ep_eatable)/sizeof(int); + + static int ep_sp_element[] = + { + EL_SP_EMPTY, + EL_SP_ZONK, + EL_SP_BASE, + EL_SP_MURPHY, + EL_SP_INFOTRON, + EL_SP_CHIP_SINGLE, + EL_SP_HARD_GRAY, + EL_SP_EXIT, + EL_SP_DISK_ORANGE, + EL_SP_PORT1_RIGHT, + EL_SP_PORT1_DOWN, + EL_SP_PORT1_LEFT, + EL_SP_PORT1_UP, + EL_SP_PORT2_RIGHT, + EL_SP_PORT2_DOWN, + EL_SP_PORT2_LEFT, + EL_SP_PORT2_UP, + EL_SP_SNIKSNAK, + EL_SP_DISK_YELLOW, + EL_SP_TERMINAL, + EL_SP_DISK_RED, + EL_SP_PORT_Y, + EL_SP_PORT_X, + EL_SP_PORT_XY, + EL_SP_ELECTRON, + EL_SP_BUG, + EL_SP_CHIP_LEFT, + EL_SP_CHIP_RIGHT, + EL_SP_HARD_BASE1, + EL_SP_HARD_GREEN, + EL_SP_HARD_BLUE, + EL_SP_HARD_RED, + EL_SP_HARD_YELLOW, + EL_SP_HARD_BASE2, + EL_SP_HARD_BASE3, + EL_SP_HARD_BASE4, + EL_SP_HARD_BASE5, + EL_SP_HARD_BASE6, + EL_SP_CHIP_UPPER, + EL_SP_CHIP_LOWER + }; + static int ep_sp_element_num = sizeof(ep_sp_element)/sizeof(int); + + static int ep_quick_gate[] = + { + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, + EL_EM_GATE_1X, + EL_EM_GATE_2X, + EL_EM_GATE_3X, + EL_EM_GATE_4X, + EL_SP_PORT1_LEFT, + EL_SP_PORT2_LEFT, + EL_SP_PORT1_RIGHT, + EL_SP_PORT2_RIGHT, + EL_SP_PORT1_UP, + EL_SP_PORT2_UP, + EL_SP_PORT1_DOWN, + EL_SP_PORT2_DOWN, + EL_SP_PORT_X, + EL_SP_PORT_Y, + EL_SP_PORT_XY + }; + static int ep_quick_gate_num = sizeof(ep_quick_gate)/sizeof(int); + + static int ep_over_player[] = + { + EL_SP_PORT1_LEFT, + EL_SP_PORT2_LEFT, + EL_SP_PORT1_RIGHT, + EL_SP_PORT2_RIGHT, + EL_SP_PORT1_UP, + EL_SP_PORT2_UP, + EL_SP_PORT1_DOWN, + EL_SP_PORT2_DOWN, + EL_SP_PORT_X, + EL_SP_PORT_Y, + EL_SP_PORT_XY + }; + static int ep_over_player_num = sizeof(ep_over_player)/sizeof(int); + static long ep_bit[] = { EP_BIT_AMOEBALIVE, @@ -1215,7 +1578,7 @@ void InitElementProperties() EP_BIT_SCHLUESSEL, EP_BIT_PFORTE, EP_BIT_SOLID, - EP_BIT_MASSIV, + EP_BIT_MASSIVE, EP_BIT_SLIPPERY, EP_BIT_ENEMY, EP_BIT_MAUER, @@ -1234,7 +1597,12 @@ void InitElementProperties() EP_BIT_EXPLOSIVE, EP_BIT_MAMPF3, EP_BIT_PUSHABLE, - EP_BIT_PLAYER + EP_BIT_PLAYER, + EP_BIT_HAS_CONTENT, + EP_BIT_EATABLE, + EP_BIT_SP_ELEMENT, + EP_BIT_QUICK_GATE, + EP_BIT_OVER_PLAYER }; static int *ep_array[] = { @@ -1243,7 +1611,7 @@ void InitElementProperties() ep_schluessel, ep_pforte, ep_solid, - ep_massiv, + ep_massive, ep_slippery, ep_enemy, ep_mauer, @@ -1262,7 +1630,12 @@ void InitElementProperties() ep_explosive, ep_mampf3, ep_pushable, - ep_player + ep_player, + ep_has_content, + ep_eatable, + ep_sp_element, + ep_quick_gate, + ep_over_player }; static int *ep_num[] = { @@ -1271,7 +1644,7 @@ void InitElementProperties() &ep_schluessel_num, &ep_pforte_num, &ep_solid_num, - &ep_massiv_num, + &ep_massive_num, &ep_slippery_num, &ep_enemy_num, &ep_mauer_num, @@ -1290,7 +1663,12 @@ void InitElementProperties() &ep_explosive_num, &ep_mampf3_num, &ep_pushable_num, - &ep_player_num + &ep_player_num, + &ep_has_content_num, + &ep_eatable_num, + &ep_sp_element_num, + &ep_quick_gate_num, + &ep_over_player_num }; static int num_properties = sizeof(ep_num)/sizeof(int *); @@ -1344,5 +1722,9 @@ void CloseAllAndExit(int exit_value) XCloseDisplay(display); } +#ifdef MSDOS + dumpErrorFile(); +#endif + exit(exit_value); }