X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Finit.c;h=b8fe9cc7125afa26aa412c06c1215c0271848911;hp=09804ee18381b0a84750a64338267125b2aa6a5d;hb=c21cf4c301f745142f3cbb4987efe6446a3a8c4e;hpb=2fe139696892ee39f804b5c7315b8f0977ab01ec diff --git a/src/init.c b/src/init.c index 09804ee1..b8fe9cc7 100644 --- a/src/init.c +++ b/src/init.c @@ -55,6 +55,10 @@ static void InitElementProperties(void); void OpenAll(int argc, char *argv[]) { +#ifdef MSDOS + initErrorFile(); +#endif + if (options.serveronly) { NetworkServer(options.server_port, options.serveronly); @@ -63,8 +67,6 @@ void OpenAll(int argc, char *argv[]) exit(0); } - InitLevelAndPlayerInfo(); - InitCounter(); InitSound(); InitSoundServer(); @@ -81,8 +83,10 @@ void OpenAll(int argc, char *argv[]) XFlush(display); InitGfx(); - InitElementProperties(); + InitElementProperties(); /* initializes IS_CHAR() for el2gfx() */ + InitGadgets(); + InitLevelAndPlayerInfo(); DrawMainMenu(); @@ -104,9 +108,10 @@ void InitLevelAndPlayerInfo() local_player->connected = TRUE; - LoadLevelInfo(); /* global level info */ - LoadSetup(); /* global setup info */ - LoadLevelSetup(); /* info about last played level */ + LoadLevelInfo(); /* global level info */ + LoadSetup(); /* global setup info */ + LoadLevelSetup_LastSeries(); /* last played series info */ + LoadLevelSetup_SeriesInfo(leveldir_nr); /* last played level info */ } void InitNetworkServer() @@ -455,17 +460,6 @@ void InitWindow(int argc, char *argv[]) gc = XCreateGC(display, window, gc_valuemask, &gc_values); } -void DrawInitText(char *text, int ypos, int color) -{ - if (display && window && pix[PIX_SMALLFONT]) - { - XFillRectangle(display,window,gc,0,ypos, WIN_XSIZE,FONT2_YSIZE); - DrawTextExt(window,gc,(WIN_XSIZE-strlen(text)*FONT2_XSIZE)/2, - ypos,text,FS_SMALL,color); - XFlush(display); - } -} - void InitGfx() { int i,j; @@ -483,7 +477,8 @@ void InitGfx() { "SP", TRUE }, { "DC", TRUE }, { "Font", FALSE }, - { "Font2", FALSE } + { "Font2", FALSE }, + { "Font3", FALSE } }; #else static struct PictureFileInfo pic[NUM_PICTURES] = @@ -495,7 +490,8 @@ void InitGfx() { "RocksSP", TRUE }, { "RocksDC", TRUE }, { "RocksFont", FALSE }, - { "RocksFont2", FALSE } + { "RocksFont2", FALSE }, + { "RocksFont3", FALSE } }; #endif @@ -561,6 +557,8 @@ void InitGfx() { GFX_SOKOBAN_OBJEKT, 1 }, { GFX_FUNKELN_BLAU, 3 }, { GFX_FUNKELN_WEISS, 3 }, + { GFX2_SHIELD_PASSIVE, 3 }, + { GFX2_SHIELD_ACTIVE, 3 }, { -1, 0 } }; @@ -872,7 +870,9 @@ void InitElementProperties() EL_EM_GATE_3X, EL_EM_GATE_4X, EL_SWITCHGATE_OPEN, - EL_SWITCHGATE_CLOSED + EL_SWITCHGATE_CLOSED, + EL_TIMEGATE_OPEN, + EL_TIMEGATE_CLOSED }; static int ep_pforte_num = sizeof(ep_pforte)/sizeof(int); @@ -929,20 +929,24 @@ void InitElementProperties() EL_SP_TERMINAL, EL_SP_EXIT, EL_INVISIBLE_STEEL, - EL_BELT1_SWITCH_L, - EL_BELT1_SWITCH_M, - EL_BELT1_SWITCH_R, - EL_BELT2_SWITCH_L, - EL_BELT2_SWITCH_M, - EL_BELT2_SWITCH_R, - EL_BELT3_SWITCH_L, - EL_BELT3_SWITCH_M, - EL_BELT3_SWITCH_R, - EL_BELT4_SWITCH_L, - EL_BELT4_SWITCH_M, - EL_BELT4_SWITCH_R, + 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, @@ -955,7 +959,19 @@ void InitElementProperties() EL_SIGN_EXIT, EL_SIGN_YINYANG, EL_SIGN_OTHER, - EL_STEEL_SLANTED + 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 }; static int ep_solid_num = sizeof(ep_solid)/sizeof(int); @@ -986,6 +1002,8 @@ void InitElementProperties() 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, @@ -998,18 +1016,18 @@ void InitElementProperties() EL_SP_HARD_BASE5, EL_SP_HARD_BASE6, EL_INVISIBLE_STEEL, - EL_BELT1_SWITCH_L, - EL_BELT1_SWITCH_M, - EL_BELT1_SWITCH_R, - EL_BELT2_SWITCH_L, - EL_BELT2_SWITCH_M, - EL_BELT2_SWITCH_R, - EL_BELT3_SWITCH_L, - EL_BELT3_SWITCH_M, - EL_BELT3_SWITCH_R, - EL_BELT4_SWITCH_L, - EL_BELT4_SWITCH_M, - EL_BELT4_SWITCH_R, + 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, @@ -1024,7 +1042,11 @@ void InitElementProperties() EL_SIGN_EXIT, EL_SIGN_YINYANG, EL_SIGN_OTHER, - EL_STEEL_SLANTED + EL_STEEL_SLANTED, + EL_EMC_STEEL_WALL_1, + EL_EMC_STEEL_WALL_2, + EL_EMC_STEEL_WALL_3, + EL_EMC_STEEL_WALL_4 }; static int ep_massive_num = sizeof(ep_massive)/sizeof(int); @@ -1124,7 +1146,19 @@ void InitElementProperties() EL_SP_TERMINAL, EL_SP_EXIT, EL_INVISIBLE_STEEL, - EL_STEEL_SLANTED + 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 }; static int ep_mauer_num = sizeof(ep_mauer)/sizeof(int); @@ -1201,38 +1235,39 @@ void InitElementProperties() EL_MAMPFER2, EL_ROBOT, EL_PACMAN, - EL_MAULWURF, + EL_MOLE, EL_PINGUIN, EL_SCHWEIN, EL_DRACHE, EL_SONDE, EL_SP_SNIKSNAK, - EL_SP_ELECTRON + EL_SP_ELECTRON, + EL_BALLOON }; static int ep_can_move_num = sizeof(ep_can_move)/sizeof(int); static int ep_could_move[] = { - EL_KAEFER_R, - EL_KAEFER_O, - EL_KAEFER_L, - EL_KAEFER_U, - EL_FLIEGER_R, - EL_FLIEGER_O, - EL_FLIEGER_L, - EL_FLIEGER_U, - EL_BUTTERFLY_R, - EL_BUTTERFLY_O, - EL_BUTTERFLY_L, - EL_BUTTERFLY_U, - EL_FIREFLY_R, - EL_FIREFLY_O, - EL_FIREFLY_L, - EL_FIREFLY_U, - EL_PACMAN_R, - EL_PACMAN_O, - EL_PACMAN_L, - EL_PACMAN_U + EL_KAEFER_RIGHT, + EL_KAEFER_UP, + EL_KAEFER_LEFT, + EL_KAEFER_DOWN, + EL_FLIEGER_RIGHT, + EL_FLIEGER_UP, + EL_FLIEGER_LEFT, + EL_FLIEGER_DOWN, + EL_BUTTERFLY_RIGHT, + EL_BUTTERFLY_UP, + EL_BUTTERFLY_LEFT, + EL_BUTTERFLY_DOWN, + EL_FIREFLY_RIGHT, + EL_FIREFLY_UP, + EL_FIREFLY_LEFT, + EL_FIREFLY_DOWN, + EL_PACMAN_RIGHT, + EL_PACMAN_UP, + EL_PACMAN_LEFT, + EL_PACMAN_DOWN }; static int ep_could_move_num = sizeof(ep_could_move)/sizeof(int); @@ -1436,18 +1471,18 @@ void InitElementProperties() EL_SP_HARD_BASE6, EL_SP_EXIT, EL_INVISIBLE_STEEL, - EL_BELT1_SWITCH_L, - EL_BELT1_SWITCH_M, - EL_BELT1_SWITCH_R, - EL_BELT2_SWITCH_L, - EL_BELT2_SWITCH_M, - EL_BELT2_SWITCH_R, - EL_BELT3_SWITCH_L, - EL_BELT3_SWITCH_M, - EL_BELT3_SWITCH_R, - EL_BELT4_SWITCH_L, - EL_BELT4_SWITCH_M, - EL_BELT4_SWITCH_R, + 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_SIGN_EXCLAMATION, EL_SIGN_RADIOACTIVITY, EL_SIGN_STOP, @@ -1460,7 +1495,19 @@ void InitElementProperties() EL_SIGN_EXIT, EL_SIGN_YINYANG, EL_SIGN_OTHER, - EL_STEEL_SLANTED + 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 }; static int ep_inactive_num = sizeof(ep_inactive)/sizeof(int); @@ -1477,7 +1524,7 @@ void InitElementProperties() EL_DYNABOMB_SZ, EL_DYNABOMB_XL, EL_KAEFER, - EL_MAULWURF, + EL_MOLE, EL_PINGUIN, EL_SCHWEIN, EL_DRACHE, @@ -1512,7 +1559,8 @@ void InitElementProperties() EL_SONDE, EL_SP_ZONK, EL_SP_DISK_ORANGE, - EL_SP_DISK_YELLOW + EL_SP_DISK_YELLOW, + EL_BALLOON }; static int ep_pushable_num = sizeof(ep_pushable)/sizeof(int); @@ -1613,7 +1661,8 @@ void InitElementProperties() EL_SP_PORT_X, EL_SP_PORT_Y, EL_SP_PORT_XY, - EL_SWITCHGATE_OPEN + EL_SWITCHGATE_OPEN, + EL_TIMEGATE_OPEN }; static int ep_quick_gate_num = sizeof(ep_quick_gate)/sizeof(int); @@ -1662,18 +1711,18 @@ void InitElementProperties() static int ep_belt_switch[] = { - EL_BELT1_SWITCH_L, - EL_BELT1_SWITCH_M, - EL_BELT1_SWITCH_R, - EL_BELT2_SWITCH_L, - EL_BELT2_SWITCH_M, - EL_BELT2_SWITCH_R, - EL_BELT3_SWITCH_L, - EL_BELT3_SWITCH_M, - EL_BELT3_SWITCH_R, - EL_BELT4_SWITCH_L, - EL_BELT4_SWITCH_M, - EL_BELT4_SWITCH_R, + 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, }; static int ep_belt_switch_num = sizeof(ep_belt_switch)/sizeof(int);