* main.c *
***********************************************************/
+#include "libgame/libgame.h"
+
#include "main.h"
#include "init.h"
#include "game.h"
#include "events.h"
-#include "sound.h"
#include "joystick.h"
-#include "misc.h"
-
-#ifdef MSDOS
-#include <fcntl.h>
-#endif
-
-Display *display;
-Visual *visual;
-int screen;
-Window window;
-GC gc, clip_gc[NUM_PIXMAPS], tile_clip_gc;
-Pixmap pix[NUM_PIXMAPS];
-Pixmap clipmask[NUM_PIXMAPS], tile_clipmask[NUM_TILES];
-
-#ifdef USE_XPM_LIBRARY
-XpmAttributes xpm_att[NUM_PICTURES];
-#endif
-Drawable drawto, drawto_field, backbuffer, fieldbuffer;
-Colormap cmap;
+GC tile_clip_gc;
+Bitmap pix[NUM_BITMAPS];
+Pixmap tile_clipmask[NUM_TILES];
+DrawBuffer drawto_field, fieldbuffer;
-int sound_pipe[2];
-int sound_device;
-char *sound_device_name = SOUND_DEVICE;
int joystick_device = 0;
char *joystick_device_name[MAX_PLAYERS] =
{
DEV_JOYSTICK_3
};
-char *program_name = NULL;
-
int game_status = MAINMENU;
boolean level_editor_test_game = FALSE;
boolean network_playing = FALSE;
-int button_status = MB_NOT_PRESSED;
-boolean motion_status = FALSE;
+
int key_joystick_mapping = 0;
int global_joystick_status = JOYSTICK_STATUS;
int joystick_status = JOYSTICK_STATUS;
-int sound_status = SOUND_STATUS;
-boolean sound_loops_allowed = FALSE;
boolean redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE];
int redraw_x1 = 0, redraw_y1 = 0;
-int redraw_mask;
-int redraw_tiles;
short Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short Ur[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
unsigned long Elementeigenschaften1[MAX_ELEMENTS];
unsigned long Elementeigenschaften2[MAX_ELEMENTS];
-int level_nr, leveldir_nr, num_leveldirs;
+int level_nr;
int lev_fieldx,lev_fieldy, scroll_x,scroll_y;
int FX = SX, FY = SY, ScrollStepSize;
int SBY_Upper, SBY_Lower;
int ZX,ZY, ExitX,ExitY;
int AllPlayersGone;
-int FrameCounter, TimeFrames, TimePlayed, TimeLeft;
+
+int TimeFrames, TimePlayed, TimeLeft;
boolean network_player_action_received = FALSE;
-struct LevelDirInfo leveldir[MAX_LEVDIR_ENTRIES];
struct LevelInfo level;
struct PlayerInfo stored_player[MAX_PLAYERS], *local_player = NULL;
struct HiScore highscore[MAX_SCORE_ENTRIES];
-struct SoundInfo Sound[NUM_SOUNDS];
struct TapeInfo tape;
-struct OptionInfo options;
struct SetupInfo setup;
struct GameInfo game;
struct GlobalInfo global;
"dark yam yam", /* 60 */
"magic wall (BD style)",
"invisible steel wall",
- "dynabomb",
+ "-",
"increases number of bombs",
"increases explosion size",
"increases power of explosion",
"unknown",
"unknown",
"unknown",
- "unknown",
- "unknown",
+ "normal wall (BD style)",
+ "rock (BD style)",
"open exit",
"unknown",
"amoeba",
"letter ''",
"letter ''",
"letter ''",
- "growing wall (horizontally)", /* 200 */
- "growing wall (vertically)",
+ "growing wall (horizontal)", /* 200 */
+ "growing wall (vertical)",
"growing wall (all directions)",
"unused",
"unused",
"yellow disk",
"terminal",
"red disk", /* 230 */
- "port (vertically)",
- "port (horizontally)",
+ "port (vertical)",
+ "port (horizontal)",
"port (all directions)",
"electron",
"buggy base",
"time gate (closed)",
"switch for time gate",
"switch for time gate",
- "-",
- "-",
+ "balloon",
+ "send balloon to the left",
+ "send balloon to the right",
+ "send balloon up",
+ "send balloon down", /* 330 */
+ "send balloon in any direction",
+ "steel wall",
+ "steel wall",
+ "steel wall",
+ "steel wall",
+ "normal wall",
+ "normal wall",
+ "normal wall",
+ "normal wall",
+ "normal wall", /* 340 */
+ "normal wall",
+ "normal wall",
+ "normal wall",
+ "tube (all directions)",
+ "tube (vertical)",
+ "tube (horizontal)",
+ "tube (vertical & left)",
+ "tube (vertical & right)",
+ "tube (horizontal & up)",
+ "tube (horizontal & down)", /* 350 */
+ "tube (left & up)",
+ "tube (left & down)",
+ "tube (right & up)",
+ "tube (right & down)",
+ "spring",
+ "trap",
+ "stable bomb (DX style)",
"-"
/*
"-------------------------------",
*/
};
+int num_element_info = sizeof(element_info)/sizeof(char *);
+
+
+/* ========================================================================= */
+/* main() */
+/* ========================================================================= */
int main(int argc, char *argv[])
{
- program_name = (strrchr(argv[0],'/') ? strrchr(argv[0],'/') + 1 : argv[0]);
-
-#ifdef MSDOS
- _fmode = O_BINARY;
-#endif
+ InitCommandName(argv[0]);
+ InitExitFunction(CloseAllAndExit);
+ InitPlatformDependantStuff();
GetOptions(argv);
- OpenAll(argc,argv);
+ OpenAll();
+
EventLoop();
CloseAllAndExit(0);
exit(0); /* to keep compilers happy */