X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=04259035c0974130239dba5b7af61c46142cab1b;hb=9a7426789c04bf396df78eb915522f9e57af985e;hp=ec0a1c74a26369bf9e7361bc3b3c063552ce73a8;hpb=d0893e6987c21c25ec137438a18cfe1288362139;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index ec0a1c74..04259035 100644 --- a/src/init.c +++ b/src/init.c @@ -1,456 +1,1609 @@ /*********************************************************** -* Rocks'n'Diamonds -- McDuffin Strikes Back! * +* Rocks'n'Diamonds -- McDuffin Strikes Back! * *----------------------------------------------------------* -* ©1995 Artsoft Development * -* Holger Schemel * -* 33659 Bielefeld-Senne * -* Telefon: (0521) 493245 * -* eMail: aeglos@valinor.owl.de * -* aeglos@uni-paderborn.de * -* q99492@pbhrzx.uni-paderborn.de * +* (c) 1995-2001 Artsoft Entertainment * +* Holger Schemel * +* Detmolder Strasse 189 * +* 33604 Bielefeld * +* Germany * +* e-mail: info@artsoft.org * *----------------------------------------------------------* -* init.c * -* * -* Letzte Aenderung: 15.06.1995 * +* init.c * ***********************************************************/ +#include "libgame/libgame.h" + #include "init.h" -#include "images.h" -#include "sound.h" +#include "events.h" #include "screens.h" -#include "tools.h" +#include "editor.h" #include "game.h" -#include "misc.h" +#include "tape.h" +#include "tools.h" +#include "files.h" +#include "network.h" +#include "netserv.h" +#include "cartoons.h" +#include "config.h" -#include +static char *image_filename[NUM_PICTURES] = +{ + "RocksScreen.pcx", + "RocksDoor.pcx", + "RocksHeroes.pcx", + "RocksToons.pcx", + "RocksSP.pcx", + "RocksDC.pcx", + "RocksMore.pcx", + "RocksFont.pcx", + "RocksFont2.pcx", + "RocksFont3.pcx" +}; -int sound_process_id=0; +static void InitSetup(void); +static void InitPlayerInfo(void); +static void InitLevelInfo(void); +static void InitArtworkInfo(void); +static void InitNetworkServer(void); +static void InitSoundServer(void); +static void InitSound(void); +static void InitGfx(void); +static void InitGfxBackground(void); +static void InitGadgets(void); +static void InitElementProperties(void); -void OpenAll(int argc, char *argv[]) +void OpenAll(void) { - LoadLevelInfo(); - LoadPlayerInfo(PLAYER_SETUP); - LoadPlayerInfo(PLAYER_LEVEL); + if (options.serveronly) + { +#if defined(PLATFORM_UNIX) + NetworkServer(options.server_port, options.serveronly); +#else + Error(ERR_WARN, "networking only supported in Unix version"); +#endif + exit(0); /* never reached */ + } + + InitProgramInfo(UNIX_USERDATA_DIRECTORY, + PROGRAM_TITLE_STRING, getWindowTitleString(), + ICON_TITLE_STRING, X11_ICON_FILENAME, X11_ICONMASK_FILENAME, + MSDOS_POINTER_FILENAME, + COOKIE_PREFIX, FILENAME_PREFIX, GAME_VERSION_ACTUAL); + + InitSetup(); + InitPlayerInfo(); + InitArtworkInfo(); /* needed before loading gfx, sound & music */ InitCounter(); - InitSound(); - InitSoundProcess(); - InitJoystick(); + InitSoundServer(); + InitJoysticks(); InitRND(NEW_RANDOMIZE); - signal(SIGINT, CloseAll); - signal(SIGTERM, CloseAll); + InitVideoDisplay(); + InitVideoBuffer(&backbuffer, &window, WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH, + setup.fullscreen); + + InitEventFilter(FilterMouseMotionEvents); - InitDisplay(argc, argv); - InitWindow(argc, argv); InitGfx(); + InitElementProperties(); /* initializes IS_CHAR() for el2gfx() */ + + InitLevelInfo(); + InitGadgets(); /* needs to know number of level series */ + InitSound(); /* needs to know current level directory */ + + InitGfxBackground(); + InitToons(); DrawMainMenu(); - XMapWindow(display, window); - XFlush(display); + InitNetworkServer(); } -void InitSound() +void InitSetup() +{ + LoadSetup(); /* global setup info */ +} + +void InitPlayerInfo() { int i; - if (sound_status==SOUND_OFF) + /* choose default local player */ + local_player = &stored_player[0]; + + for (i=0; iconnected = TRUE; +} + +void InitLevelInfo() +{ + LoadLevelInfo(); /* global level info */ + LoadLevelSetup_LastSeries(); /* last played series info */ + LoadLevelSetup_SeriesInfo(); /* last played level info */ +} + +void InitArtworkInfo() +{ + LoadArtworkInfo(); +} + +void InitNetworkServer() +{ +#if defined(PLATFORM_UNIX) + int nr_wanted; +#endif + + if (!options.network) return; - if (access(sound_device_name,W_OK)<0) +#if defined(PLATFORM_UNIX) + nr_wanted = Request("Choose player", REQ_PLAYER | REQ_STAY_CLOSED); + + if (!ConnectToServer(options.server_host, options.server_port)) + Error(ERR_EXIT, "cannot connect to network game server"); + + SendToServer_PlayerName(setup.player_name); + SendToServer_ProtocolVersion(); + + if (nr_wanted) + SendToServer_NrWanted(nr_wanted); +#endif +} + +static void InitSoundServer() +{ + OpenAudio(); + InitSoundList(sound_effects, NUM_SOUND_EFFECTS); + + StartSoundserver(); +} + +static void InitSound() +{ + InitReloadSounds(artwork.snd_current->name); + InitReloadMusic(artwork.mus_current->name); +} + +static void InitTileClipmasks() +{ +#if defined(TARGET_X11) + XGCValues clip_gc_values; + unsigned long clip_gc_valuemask; + +#if defined(TARGET_X11_NATIVE) + GC copy_clipmask_gc; + + static struct { - fprintf(stderr,"%s: cannot access sound device - no sounds\n",progname); - sound_status=SOUND_OFF; - return; + int start; + int count; } + tile_needs_clipping[] = + { + { GFX_SPIELER1_UP, 4 }, + { GFX_SPIELER1_DOWN, 4 }, + { GFX_SPIELER1_LEFT, 4 }, + { GFX_SPIELER1_RIGHT, 4 }, + { GFX_SPIELER1_PUSH_LEFT, 4 }, + { GFX_SPIELER1_PUSH_RIGHT, 4 }, + { GFX_SPIELER2_UP, 4 }, + { GFX_SPIELER2_DOWN, 4 }, + { GFX_SPIELER2_LEFT, 4 }, + { GFX_SPIELER2_RIGHT, 4 }, + { GFX_SPIELER2_PUSH_LEFT, 4 }, + { GFX_SPIELER2_PUSH_RIGHT, 4 }, + { GFX_SPIELER3_UP, 4 }, + { GFX_SPIELER3_DOWN, 4 }, + { GFX_SPIELER3_LEFT, 4 }, + { GFX_SPIELER3_RIGHT, 4 }, + { GFX_SPIELER3_PUSH_LEFT, 4 }, + { GFX_SPIELER3_PUSH_RIGHT, 4 }, + { GFX_SPIELER4_UP, 4 }, + { GFX_SPIELER4_DOWN, 4 }, + { GFX_SPIELER4_LEFT, 4 }, + { 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 }, + { GFX_EXPLOSION, 8 }, + { GFX_SOKOBAN_OBJEKT, 1 }, + { GFX_FUNKELN_BLAU, 3 }, + { GFX_FUNKELN_WEISS, 3 }, + { GFX2_SHIELD_PASSIVE, 3 }, + { GFX2_SHIELD_ACTIVE, 3 }, + { -1, 0 } + }; +#endif /* TARGET_X11_NATIVE */ +#endif /* TARGET_X11 */ - if ((sound_device=open(sound_device_name,O_WRONLY))<0) + int i; + + /* initialize pixmap array for special X11 tile clipping to Pixmap 'None' */ + for(i=0; idrawable, clip_gc_valuemask, &clip_gc_values); + + for(i=0; iclip_mask) + { + clip_gc_values.graphics_exposures = False; + clip_gc_values.clip_mask = pix[i]->clip_mask; + clip_gc_valuemask = GCGraphicsExposures | GCClipMask; + pix[i]->stored_clip_gc = XCreateGC(display, window->drawable, + clip_gc_valuemask, &clip_gc_values); + } } - close(sound_device); - sound_status=SOUND_AVAILABLE; +#if defined(TARGET_X11_NATIVE) -#ifdef VOXWARE - sound_loops_allowed = TRUE; - sound_loops_on = TRUE; -#endif + /* create graphic context structures needed for clipping */ + clip_gc_values.graphics_exposures = False; + clip_gc_valuemask = GCGraphicsExposures; + copy_clipmask_gc = + XCreateGC(display, pix[PIX_BACK]->clip_mask, + clip_gc_valuemask, &clip_gc_values); - for(i=0;i=0; i++) { - Sound[i].name = sound_name[i]; - if (!LoadSound(&Sound[i])) + int j; + + for(j=0; jclip_mask; + + tile_clipmask[tile] = XCreatePixmap(display, window->drawable, + TILEX, TILEY, 1); + + XCopyArea(display, src_pixmap, tile_clipmask[tile], copy_clipmask_gc, + src_x, src_y, TILEX, TILEY, 0, 0); } } + + XFreeGC(display, copy_clipmask_gc); + +#endif /* TARGET_X11_NATIVE */ +#endif /* TARGET_X11 */ } -void InitSoundProcess() +void FreeTileClipmasks() { - if (sound_status==SOUND_OFF) - return; +#if defined(TARGET_X11) + int i; - if (pipe(sound_pipe)<0) + for(i=0; istored_clip_gc) + { + XFreeGC(display, pix[i]->stored_clip_gc); + pix[i]->stored_clip_gc = None; + } + } +#endif /* TARGET_X11 */ } -void InitJoystick() +void InitGfx() { - if (global_joystick_status==JOYSTICK_OFF) - return; + int i; - if (access(joystick_device_name[joystick_nr],R_OK)<0) - { - fprintf(stderr,"%s: cannot access joystick device '%s'\n", - joystick_device_name[joystick_nr],progname); - joystick_status = JOYSTICK_OFF; - return; - } + /* initialize some global variables */ + global.frames_per_second = 0; + global.fps_slowdown = FALSE; + global.fps_slowdown_factor = 1; + + /* initialize screen properties */ + InitGfxFieldInfo(SX, SY, SXSIZE, SYSIZE, + REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE); + InitGfxDoor1Info(DX, DY, DXSIZE, DYSIZE); + InitGfxDoor2Info(VX, VY, VXSIZE, VYSIZE); + InitGfxScrollbufferInfo(FXSIZE, FYSIZE); + + /* create additional image buffers for double-buffering */ + pix[PIX_DB_DOOR] = CreateBitmap(3 * DXSIZE, DYSIZE + VYSIZE, DEFAULT_DEPTH); + pix[PIX_DB_FIELD] = CreateBitmap(FXSIZE, FYSIZE, DEFAULT_DEPTH); + + pix[PIX_SMALLFONT] = LoadCustomImage(image_filename[PIX_SMALLFONT]); - if ((joystick_device=open(joystick_device_name[joystick_nr],O_RDONLY))<0) + InitFontInfo(NULL, NULL, pix[PIX_SMALLFONT]); + + DrawInitText(WINDOW_TITLE_STRING, 20, FC_YELLOW); + DrawInitText(WINDOW_SUBTITLE_STRING, 50, FC_RED); +#if defined(PLATFORM_MSDOS) + DrawInitText(PROGRAM_DOS_PORT_STRING, 210, FC_BLUE); + rest(200); +#endif + DrawInitText("Loading graphics:",120,FC_GREEN); + + for(i=0; iname) { - char *dispstr="-display"; - int len=MAX(strlen(dispstr),strlen(argv[i])); + int i; + + ClearRectangle(window, 0, 0, WIN_XSIZE, WIN_YSIZE); - if (len<4) - continue; - else if (!strncmp(argv[i],dispstr,len)) + for(i=0; iname; } - /* connect to X server */ - if (!(display=XOpenDisplay(display_name))) + if (artwork.sounds_set_current != artwork.snd_current->name) { - fprintf(stderr,"%s: cannot connect to X server %s\n", - progname, XDisplayName(display_name)); - exit(-1); + InitReloadSounds(artwork.snd_current->name); + + artwork.sounds_set_current = artwork.snd_current->name; + } + + if (artwork.music_set_current != artwork.mus_current->name) + { + InitReloadMusic(artwork.mus_current->name); + + artwork.music_set_current = artwork.mus_current->name; } - - screen = DefaultScreen(display); - cmap = DefaultColormap(display, screen); - pen_fg = WhitePixel(display,screen); - pen_bg = BlackPixel(display,screen); } -void InitWindow(int argc, char *argv[]) +void InitGadgets() { - unsigned int border_width = 4; - Pixmap icon_pixmap, iconmask_pixmap; - 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 = "Rocks'n'Diamonds"; - char *icon_name = "Rocks'n'Diamonds"; - long window_event_mask; - - width = WIN_XSIZE; - height = WIN_YSIZE; - - window = XCreateSimpleWindow(display, RootWindow(display, screen), - WIN_XPOS, WIN_YPOS, width, height, border_width, - pen_fg, pen_bg); - - sprintf(icon_filename,"%s/%s",GFX_PATH,icon_pic.picture_filename); - XReadBitmapFile(display,window,icon_filename, - &icon_width,&icon_height, - &icon_pixmap,&icon_hot_x,&icon_hot_y); - if (!icon_pixmap) - { - fprintf(stderr, "%s: cannot read icon bitmap file '%s'.\n", - progname,icon_filename); - exit(-1); - } + CreateLevelEditorGadgets(); + CreateGameButtons(); + CreateTapeButtons(); + CreateToolButtons(); + CreateScreenGadgets(); +} + +void InitElementProperties() +{ + int i,j; - sprintf(icon_filename,"%s/%s",GFX_PATH,icon_pic.picturemask_filename); - XReadBitmapFile(display,window,icon_filename, - &icon_width,&icon_height, - &iconmask_pixmap,&icon_hot_x,&icon_hot_y); - if (!iconmask_pixmap) + static int ep_amoebalive[] = { - fprintf(stderr, "%s: cannot read icon bitmap file '%s'.\n", - progname,icon_filename); - exit(-1); - } + EL_AMOEBE_NASS, + EL_AMOEBE_NORM, + EL_AMOEBE_VOLL, + EL_AMOEBE_BD + }; + static int ep_amoebalive_num = SIZEOF_ARRAY_INT(ep_amoebalive); - size_hints.flags = PSize | PMinSize | PMaxSize; - size_hints.width = size_hints.min_width = size_hints.max_width = width; - size_hints.height = size_hints.min_height = size_hints.max_height = height; + static int ep_amoeboid[] = + { + EL_AMOEBE_TOT, + EL_AMOEBE_NASS, + EL_AMOEBE_NORM, + EL_AMOEBE_VOLL, + EL_AMOEBE_BD + }; + static int ep_amoeboid_num = SIZEOF_ARRAY_INT(ep_amoeboid); - if (!XStringListToTextProperty(&window_name, 1, &windowName)) + static int ep_schluessel[] = { - fprintf(stderr, "%s: structure allocation for windowName failed.\n", - progname); - exit(-1); - } + EL_SCHLUESSEL1, + EL_SCHLUESSEL2, + EL_SCHLUESSEL3, + EL_SCHLUESSEL4, + EL_EM_KEY_1, + EL_EM_KEY_2, + EL_EM_KEY_3, + EL_EM_KEY_4 + }; + static int ep_schluessel_num = SIZEOF_ARRAY_INT(ep_schluessel); - if (!XStringListToTextProperty(&icon_name, 1, &iconName)) + static int ep_pforte[] = { - fprintf(stderr, "%s: structure allocation for iconName failed.\n", - progname); - exit(-1); - } + EL_PFORTE1, + EL_PFORTE2, + EL_PFORTE3, + EL_PFORTE4, + EL_PFORTE1X, + 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_SWITCHGATE_OPEN, + EL_SWITCHGATE_CLOSED, + EL_TIMEGATE_OPEN, + EL_TIMEGATE_CLOSED, + EL_TUBE_CROSS, + EL_TUBE_VERTICAL, + EL_TUBE_HORIZONTAL, + EL_TUBE_VERT_LEFT, + EL_TUBE_VERT_RIGHT, + EL_TUBE_HORIZ_UP, + EL_TUBE_HORIZ_DOWN, + EL_TUBE_LEFT_UP, + EL_TUBE_LEFT_DOWN, + EL_TUBE_RIGHT_UP, + EL_TUBE_RIGHT_DOWN + }; + static int ep_pforte_num = SIZEOF_ARRAY_INT(ep_pforte); - wm_hints.initial_state = NormalState; - wm_hints.input = True; - wm_hints.icon_pixmap = icon_pixmap; - wm_hints.icon_mask = iconmask_pixmap; - wm_hints.flags = StateHint | IconPixmapHint | IconMaskHint | InputHint; - - class_hints.res_name = progname; - class_hints.res_class = "Rocks'n'Diamonds"; - - XSetWMProperties(display, window, &windowName, &iconName, - argv, argc, &size_hints, &wm_hints, - &class_hints); - - XFree(windowName.value); - XFree(iconName.value); - - /* Select event types wanted */ - window_event_mask = ExposureMask | StructureNotifyMask | FocusChangeMask | - ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | - KeyPressMask | KeyReleaseMask; - XSelectInput(display, window, window_event_mask); - - /* create GC for drawing with window depth */ - gc_values.graphics_exposures = False; - gc_values.foreground = pen_bg; - gc_values.background = pen_bg; - gc_valuemask = GCGraphicsExposures | GCForeground | GCBackground; - gc = XCreateGC(display, window, gc_valuemask, &gc_values); -} + static int ep_solid[] = + { + EL_BETON, + EL_MAUERWERK, + EL_MAUER_LEBT, + EL_MAUER_X, + EL_MAUER_Y, + EL_MAUER_XY, + EL_BD_WALL, + EL_FELSBODEN, + EL_AUSGANG_ZU, + EL_AUSGANG_ACT, + EL_AUSGANG_AUF, + EL_AMOEBE_TOT, + EL_AMOEBE_NASS, + EL_AMOEBE_NORM, + EL_AMOEBE_VOLL, + EL_AMOEBE_BD, + EL_MORAST_VOLL, + EL_MORAST_LEER, + EL_QUICKSAND_FILLING, + EL_QUICKSAND_EMPTYING, + EL_MAGIC_WALL_OFF, + EL_MAGIC_WALL_EMPTY, + EL_MAGIC_WALL_FULL, + EL_MAGIC_WALL_DEAD, + EL_MAGIC_WALL_BD_OFF, + EL_MAGIC_WALL_BD_EMPTY, + EL_MAGIC_WALL_BD_FULL, + EL_MAGIC_WALL_BD_DEAD, + EL_LIFE, + EL_LIFE_ASYNC, + EL_BADEWANNE1, + EL_BADEWANNE2, + EL_BADEWANNE3, + EL_BADEWANNE4, + 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, + EL_BELT1_SWITCH_LEFT, + EL_BELT1_SWITCH_MIDDLE, + EL_BELT1_SWITCH_RIGHT, + EL_BELT2_SWITCH_LEFT, + EL_BELT2_SWITCH_MIDDLE, + EL_BELT2_SWITCH_RIGHT, + EL_BELT3_SWITCH_LEFT, + EL_BELT3_SWITCH_MIDDLE, + EL_BELT3_SWITCH_RIGHT, + EL_BELT4_SWITCH_LEFT, + EL_BELT4_SWITCH_MIDDLE, + EL_BELT4_SWITCH_RIGHT, + EL_SWITCHGATE_SWITCH_1, + EL_SWITCHGATE_SWITCH_2, + EL_LIGHT_SWITCH_OFF, + EL_LIGHT_SWITCH_ON, + EL_TIMEGATE_SWITCH_OFF, + EL_TIMEGATE_SWITCH_ON, + EL_SIGN_EXCLAMATION, + EL_SIGN_RADIOACTIVITY, + EL_SIGN_STOP, + EL_SIGN_WHEELCHAIR, + EL_SIGN_PARKING, + EL_SIGN_ONEWAY, + EL_SIGN_HEART, + EL_SIGN_TRIANGLE, + EL_SIGN_ROUND, + EL_SIGN_EXIT, + EL_SIGN_YINYANG, + EL_SIGN_OTHER, + EL_STEEL_SLANTED, + EL_EMC_STEEL_WALL_1, + EL_EMC_STEEL_WALL_2, + EL_EMC_STEEL_WALL_3, + EL_EMC_STEEL_WALL_4, + EL_EMC_WALL_1, + EL_EMC_WALL_2, + EL_EMC_WALL_3, + EL_EMC_WALL_4, + EL_EMC_WALL_5, + EL_EMC_WALL_6, + EL_EMC_WALL_7, + EL_EMC_WALL_8, + EL_CRYSTAL, + EL_WALL_PEARL, + EL_WALL_CRYSTAL, + EL_TUBE_CROSS, + EL_TUBE_VERTICAL, + EL_TUBE_HORIZONTAL, + EL_TUBE_VERT_LEFT, + EL_TUBE_VERT_RIGHT, + EL_TUBE_HORIZ_UP, + EL_TUBE_HORIZ_DOWN, + EL_TUBE_LEFT_UP, + EL_TUBE_LEFT_DOWN, + EL_TUBE_RIGHT_UP, + EL_TUBE_RIGHT_DOWN + }; + static int ep_solid_num = SIZEOF_ARRAY_INT(ep_solid); -void InitGfx() -{ - int i,j,x,y; - int xpm_err, xbm_err; - unsigned int width,height; - int hot_x,hot_y; - XGCValues gc_values; - unsigned long gc_valuemask; - XGCValues clip_gc_values; - unsigned long clip_gc_valuemask; - char filename[256]; - Pixmap shapemask; + static int ep_massive[] = + { + EL_BETON, + EL_SALZSAEURE, + EL_BADEWANNE1, + EL_BADEWANNE2, + EL_BADEWANNE3, + EL_BADEWANNE4, + EL_BADEWANNE5, + EL_PFORTE1, + EL_PFORTE2, + EL_PFORTE3, + EL_PFORTE4, + EL_PFORTE1X, + 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_SWITCHGATE_OPEN, + EL_SWITCHGATE_CLOSED, + EL_TIMEGATE_OPEN, + EL_TIMEGATE_CLOSED, + 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, + EL_BELT1_SWITCH_LEFT, + EL_BELT1_SWITCH_MIDDLE, + EL_BELT1_SWITCH_RIGHT, + EL_BELT2_SWITCH_LEFT, + EL_BELT2_SWITCH_MIDDLE, + EL_BELT2_SWITCH_RIGHT, + EL_BELT3_SWITCH_LEFT, + EL_BELT3_SWITCH_MIDDLE, + EL_BELT3_SWITCH_RIGHT, + EL_BELT4_SWITCH_LEFT, + EL_BELT4_SWITCH_MIDDLE, + EL_BELT4_SWITCH_RIGHT, + EL_LIGHT_SWITCH_OFF, + EL_LIGHT_SWITCH_ON, + EL_SIGN_EXCLAMATION, + EL_SIGN_RADIOACTIVITY, + EL_SIGN_STOP, + EL_SIGN_WHEELCHAIR, + EL_SIGN_PARKING, + EL_SIGN_ONEWAY, + EL_SIGN_HEART, + EL_SIGN_TRIANGLE, + EL_SIGN_ROUND, + EL_SIGN_EXIT, + EL_SIGN_YINYANG, + EL_SIGN_OTHER, + EL_STEEL_SLANTED, + EL_EMC_STEEL_WALL_1, + EL_EMC_STEEL_WALL_2, + EL_EMC_STEEL_WALL_3, + EL_EMC_STEEL_WALL_4, + EL_CRYSTAL, + EL_TUBE_CROSS, + EL_TUBE_VERTICAL, + EL_TUBE_HORIZONTAL, + EL_TUBE_VERT_LEFT, + EL_TUBE_VERT_RIGHT, + EL_TUBE_HORIZ_UP, + EL_TUBE_HORIZ_DOWN, + EL_TUBE_LEFT_UP, + EL_TUBE_LEFT_DOWN, + EL_TUBE_RIGHT_UP, + EL_TUBE_RIGHT_DOWN + }; + static int ep_massive_num = SIZEOF_ARRAY_INT(ep_massive); - for(i=0;i