rnd-20031122-2-src
[rocksndiamonds.git] / src / main.h
index 801fec4b57aaae774b4af7f54e13793b23eb19a0..627d52910ab897329294d468e7765a068e16013c 100644 (file)
 #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 NUM_ACTIONS                            34
 
 /* 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 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
 
@@ -1120,6 +1125,9 @@ struct MenuInfo
 
   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
@@ -1198,7 +1206,7 @@ struct PlayerInfo
 
 struct LevelSetInfo
 {
-  int music[NUM_SPECIAL_GFX_ARGS][MAX_LEVELS];
+  int music[MAX_LEVELS];
 };
 
 struct LevelInfo
@@ -1477,6 +1485,18 @@ struct MusicPrefixInfo
   boolean is_loop_music;
 };
 
+struct MusicFileInfo
+{
+  char *context;
+
+  char *title;
+  char *artist;
+  char *album;
+  char *year;
+
+  struct MusicFileInfo *next;
+};
+
 struct ElementActionInfo
 {
   char *suffix;
@@ -1496,6 +1516,15 @@ struct SpecialSuffixInfo
   int value;
 };
 
+struct InfoAnimationInfo
+{
+  int element;
+  int action;
+  int direction;
+
+  int delay;
+};
+
 
 #if 0
 extern GC                      tile_clip_gc;
@@ -1589,6 +1618,8 @@ extern struct MusicPrefixInfo     music_prefix_info[];
 extern struct GraphicInfo      *graphic_info;
 extern struct SoundInfo               *sound_info;
 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[];