/***********************************************************
-* 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 "init.h"
#include "game.h"
#include "events.h"
-#include "joystick.h"
GC tile_clip_gc;
-Bitmap pix[NUM_BITMAPS];
+Bitmap *pix[NUM_BITMAPS];
Pixmap tile_clipmask[NUM_TILES];
-DrawBuffer drawto_field, fieldbuffer;
-
-int joystick_device = 0;
-char *joystick_device_name[MAX_PLAYERS] =
-{
- DEV_JOYSTICK_0,
- DEV_JOYSTICK_1,
- DEV_JOYSTICK_2,
- DEV_JOYSTICK_3
-};
+DrawBuffer *fieldbuffer;
+DrawBuffer *drawto_field;
int game_status = MAINMENU;
boolean level_editor_test_game = FALSE;
boolean network_playing = FALSE;
int key_joystick_mapping = 0;
-int global_joystick_status = JOYSTICK_STATUS;
-int joystick_status = JOYSTICK_STATUS;
boolean redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE];
int redraw_x1 = 0, redraw_y1 = 0;
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];
-int level_nr;
int lev_fieldx,lev_fieldy, scroll_x,scroll_y;
int FX = SX, FY = SY, ScrollStepSize;
struct GameInfo game;
struct GlobalInfo global;
-/* data needed for playing sounds */
+/* filenames of sound effects */
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[] =
-{
- SND_ALCHEMY,
- SND_CHASE,
- SND_NETWORK,
- SND_CZARDASZ,
- SND_TYGER,
- SND_VOYAGER,
- SND_TWILIGHT
-};
-int num_bg_loops = sizeof(background_loop)/sizeof(int);
-
char *element_info[] =
{
"empty space", /* 0 */
"normal wall (BD style)",
"rock (BD style)",
"open exit",
- "unknown",
+ "black orb bomb",
"amoeba",
"mole", /* 110 */
"penguin",
"arrow down",
"pig",
"fire breathing dragon",
- "unknown",
+ "red key (EM style)",
"letter ' '", /* 120 */
"letter '!'",
"letter '\"'",
"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",
"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",