#define IS_DRAWABLE(e) ((e) < EL_BLOCKED)
#define IS_NOT_DRAWABLE(e) ((e) >= EL_BLOCKED)
#define TAPE_IS_EMPTY(x) ((x).length == 0)
-#define TAPE_IS_STOPPED(x) (!(x).recording && !(x).playing &&!(x).pausing)
+#define TAPE_IS_STOPPED(x) (!(x).recording && !(x).playing)
#define PLAYERINFO(x,y) (&stored_player[StorePlayer[x][y]-EL_SPIELER1])
#define SHIELD_ON(p) ((p)->shield_passive_time_left > 0)
boolean LevelSolved, GameOver;
boolean snapped;
- unsigned long move_delay;
- int move_delay_value;
-
int last_move_dir;
int is_moving;
+ unsigned long move_delay;
+ int move_delay_value;
+
unsigned long push_delay;
unsigned long push_delay_value;
boolean pause_before_death;
boolean recording, playing, pausing;
boolean fast_forward;
+ boolean index_search;
+ boolean quick_resume;
+ boolean single_step;
boolean changed;
boolean player_participates[MAX_PLAYERS];
int num_participating_players;
+
struct
{
byte action[MAX_PLAYERS];
extern DrawBuffer *fieldbuffer;
extern DrawBuffer *drawto_field;
-extern int joystick_device;
-extern char *joystick_device_name[];
-
extern int game_status;
extern boolean level_editor_test_game;
extern boolean network_playing;
extern int key_joystick_mapping;
-extern int global_joystick_status;
extern boolean redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE];
extern int redraw_x1, redraw_y1;
extern struct GameInfo game;
extern struct GlobalInfo global;
+extern struct SoundEffectInfo sound_effects[];
+
extern char *sound_name[];
-extern int background_loop[];
-extern int num_bg_loops;
extern char *element_info[];
extern int num_element_info;
#define NUM_SOUNDS 55
+
+/* sound effects */
+#define SND_TEST1 0
+#define SND_TEST2 1
+#define SND_TEST3 2
+
+#define NUM_SOUND_EFFECTS 3
+
+
+#define SND_AMOEBA_GROWING 0
+#define SND_PLAYER_SCREAMING 0
+#define SND_ACID_SPLASHING 0
+#define SND_MOLE_EATING_AMOEBA 0
+#define SND_PENGUIN_ENTERING_EXIT 0
+#define SND_PLAYER_ENTERING_EXIT 0
+#define SND_PLAYER_SOLVING_SOKOBAN 0
+#define SND_TIME_ORB_FULL_IMPACT 0
+#define SND_TIME_ORB_EMPTY_IMPACT 0
+#define SND_ELECTRIC_BULB_LIGHT 0
+#define SND_SOKOBAN_FIELD_FILLING 0
+#define SND_LEVELTIME_RUNNING_OUT 0
+#define SND_EXTRA_TIME_COLLECTING 0
+#define SND_TIME_ORB_FULL_COLLECTING 0
+#define SND_MENU_HALL_OF_FAME 0
+#define SND_KEY_IMPACT 0
+#define SND_EM_KEY_IMPACT 0
+#define SND_BUG_MOVING 0
+#define SND_BUTTERFLY_MOVING 0
+#define SND_ROCK_IMPACT 0
+#define SND_BD_ROCK_IMPACT 0
+#define SND_AMOEBA_TURNS_TO_ROCK 0
+#define SND_NUT_IMPACT 0
+#define SND_PEARL_BREAKING 0
+#define SND_NUT_CRACKING 0
+#define SND_NUT_PUSHING 0
+#define SND_PLAYER_LAUGHING_AT 0
+#define SND_ROBOT_WHEEL_RUNNING 0
+#define SND_TIMEGATE_WHEEL_RUNNING 0
+#define SND_MAGIC_WALL_RUNNING 0
+#define SND_YAMYAM_WAITING 0
+#define SND_MENU_DOOR 0
+#define SND_SWITCHGATE_OPENING 0
+#define SND_SWITCHGATE_CLOSING 0
+#define SND_TIMEGATE_OPENING 0
+#define SND_TIMEGATE_CLOSING 0
+#define SND_EXIT_OPENING 0
+#define SND_EMERALD_IMPACT 0
+#define SND_BD_DIAMOND_IMPACT 0
+#define SND_DIAMOND_IMPACT 0
+#define SND_INFOTRON_IMPACT 0
+#define SND_AMOEBA_TURNS_TO_GEM 0
+#define SND_EMERALD_COLLECTING 0
+#define SND_BD_DIAMOND_COLLECTING 0
+#define SND_DIAMOND_COLLECTING 0
+#define SND_PEARL_COLLECTING 0
+#define SND_CRYSTAL_COLLECTING 0
+#define SND_SPEED_PILL_COLLECTING 0
+#define SND_ENVELOPE_COLLECTING 0
+#define SND_SHIELD_PASSIVE_COLLECTING 0
+#define SND_SHIELD_ACTIVE_COLLECTING 0
+#define SND_DYNAMITE_COLLECTING 0
+#define SND_DYNABOMB_NR_COLLECTING 0
+#define SND_DYNABOMB_SZ_COLLECTING 0
+#define SND_DYNABOMB_XL_COLLECTING 0
+#define SND_KEY_COLLECTING 0
+#define SND_EM_KEY_COLLECTING 0
+#define SND_ROCK_PUSHING 0
+#define SND_BD_ROCK_PUSHING 0
+#define SND_BOMB_PUSHING 0
+#define SND_DX_SUPABOMB_PUSHING 0
+#define SND_TIME_ORB_EMPTY_PUSHING 0
+#define SND_SPRING_PUSHING 0
+#define SND_SOKOBAN_OBJECT_PUSHING 0
+#define SND_SATELLITE_PUSHING 0
+#define SND_SP_DISK_YELLOW_PUSHING 0
+#define SND_DIAMOND_SMASHING 0
+#define SND_MAGIC_WALL_ACTIVATING 0
+#define SND_MENU_INFO_SCREEN 0
+#define SND_EXPLOSION 0
+#define SND_SPACESHIP_MOVING 0
+#define SND_FIREFLY_MOVING 0
+#define SND_ROBOT_MOVING 0
+#define SND_SAND_DIGGING 0
+#define SND_SAND_INVISIBLE_DIGGING 0
+#define SND_TRAP_INACTIVE_DIGGING 0
+#define SND_BALLOON_MOVING 0
+#define SND_LEVELTIME_BONUS 0
+#define SND_DYNAMITE_BURNING 0
+#define SND_SP_BASE_DIGGING 0
+#define SND_SP_BUGGY_BASE_DIGGING 0
+#define SND_SP_INFOTRON_COLLECTING 0
+#define SND_SP_DISK_RED_COLLECTING 0
+#define SND_SP_ZONK_IMPACT 0
+#define SND_SP_ZONK_PUSHING 0
+#define SND_SP_DISK_ORANGE_PUSHING 0
+#define SND_SP_BUGGY_BASE_PASSING 0
+#define SND_SP_EXPLOSION 0
+#define SND_EMPTY_SPACE_DIGGING 0
+#define SND_EM_GATE_PASSING 0
+#define SND_SWITCHGATE_PASSING 0
+#define SND_TIMEGATE_PASSING 0
+#define SND_SP_PORT_PASSING 0
+
+#define NUM_SOUND_EFFECTS__NEW 0
+
+
/* values for game_status */
#define EXITGAME 0
#define MAINMENU 1
#define TYPENAME 6
#define HALLOFFAME 7
#define SETUP 8
-#define SETUPINPUT 9
-#define CALIBRATION 10
#define PROGRAM_VERSION_MAJOR 2
#define PROGRAM_VERSION_MINOR 0
#define WINDOW_SUBTITLE_STRING PROGRAM_RIGHTS_STRING " " PROGRAM_AUTHOR_STRING
#define ICON_TITLE_STRING PROGRAM_TITLE_STRING
#define UNIX_USERDATA_DIRECTORY ".rocksndiamonds"
+#define COOKIE_PREFIX "ROCKSNDIAMONDS"
+#define FILENAME_PREFIX "Rocks"
#define X11_ICON_FILENAME "rocks_icon.xbm"
#define X11_ICONMASK_FILENAME "rocks_iconmask.xbm"