/***********************************************************
* Rocks'n'Diamonds -- McDuffin Strikes Back! *
*----------------------------------------------------------*
-* (c) 1995-2000 Artsoft Entertainment *
+* (c) 1995-2001 Artsoft Entertainment *
* Holger Schemel *
* Detmolder Strasse 189 *
* 33604 Bielefeld *
#include "init.h"
#include "game.h"
#include "events.h"
-#include "joystick.h"
GC tile_clip_gc;
Bitmap *pix[NUM_BITMAPS];
DrawBuffer *fieldbuffer;
DrawBuffer *drawto_field;
-int joystick_device = 0;
-char *joystick_device_name[MAX_PLAYERS] =
-{
- DEV_JOYSTICK_0,
- DEV_JOYSTICK_1,
- DEV_JOYSTICK_2,
- DEV_JOYSTICK_3
-};
-
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;
"gate.wav"
};
-/* background music */
-int background_loop[] =
+#if 0
+/* sound effects: setup file identifiers and corresponding default filenames */
+struct SoundEffectInfo sound_effects[NUM_SOUND_EFFECTS] =
+{
+ { "infotron_collecting", "infotron.wav" }, /* TEST */
+ { "zonk_falling", SND_FILE_UNDEFINED }, /* TEST */
+ { "zonk_pushing", "zonkpush.wav" }, /* TEST */
+ { "player_screaming", "autsch.wav" } /* TEST */
+};
+#endif
+
+struct SoundEffectInfo sound_effects[] =
{
+ /* sounds for Boulder Dash style elements and actions */
+ { "bd_empty_space.digging", "empty.wav" },
+ { "bd_sand.digging", "schlurf.wav" },
+ { "bd_diamond.collecting", "pong.wav" },
+ { "bd_diamond.impact", "pling.wav" },
+ { "bd_rock.pushing", "pusch.wav" },
+ { "bd_rock.impact", "klopf.wav" },
+ { "bd_magic_wall.activating", "quirk.wav" },
+ { "bd_magic_wall.changing", "quirk.wav" },
+ { "bd_magic_wall.running", "miep.wav" },
+ { "bd_amoeba.growing", "amoebe.wav" },
+ { "bd_amoeba.turning_to_gem", "pling.wav" },
+ { "bd_amoeba.turning_to_rock", "klopf.wav" },
+ { "bd_butterfly.moving", "klapper.wav" },
+ { "bd_firefly.moving", "roehr.wav" },
+ { "bd_exit.entering", "buing.wav" },
+
+ /* sounds for Supaplex style elements and actions */
+ { "sp_empty_space.digging", "empty.wav" },
+ { "sp_base.digging", "base.wav" },
+ { "sp_buggy_base.digging", "base.wav" },
+ { "sp_buggy_base.activating", "bug.wav" },
+ { "sp_infotron.collecting", "infotron.wav" },
+ { "sp_infotron.impact", "pling.wav" },
+ { "sp_zonk.pushing", "zonkpush.wav" },
+ { "sp_zonk.impact", "zonkdown.wav" },
+ { "sp_disk_red.collecting", "infotron.wav" },
+ { "sp_disk_orange.pushing", "zonkpush.wav" },
+ { "sp_disk_yellow.pushing", "pusch.wav" },
+ { "sp_port.passing", "gate.wav" },
+ { "sp_exit.entering", "buing.wav" },
+ { "sp_element.exploding", "booom.wav" },
+ { "sp_sniksnak.moving", SND_FILE_UNDEFINED },
+ { "sp_electron.moving", SND_FILE_UNDEFINED },
+ { "sp_terminal.activating", SND_FILE_UNDEFINED },
+
+ /* sounds for Sokoban style elements and actions */
+ { "sokoban_object.pushing", "pusch.wav" },
+ { "sokoban_field.filling", "deng.wav" },
+ { "sokoban_field.clearing", SND_FILE_UNDEFINED },
+ { "sokoban_game.solving", "buing.wav" },
+
+ /* sounds for Emerald Mine style elements and actions */
+ { "empty_space.digging", "empty.wav" },
+ { "sand.digging", "schlurf.wav" },
+ { "emerald.collecting", "pong.wav" },
+ { "emerald.impact", "pling.wav" },
+ { "diamond.collecting", "pong.wav" },
+ { "diamond.impact", "pling.wav" },
+ { "diamond.breaking", "quirk.wav" },
+ { "rock.pushing", "pusch.wav" },
+ { "rock.impact", "klopf.wav" },
+ { "bomb.pushing", "pusch.wav" },
+ { "nut.pushing", "knurk.wav" },
+ { "nut.cracking", "knack.wav" },
+ { "nut.impact", "klumpf.wav" },
+ { "dynamite.collecting", "pong.wav" },
+ { "dynamite.placing", "deng.wav" },
+ { "dynamite.burning", "zisch.wav" },
+ { "key.collecting", "pong.wav" },
+ { "gate.passing", "gate.wav" },
+ { "bug.moving", "klapper.wav" },
+ { "spaceship.moving", "roehr.wav" },
+ { "yamyam.moving", SND_FILE_UNDEFINED },
+ { "yamyam.waiting", "njam.wav" },
+ { "yamyam.eating_diamond", SND_FILE_UNDEFINED },
+ { "robot.moving", "schlurf.wav" },
+ { "robot_wheel.activating", "deng.wav" },
+ { "robot_wheel.running", "miep.wav" },
+ { "magic_wall.activating", "quirk.wav" },
+ { "magic_wall.changing", "quirk.wav" },
+ { "magic_wall.running", "miep.wav" },
+ { "amoeba.growing", "amoebe.wav" },
+ { "amoeba.dropping", SND_FILE_UNDEFINED },
+ { "acid.splashing", "blurb.wav" },
+ { "quicksand.filling", SND_FILE_UNDEFINED },
+ { "quicksand.slipping_through", SND_FILE_UNDEFINED },
+ { "quicksand.emptying", SND_FILE_UNDEFINED },
+ { "exit.opening", "oeffnen.wav" },
+ { "exit.entering", "buing.wav" },
+
+ /* sounds for Emerald Mine Club style elements and actions */
+ { "balloon.moving", SND_FILE_UNDEFINED },
+ { "balloon.pushing", "schlurf.wav" },
+ { "spring.moving", SND_FILE_UNDEFINED },
+ { "spring.pushing", "pusch.wav" },
+ { "spring.impact", "klopf.wav" },
+ { "wall.growing", SND_FILE_UNDEFINED },
+
+ /* sounds for Diamond Caves style elements and actions */
+ { "pearl.collecting", "pong.wav" },
+ { "pearl.breaking", "knack.wav" },
+ { "pearl.impact", "pling.wav" },
+ { "crystal.collecting", "pong.wav" },
+ { "crystal.impact", "pling.wav" },
+ { "envelope.collecting", "pong.wav" },
+ { "sand_invisible.digging", "schlurf.wav" },
+ { "shield_passive.collecting", "pong.wav" },
+ { "shield_passive.activated", SND_FILE_UNDEFINED },
+ { "shield_active.collecting", "pong.wav" },
+ { "shield_active.activated", SND_FILE_UNDEFINED },
+ { "extra_time.collecting", "gong.wav" },
+ { "mole.moving", SND_FILE_UNDEFINED },
+ { "mole.eating_amoeba", "blurb.wav" },
+ { "switchgate_switch.activating", SND_FILE_UNDEFINED },
+ { "switchgate.opening", "oeffnen.wav" },
+ { "switchgate.closing", "oeffnen.wav" },
+ { "switchgate.passing", "gate.wav" },
+ { "timegate_wheel.activating", "deng.wav" },
+ { "timegate_wheel.running", "miep.wav" },
+ { "timegate.opening", "oeffnen.wav" },
+ { "timegate.closing", "oeffnen.wav" },
+ { "timegate.passing", "gate.wav" },
+ { "conveyor_belt_switch.activating", SND_FILE_UNDEFINED },
+ { "conveyor_belt.running", SND_FILE_UNDEFINED },
+ { "light_switch.activating", SND_FILE_UNDEFINED },
+ { "light_switch.deactivating", SND_FILE_UNDEFINED },
+
+ /* sounds for DX Boulderdash style elements and actions */
+ { "dx_bomb.pushing", "pusch.wav" },
+ { "trap_inactive.digging", "schlurf.wav" },
+ { "trap.activating", SND_FILE_UNDEFINED },
+
+ /* sounds for Rocks'n'Diamonds style elements and actions */
+ { "amoeba.turning_to_gem", "pling.wav" },
+ { "amoeba.turning_to_rock", "klopf.wav" },
+ { "speed_pill.collecting", "pong.wav" },
+ { "dynabomb_nr.collecting", "pong.wav" },
+ { "dynabomb_sz.collecting", "pong.wav" },
+ { "dynabomb_xl.collecting", "pong.wav" },
+ { "dynabomb.placing", "deng.wav" },
+ { "dynabomb.burning", "zisch.wav" },
+ { "satellite.moving", SND_FILE_UNDEFINED },
+ { "satellite.pushing", "pusch.wav" },
+ { "lamp.activating", "deng.wav" },
+ { "lamp.deactivating", "deng.wav" },
+ { "time_orb_full.collecting", "gong.wav" },
+ { "time_orb_full.impact", "deng.wav" },
+ { "time_orb_empty.pushing", "pusch.wav" },
+ { "time_orb_empty.impact", "deng.wav" },
+ { "gameoflife.growing", "amoebe.wav" },
+ { "biomaze.growing", "amoebe.wav" },
+ { "pacman.moving", SND_FILE_UNDEFINED },
+ { "pacman.eating_amoeba", SND_FILE_UNDEFINED },
+ { "dark_yamyam.moving", SND_FILE_UNDEFINED },
+ { "dark_yamyam.waiting", "njam.wav" },
+ { "dark_yamyam.eating_any", SND_FILE_UNDEFINED },
+ { "penguin.moving", SND_FILE_UNDEFINED },
+ { "penguin.entering_exit", "buing.wav" },
+ { "pig.moving", SND_FILE_UNDEFINED },
+ { "pig.eating_gem", SND_FILE_UNDEFINED },
+ { "dragon.moving", SND_FILE_UNDEFINED },
+ { "dragon.breathing_fire", SND_FILE_UNDEFINED },
+
+ /* sounds for generic elements and actions */
+ { "player.dying", "autsch.wav" },
+ { "element.exploding", "roaaar.wav" },
+
+ /* sounds for other game actions */
+ { "game.starting", SND_FILE_UNDEFINED },
+ { "game.running_out_of_time", "gong.wav" },
+ { "game.leveltime_bonus", "sirr.wav" },
+ { "game.losing", "lachen.wav" },
+ { "game.winning", SND_FILE_UNDEFINED },
+
+ /* sounds for other non-game actions */
+ { "menu.door_opening", "oeffnen.wav" },
+ { "menu.door_closing", "oeffnen.wav" },
+ { "menu.hall_of_fame", "halloffame.wav" },
+ { "menu.info_screen", "rhythmloop.wav" },
+
#if 0
- SND_ALCHEMY,
- SND_CHASE,
- SND_NETWORK,
- SND_CZARDASZ,
- SND_TYGER,
- SND_VOYAGER,
- SND_TWILIGHT
+ { "[not used]", "antigrav.wav" },
+ { "[not used]", "bong.wav" },
+ { "[not used]", "fuel.wav" },
+ { "[not used]", "holz.wav" },
+ { "[not used]", "hui.wav" },
+ { "[not used]", "kabumm.wav" },
+ { "[not used]", "kink.wav" },
+ { "[not used]", "kling.wav" },
+ { "[not used]", "krach.wav" },
+ { "[not used]", "laser.wav" },
+ { "[not used]", "quiek.wav" },
+ { "[not used]", "rumms.wav" },
+ { "[not used]", "schlopp.wav" },
+ { "[not used]", "schrff.wav" },
+ { "[not used]", "schwirr.wav" },
+ { "[not used]", "slurp.wav" },
+ { "[not used]", "sproing.wav" },
+ { "[not used]", "warnton.wav" },
+ { "[not used]", "whoosh.wav" },
+ { "[not used]", "boom.wav" },
+ { "[not used]", "exit.wav" },
#endif
};
-int num_bg_loops = sizeof(background_loop)/sizeof(int);
char *element_info[] =
{