projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20010122-2-src
[rocksndiamonds.git]
/
src
/
main.c
diff --git
a/src/main.c
b/src/main.c
index 6d4ece7340ebb91d29244bdef5ed93950e7900a6..de38f3f093b91eafe334534cd3c19ff8e10eaa86 100644
(file)
--- a/
src/main.c
+++ b/
src/main.c
@@
-1,46
+1,30
@@
/***********************************************************
/***********************************************************
-*
Rocks'n'Diamonds -- McDuffin Strikes Back!
*
+*
Rocks'n'Diamonds -- McDuffin Strikes Back!
*
*----------------------------------------------------------*
*----------------------------------------------------------*
-*
(c) 1995-98 Artsoft Entertainment
*
-*
Holger Schemel
*
-*
Oststrasse 11a
*
-*
33604 Bielefeld
*
-*
phone: ++49 +521 290471
*
-*
email: aeglos@valinor.owl.de
*
+*
(c) 1995-2001 Artsoft Entertainment
*
+*
Holger Schemel
*
+*
Detmolder Strasse 189
*
+*
33604 Bielefeld
*
+*
Germany
*
+*
e-mail: info@artsoft.org
*
*----------------------------------------------------------*
*----------------------------------------------------------*
-*
main.c
*
+*
main.c
*
***********************************************************/
***********************************************************/
+#include "libgame/libgame.h"
+
#include "main.h"
#include "init.h"
#include "game.h"
#include "events.h"
#include "main.h"
#include "init.h"
#include "game.h"
#include "events.h"
-#include "sound.h"
#include "joystick.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];
+GC tile_clip_gc;
+Bitmap *pix[NUM_BITMAPS];
+Pixmap tile_clipmask[NUM_TILES];
+DrawBuffer *fieldbuffer;
+DrawBuffer *drawto_field;
-#ifdef USE_XPM_LIBRARY
-XpmAttributes xpm_att[NUM_PICTURES];
-#endif
-
-Drawable drawto, drawto_field, backbuffer, fieldbuffer;
-Colormap cmap;
-
-int sound_pipe[2];
-int sound_device;
-char *sound_device_name = SOUND_DEVICE;
int joystick_device = 0;
char *joystick_device_name[MAX_PLAYERS] =
{
int joystick_device = 0;
char *joystick_device_name[MAX_PLAYERS] =
{
@@
-50,23
+34,16
@@
char *joystick_device_name[MAX_PLAYERS] =
DEV_JOYSTICK_3
};
DEV_JOYSTICK_3
};
-char *program_name = NULL;
-
int game_status = MAINMENU;
boolean level_editor_test_game = FALSE;
boolean network_playing = FALSE;
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 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;
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];
short Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short Ur[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
@@
-81,6
+58,7
@@
boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA];
short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
short AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA];
+short ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
unsigned long Elementeigenschaften1[MAX_ELEMENTS];
unsigned long Elementeigenschaften2[MAX_ELEMENTS];
unsigned long Elementeigenschaften1[MAX_ELEMENTS];
unsigned long Elementeigenschaften2[MAX_ELEMENTS];
@@
-98,91
+76,83
@@
int SBX_Left, SBX_Right;
int SBY_Upper, SBY_Lower;
int ZX,ZY, ExitX,ExitY;
int AllPlayersGone;
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;
boolean network_player_action_received = FALSE;
-struct LevelDirInfo *leveldir_first = NULL, *leveldir_current = NULL;
struct LevelInfo level;
struct PlayerInfo stored_player[MAX_PLAYERS], *local_player = NULL;
struct HiScore highscore[MAX_SCORE_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 TapeInfo tape;
-struct OptionInfo options;
struct SetupInfo setup;
struct GameInfo game;
struct GlobalInfo global;
struct SetupInfo setup;
struct GameInfo game;
struct GlobalInfo global;
-/*
data needed for playing sound
s */
+/*
filenames of sound effect
s */
char *sound_name[NUM_SOUNDS] =
{
char *sound_name[NUM_SOUNDS] =
{
- "alchemy",
- "amoebe",
- "antigrav",
- "autsch",
- "blurb",
- "bong",
- "buing",
- "chase",
- "czardasz",
- "deng",
- "fuel",
- "gong",
- "halloffame",
- "holz",
- "hui",
- "kabumm",
- "kink",
- "klapper",
- "kling",
- "klopf",
- "klumpf",
- "knack",
- "knurk",
- "krach",
- "lachen",
- "laser",
- "miep",
- "network",
- "njam",
- "oeffnen",
- "pling",
- "pong",
- "pusch",
- "quiek",
- "quirk",
- "rhythmloop",
- "roaaar",
- "roehr",
- "rumms",
- "schlopp",
- "schlurf",
- "schrff",
- "schwirr",
- "sirr",
- "slurp",
- "sproing",
- "twilight",
- "tyger",
- "voyager",
- "warnton",
- "whoosh",
- "zisch",
- "base",
- "infotron",
- "zonkdown",
- "zonkpush",
- "bug",
- "boom",
- "booom",
- "exit",
- "empty",
- "gate"
+ "amoebe.wav",
+ "antigrav.wav",
+ "autsch.wav",
+ "blurb.wav",
+ "bong.wav",
+ "buing.wav",
+ "deng.wav",
+ "fuel.wav",
+ "gong.wav",
+ "halloffame.wav",
+ "holz.wav",
+ "hui.wav",
+ "kabumm.wav",
+ "kink.wav",
+ "klapper.wav",
+ "kling.wav",
+ "klopf.wav",
+ "klumpf.wav",
+ "knack.wav",
+ "knurk.wav",
+ "krach.wav",
+ "lachen.wav",
+ "laser.wav",
+ "miep.wav",
+ "njam.wav",
+ "oeffnen.wav",
+ "pling.wav",
+ "pong.wav",
+ "pusch.wav",
+ "quiek.wav",
+ "quirk.wav",
+ "rhythmloop.wav",
+ "roaaar.wav",
+ "roehr.wav",
+ "rumms.wav",
+ "schlopp.wav",
+ "schlurf.wav",
+ "schrff.wav",
+ "schwirr.wav",
+ "sirr.wav",
+ "slurp.wav",
+ "sproing.wav",
+ "warnton.wav",
+ "whoosh.wav",
+ "zisch.wav",
+ "base.wav",
+ "infotron.wav",
+ "zonkdown.wav",
+ "zonkpush.wav",
+ "bug.wav",
+ "boom.wav",
+ "booom.wav",
+ "exit.wav",
+ "empty.wav",
+ "gate.wav"
};
/* background music */
int background_loop[] =
{
};
/* background music */
int background_loop[] =
{
+#if 0
SND_ALCHEMY,
SND_CHASE,
SND_NETWORK,
SND_ALCHEMY,
SND_CHASE,
SND_NETWORK,
@@
-190,6
+160,7
@@
int background_loop[] =
SND_TYGER,
SND_VOYAGER,
SND_TWILIGHT
SND_TYGER,
SND_VOYAGER,
SND_TWILIGHT
+#endif
};
int num_bg_loops = sizeof(background_loop)/sizeof(int);
};
int num_bg_loops = sizeof(background_loop)/sizeof(int);
@@
-258,7
+229,7
@@
char *element_info[] =
"dark yam yam", /* 60 */
"magic wall (BD style)",
"invisible steel wall",
"dark yam yam", /* 60 */
"magic wall (BD style)",
"invisible steel wall",
- "
dynabomb
",
+ "
-
",
"increases number of bombs",
"increases explosion size",
"increases power of explosion",
"increases number of bombs",
"increases explosion size",
"increases power of explosion",
@@
-300,10
+271,10
@@
char *element_info[] =
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
- "
unknown
",
- "
unknown
",
+ "
normal wall (BD style)
",
+ "
rock (BD style)
",
"open exit",
"open exit",
- "
unknown
",
+ "
black orb bomb
",
"amoeba",
"mole", /* 110 */
"penguin",
"amoeba",
"mole", /* 110 */
"penguin",
@@
-314,7
+285,7
@@
char *element_info[] =
"arrow down",
"pig",
"fire breathing dragon",
"arrow down",
"pig",
"fire breathing dragon",
- "
unknown
",
+ "
red key (EM style)
",
"letter ' '", /* 120 */
"letter '!'",
"letter '\"'",
"letter ' '", /* 120 */
"letter '!'",
"letter '\"'",
@@
-398,13
+369,13
@@
char *element_info[] =
"growing wall (horizontal)", /* 200 */
"growing wall (vertical)",
"growing wall (all directions)",
"growing wall (horizontal)", /* 200 */
"growing wall (vertical)",
"growing wall (all directions)",
- "
unused
",
- "
unused
",
- "
unused
",
- "
unused
",
- "
unused
",
- "
unused
",
- "
unused
",
+ "
red door (EM style)
",
+ "
yellow door (EM style)
",
+ "
green door (EM style)
",
+ "
blue door (EM style)
",
+ "
yellow key (EM style)
",
+ "
green key (EM style)
",
+ "
blue key (EM style)
",
"empty space", /* 210 */
"zonk",
"base",
"empty space", /* 210 */
"zonk",
"base",
@@
-445,10
+416,10
@@
char *element_info[] =
"hardware",
"chip (upper half)",
"chip (lower half)",
"hardware",
"chip (upper half)",
"chip (lower half)",
- "
unknown",
/* 250 */
- "
unknown
",
- "
unknown
",
- "
unknown
",
+ "
gray door (EM style, red key)",
/* 250 */
+ "
gray door (EM style, yellow key)
",
+ "
gray door (EM style, green key)
",
+ "
gray door (EM style, blue key)
",
"unknown",
"unknown",
"unknown",
"unknown",
@@
-555,23
+526,29
@@
char *element_info[] =
"tube (right & down)",
"spring",
"trap",
"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[])
{
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);
GetOptions(argv);
- OpenAll(argc,argv);
+ OpenAll();
+
EventLoop();
CloseAllAndExit(0);
exit(0); /* to keep compilers happy */
EventLoop();
CloseAllAndExit(0);
exit(0); /* to keep compilers happy */