rnd-20031116-1-src
[rocksndiamonds.git] / src / main.h
index bf7bb7ff4e081030cdf2fd8ba55b704509cd3ec6..801fec4b57aaae774b4af7f54e13793b23eb19a0 100644 (file)
@@ -26,6 +26,7 @@
 
 #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
@@ -35,6 +36,7 @@
 #define IMG_CUSTOM_START       IMG_CUSTOM_1
 
 #define SND_UNDEFINED          (-1)
+#define MUS_UNDEFINED          (-1)
 
 #define WIN_XSIZE              672
 #define WIN_YSIZE              560
 #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_SLEEPING                                26
+#define ACTION_DYING                           27
+#define ACTION_TURNING                         28
+#define ACTION_TURNING_FROM_LEFT               29
+#define ACTION_TURNING_FROM_RIGHT              30
+#define ACTION_TURNING_FROM_UP                 31
+#define ACTION_TURNING_FROM_DOWN               32
+#define ACTION_OTHER                           33
+
+#define NUM_ACTIONS                            34
 
 /* values for special image configuration suffixes (must match game mode) */
 #define GFX_SPECIAL_ARG_MAIN                   0
 #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 GAME_MODE_PSEUDO_TYPENAME              10
 #define GAME_MODE_QUIT                         11
 
+/* special definitions currently only used for custom artwork configuration */
+#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
@@ -1175,6 +1196,11 @@ struct PlayerInfo
   int inventory_size;
 };
 
+struct LevelSetInfo
+{
+  int music[NUM_SPECIAL_GFX_ARGS][MAX_LEVELS];
+};
+
 struct LevelInfo
 {
   int file_version;    /* file format version the level is stored with    */
@@ -1246,11 +1272,16 @@ struct TapeInfo
 
 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;
@@ -1435,6 +1466,17 @@ struct SoundInfo
   boolean loop;
 };
 
+struct MusicInfo
+{
+  boolean loop;
+};
+
+struct MusicPrefixInfo
+{
+  char *prefix;
+  boolean is_loop_music;
+};
+
 struct ElementActionInfo
 {
   char *suffix;
@@ -1498,9 +1540,10 @@ extern short                     ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
 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;
@@ -1527,6 +1570,7 @@ extern boolean                    network_player_action_received;
 
 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[];
@@ -1541,9 +1585,15 @@ extern struct ElementDirectionInfo element_direction_info[];
 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 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 */