void OpenAll(int argc, char *argv[])
{
+#ifdef MSDOS
+ initErrorFile();
+#endif
+
if (options.serveronly)
{
NetworkServer(options.server_port, options.serveronly);
exit(0);
}
- InitLevelAndPlayerInfo();
-
InitCounter();
InitSound();
InitSoundServer();
XFlush(display);
InitGfx();
- InitElementProperties();
- InitGadgets();
+ InitElementProperties(); /* initializes IS_CHAR() for el2gfx() */
+
+ InitLevelAndPlayerInfo();
+ InitGadgets(); /* needs to know number of level series */
DrawMainMenu();
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(); /* last played level info */
}
void InitNetworkServer()
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;
{ "Toons", TRUE },
{ "SP", TRUE },
{ "DC", TRUE },
+ { "More", TRUE },
{ "Font", FALSE },
- { "Font2", FALSE }
+ { "Font2", FALSE },
+ { "Font3", FALSE }
};
#else
static struct PictureFileInfo pic[NUM_PICTURES] =
{ "RocksToons", TRUE },
{ "RocksSP", TRUE },
{ "RocksDC", TRUE },
+ { "RocksMore", TRUE },
{ "RocksFont", FALSE },
- { "RocksFont2", FALSE }
+ { "RocksFont2", FALSE },
+ { "RocksFont3", FALSE }
};
#endif
{ GFX_SOKOBAN_OBJEKT, 1 },
{ GFX_FUNKELN_BLAU, 3 },
{ GFX_FUNKELN_WEISS, 3 },
+ { GFX2_SHIELD_PASSIVE, 3 },
+ { GFX2_SHIELD_ACTIVE, 3 },
{ -1, 0 }
};
CreateGameButtons();
CreateTapeButtons();
CreateToolButtons();
+ CreateScreenGadgets();
}
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);
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,
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);
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_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,
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);
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);
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);
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,
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);
EL_DYNABOMB_SZ,
EL_DYNABOMB_XL,
EL_KAEFER,
- EL_MAULWURF,
+ EL_MOLE,
EL_PINGUIN,
EL_SCHWEIN,
EL_DRACHE,
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);
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);
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);