#include "conf_gfx.h" /* include auto-generated data structure definitions */
#include "conf_snd.h" /* include auto-generated data structure definitions */
+#include "conf_mus.h" /* include auto-generated data structure definitions */
#define IMG_UNDEFINED (-1)
#define IMG_EMPTY IMG_EMPTY_SPACE
#define IMG_CUSTOM_START IMG_CUSTOM_1
#define SND_UNDEFINED (-1)
+#define MUS_UNDEFINED (-1)
#define WIN_XSIZE 672
#define WIN_YSIZE 560
#define PLAYER_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \
PROTECTED_FIELD(x, y))
-#define PLAYER_SWITCHING(p,x,y) ((p)->Switching && \
+#define PLAYER_SWITCHING(p,x,y) ((p)->is_switching && \
(p)->switch_x == (x) && (p)->switch_y == (y))
#define PLAYER_NR_GFX(g,i) ((g) + i * (IMG_PLAYER_2 - IMG_PLAYER_1))
#define EL_DYNABOMB_PLAYER_4 (EL_FIRST_DUMMY + 17)
#define EL_SHIELD_NORMAL_ACTIVE (EL_FIRST_DUMMY + 18)
#define EL_SHIELD_DEADLY_ACTIVE (EL_FIRST_DUMMY + 19)
-#define EL_DEFAULT (EL_FIRST_DUMMY + 20)
-#define EL_BD_DEFAULT (EL_FIRST_DUMMY + 21)
-#define EL_SP_DEFAULT (EL_FIRST_DUMMY + 22)
-#define EL_SB_DEFAULT (EL_FIRST_DUMMY + 23)
+#define EL_AMOEBA (EL_FIRST_DUMMY + 20)
+#define EL_DEFAULT (EL_FIRST_DUMMY + 21)
+#define EL_BD_DEFAULT (EL_FIRST_DUMMY + 22)
+#define EL_SP_DEFAULT (EL_FIRST_DUMMY + 23)
+#define EL_SB_DEFAULT (EL_FIRST_DUMMY + 24)
+#define EL_DUMMY (EL_FIRST_DUMMY + 25)
-#define MAX_NUM_ELEMENTS (EL_FIRST_DUMMY + 24)
+#define MAX_NUM_ELEMENTS (EL_FIRST_DUMMY + 26)
/* values for graphics/sounds action types */
#define ACTION_EMPTYING 22
#define ACTION_CHANGING 23
#define ACTION_EXPLODING 24
-#define ACTION_DYING 25
-#define ACTION_OTHER 26
-
-#define NUM_ACTIONS 27
+#define ACTION_BORING 25
+#define ACTION_BORING_1 26
+#define ACTION_BORING_2 27
+#define ACTION_BORING_3 28
+#define ACTION_BORING_4 29
+#define ACTION_BORING_5 30
+#define ACTION_BORING_6 31
+#define ACTION_BORING_7 32
+#define ACTION_BORING_8 33
+#define ACTION_SLEEPING 34
+#define ACTION_SLEEPING_1 35
+#define ACTION_SLEEPING_2 36
+#define ACTION_SLEEPING_3 37
+#define ACTION_DYING 38
+#define ACTION_TURNING 39
+#define ACTION_TURNING_FROM_LEFT 40
+#define ACTION_TURNING_FROM_RIGHT 41
+#define ACTION_TURNING_FROM_UP 42
+#define ACTION_TURNING_FROM_DOWN 43
+#define ACTION_OTHER 44
+
+#define NUM_ACTIONS 45
/* values for special image configuration suffixes (must match game mode) */
-#define GFX_SPECIAL_ARG_MAIN 0
-#define GFX_SPECIAL_ARG_LEVELS 1
-#define GFX_SPECIAL_ARG_SCORES 2
-#define GFX_SPECIAL_ARG_EDITOR 3
-#define GFX_SPECIAL_ARG_INFO 4
-#define GFX_SPECIAL_ARG_SETUP 5
-#define GFX_SPECIAL_ARG_PLAYING 6
-#define GFX_SPECIAL_ARG_DOOR 7
-#define GFX_SPECIAL_ARG_PREVIEW 8
-#define GFX_SPECIAL_ARG_CRUMBLED 9
+#define GFX_SPECIAL_ARG_DEFAULT 0
+#define GFX_SPECIAL_ARG_MAIN 1
+#define GFX_SPECIAL_ARG_LEVELS 2
+#define GFX_SPECIAL_ARG_SCORES 3
+#define GFX_SPECIAL_ARG_EDITOR 4
+#define GFX_SPECIAL_ARG_INFO 5
+#define GFX_SPECIAL_ARG_SETUP 6
+#define GFX_SPECIAL_ARG_PLAYING 7
+#define GFX_SPECIAL_ARG_DOOR 8
+#define GFX_SPECIAL_ARG_PREVIEW 9
+#define GFX_SPECIAL_ARG_CRUMBLED 10
-#define NUM_SPECIAL_GFX_ARGS 10
+#define NUM_SPECIAL_GFX_ARGS 11
/* values for image configuration suffixes */
#define GFX_ARG_DRAW_XOFFSET 23
#define GFX_ARG_DRAW_YOFFSET 24
#define GFX_ARG_DRAW_MASKED 25
-#define GFX_ARG_NAME 26
+#define GFX_ARG_ANIM_DELAY_FIXED 26
+#define GFX_ARG_ANIM_DELAY_RANDOM 27
+#define GFX_ARG_POST_DELAY_FIXED 28
+#define GFX_ARG_POST_DELAY_RANDOM 29
+#define GFX_ARG_NAME 30
-#define NUM_GFX_ARGS 27
+#define NUM_GFX_ARGS 31
/* values for sound configuration suffixes */
#define NUM_SND_ARGS 1
-/* values for font configuration */
+/* values for music configuration suffixes */
+#define MUS_ARG_MODE_LOOP 0
+
+#define NUM_MUS_ARGS 1
+
+/* values for font configuration */
#define FONT_INITIAL_1 0
#define FONT_INITIAL_2 1
#define FONT_INITIAL_3 2
#define NUM_INITIAL_FONTS 4
/* values for game_status (must match special image configuration suffixes) */
-#define GAME_MODE_MAIN 0
-#define GAME_MODE_LEVELS 1
-#define GAME_MODE_SCORES 2
-#define GAME_MODE_EDITOR 3
-#define GAME_MODE_INFO 4
-#define GAME_MODE_SETUP 5
-#define GAME_MODE_PLAYING 6
-#define GAME_MODE_PSEUDO_DOOR 7
-#define GAME_MODE_PSEUDO_PREVIEW 8
-#define GAME_MODE_PSEUDO_CRUMBLED 9
+#define GAME_MODE_DEFAULT 0
+#define GAME_MODE_MAIN 1
+#define GAME_MODE_LEVELS 2
+#define GAME_MODE_SCORES 3
+#define GAME_MODE_EDITOR 4
+#define GAME_MODE_INFO 5
+#define GAME_MODE_SETUP 6
+#define GAME_MODE_PLAYING 7
+#define GAME_MODE_PSEUDO_DOOR 8
+#define GAME_MODE_PSEUDO_PREVIEW 9
+#define GAME_MODE_PSEUDO_CRUMBLED 10
/* there are no special config file suffixes for these modes */
-#define GAME_MODE_PSEUDO_TYPENAME 10
-#define GAME_MODE_QUIT 11
+#define GAME_MODE_PSEUDO_TYPENAME 11
+#define GAME_MODE_QUIT 12
+
+/* special definitions currently only used for custom artwork configuration */
+#define MUSIC_PREFIX_BACKGROUND 0
+#define NUM_MUSIC_PREFIXES 1
+#define MAX_LEVELS 1000
+
#define PROGRAM_VERSION_MAJOR 3
#define PROGRAM_VERSION_MINOR 0
-#define PROGRAM_VERSION_PATCH 7
-#define PROGRAM_VERSION_RELEASE 0
-#define PROGRAM_VERSION_STRING "3.0.7"
+#define PROGRAM_VERSION_PATCH 8
+#define PROGRAM_VERSION_BUILD 0
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
-#define PROGRAM_RIGHTS_STRING "Copyright ©1995-2003 by"
+#define PROGRAM_COPYRIGHT_STRING "Copyright ©1995-2003 by Holger Schemel"
+
+#if 0
#define PROGRAM_DOS_PORT_STRING "DOS port done by Guido Schulz"
#define PROGRAM_IDENT_STRING PROGRAM_VERSION_STRING " " TARGET_STRING
#define WINDOW_TITLE_STRING PROGRAM_TITLE_STRING " " PROGRAM_IDENT_STRING
-#define WINDOW_SUBTITLE_STRING PROGRAM_RIGHTS_STRING " " PROGRAM_AUTHOR_STRING
+#endif
+
#define ICON_TITLE_STRING PROGRAM_TITLE_STRING
#define COOKIE_PREFIX "ROCKSNDIAMONDS"
#define FILENAME_PREFIX "Rocks"
** 1.4 (still in use)
** 2.0 (actual)
*/
-#define FILE_VERSION_1_0 VERSION_IDENT(1,0,0)
-#define FILE_VERSION_1_2 VERSION_IDENT(1,2,0)
-#define FILE_VERSION_1_4 VERSION_IDENT(1,4,0)
-#define FILE_VERSION_2_0 VERSION_IDENT(2,0,0)
+#define FILE_VERSION_1_0 VERSION_IDENT(1,0,0,0)
+#define FILE_VERSION_1_2 VERSION_IDENT(1,2,0,0)
+#define FILE_VERSION_1_4 VERSION_IDENT(1,4,0,0)
+#define FILE_VERSION_2_0 VERSION_IDENT(2,0,0,0)
/* file version does not change for every program version, but is changed
when new features are introduced that are incompatible with older file
#define GAME_VERSION_1_4 FILE_VERSION_1_4
#define GAME_VERSION_2_0 FILE_VERSION_2_0
-#define GAME_VERSION_ACTUAL RELEASE_IDENT(PROGRAM_VERSION_MAJOR, \
+#define GAME_VERSION_ACTUAL VERSION_IDENT(PROGRAM_VERSION_MAJOR, \
PROGRAM_VERSION_MINOR, \
PROGRAM_VERSION_PATCH, \
- PROGRAM_VERSION_RELEASE)
+ PROGRAM_VERSION_BUILD)
/* values for game_emulation */
#define EMU_NONE 0
int list_size_default;
int list_size[NUM_SPECIAL_GFX_ARGS];
+
+ int sound[NUM_SPECIAL_GFX_ARGS];
+ int music[NUM_SPECIAL_GFX_ARGS];
};
struct DoorInfo
byte programmed_action; /* action forced by game itself (like moving
through doors); overrides other actions */
- int jx,jy, last_jx,last_jy;
+ int jx, jy, last_jx, last_jy;
int MovDir, MovPos, GfxDir, GfxPos;
int Frame, StepFrame;
int GfxAction;
boolean use_murphy_graphic;
- boolean use_disk_red_graphic;
- boolean Pushing;
- boolean Switching;
boolean LevelSolved, GameOver;
- boolean snapped;
-
- int switch_x, switch_y;
int last_move_dir;
- boolean is_moving;
+
boolean is_waiting;
+ boolean is_moving;
boolean is_digging;
+ boolean is_snapping;
boolean is_collecting;
+ boolean is_pushing;
+ boolean is_switching;
+
+ boolean is_bored;
+ boolean is_sleeping;
+
+ int frame_counter_bored;
+ int frame_counter_sleeping;
+
+ int anim_delay_counter;
+ int post_delay_counter;
+
+ int special_action_bored;
+ int special_action_sleeping;
+
+ int num_special_action_bored;
+ int num_special_action_sleeping;
+
+ int switch_x, switch_y;
int show_envelope;
int inventory_size;
};
+struct LevelSetInfo
+{
+ int music[MAX_LEVELS];
+};
+
struct LevelInfo
{
int file_version; /* file format version the level is stored with */
struct GameInfo
{
+ /* values for engine initialization */
+ int default_push_delay_fixed;
+ int default_push_delay_random;
+
/* constant within running game */
int engine_version;
int emulation;
int initial_move_delay;
int initial_move_delay_value;
+ int initial_push_delay_value;
/* variable within running game */
int yamyam_content_nr;
boolean gravity;
boolean explosions_delayed;
boolean envelope_active;
+
+ /* values for player idle animation (no effect on engine) */
+ int player_boring_delay_fixed;
+ int player_boring_delay_random;
+ int player_sleeping_delay_fixed;
+ int player_sleeping_delay_random;
};
struct GlobalInfo
int diggable_like; /* element for cloning digging graphics */
int border_size; /* border size for "crumbled" graphics */
+ int anim_delay_fixed; /* optional delay values for bored and */
+ int anim_delay_random; /* sleeping player animations (animation */
+ int post_delay_fixed; /* intervall and following pause before */
+ int post_delay_random; /* next intervall (bored animation only) */
+
int step_offset; /* optional step offset of toon animations */
int step_delay; /* optional step delay of toon animations */
boolean loop;
};
+struct MusicInfo
+{
+ boolean loop;
+};
+
+struct MusicPrefixInfo
+{
+ char *prefix;
+ boolean is_loop_music;
+};
+
+struct MusicFileInfo
+{
+ char *context;
+
+ char *title;
+ char *artist;
+ char *album;
+ char *year;
+
+ struct MusicFileInfo *next;
+};
+
struct ElementActionInfo
{
char *suffix;
int value;
};
+struct InfoAnimationInfo
+{
+ int element;
+ int action;
+ int direction;
+
+ int delay;
+};
+
#if 0
extern GC tile_clip_gc;
extern boolean Pushed[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern unsigned long Changed[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern unsigned long ChangeEvent[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short WasJustMoving[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short WasJustFalling[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short AmoebaCnt[MAX_NUM_AMOEBA];
extern short AmoebaCnt2[MAX_NUM_AMOEBA];
extern unsigned long Properties[MAX_NUM_ELEMENTS][NUM_EP_BITFIELDS];
extern int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern int GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern int GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern int GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int GfxDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern int lev_fieldx, lev_fieldy;
extern int scroll_x, scroll_y;
extern int graphics_action_mapping[];
+extern struct LevelSetInfo levelset;
extern struct LevelInfo level, level_template;
extern struct PlayerInfo stored_player[], *local_player;
extern struct HiScore highscore[];
extern struct SpecialSuffixInfo special_suffix_info[];
extern struct TokenIntPtrInfo image_config_vars[];
extern struct FontInfo font_info[];
+extern struct MusicPrefixInfo music_prefix_info[];
extern struct GraphicInfo *graphic_info;
extern struct SoundInfo *sound_info;
-extern struct ConfigInfo image_config[], sound_config[];
-extern struct ConfigInfo image_config_suffix[], sound_config_suffix[];
+extern struct MusicInfo *music_info;
+extern struct MusicFileInfo *music_file_info;
+extern struct InfoAnimationInfo *info_animation_info;
+extern struct ConfigInfo image_config[];
+extern struct ConfigInfo sound_config[];
+extern struct ConfigInfo music_config[];
+extern struct ConfigInfo image_config_suffix[];
+extern struct ConfigInfo sound_config_suffix[];
+extern struct ConfigInfo music_config_suffix[];
#endif /* MAIN_H */