version number set to 4.1.1.1
[rocksndiamonds.git] / src / main.h
index 224c3513cdeddfb96303230415a396f7a5f137a0..b66da1d20e2ba4a116ba1692766e218d9d69c331 100644 (file)
@@ -24,6 +24,7 @@
 #include "game_em/game_em.h"
 #include "game_sp/game_sp.h"
 #include "game_mm/game_mm.h"
+#include "engines.h"
 
 #include "conf_gfx.h"  /* include auto-generated data structure definitions */
 #include "conf_snd.h"  /* include auto-generated data structure definitions */
 #define IS_NEXT_FRAME(f, g)    (IS_NEW_FRAME(f, g) && (f) > 0)
 
 #define IS_LOOP_SOUND(s)       (sound_info[s].loop)
+#define IS_LOOP_MUSIC(s)       (music_info[s].loop)
 
 #define IS_SPECIAL_GFX_ARG(a)  ((a) >= 0 && (a) < NUM_SPECIAL_GFX_ARGS)
 
 #define GFX_ARG_POST_DELAY_FIXED       39
 #define GFX_ARG_POST_DELAY_RANDOM      40
 #define GFX_ARG_INIT_EVENT             41
-#define GFX_ARG_ANIM_EVENT             42
-#define GFX_ARG_NAME                   43
-#define GFX_ARG_SCALE_UP_FACTOR                44
-#define GFX_ARG_TILE_SIZE              45
-#define GFX_ARG_CLONE_FROM             46
-#define GFX_ARG_FADE_MODE              47
-#define GFX_ARG_FADE_DELAY             48
-#define GFX_ARG_POST_DELAY             49
-#define GFX_ARG_AUTO_DELAY             50
-#define GFX_ARG_ALIGN                  51
-#define GFX_ARG_VALIGN                 52
-#define GFX_ARG_SORT_PRIORITY          53
-#define GFX_ARG_CLASS                  54
-#define GFX_ARG_STYLE                  55
-#define GFX_ARG_ACTIVE_XOFFSET         56
-#define GFX_ARG_ACTIVE_YOFFSET         57
-#define GFX_ARG_PRESSED_XOFFSET                58
-#define GFX_ARG_PRESSED_YOFFSET                59
-
-#define NUM_GFX_ARGS                   60
+#define GFX_ARG_INIT_EVENT_ACTION      42
+#define GFX_ARG_ANIM_EVENT             43
+#define GFX_ARG_ANIM_EVENT_ACTION      44
+#define GFX_ARG_NAME                   45
+#define GFX_ARG_SCALE_UP_FACTOR                46
+#define GFX_ARG_TILE_SIZE              47
+#define GFX_ARG_CLONE_FROM             48
+#define GFX_ARG_FADE_MODE              49
+#define GFX_ARG_FADE_DELAY             50
+#define GFX_ARG_POST_DELAY             51
+#define GFX_ARG_AUTO_DELAY             52
+#define GFX_ARG_ALIGN                  53
+#define GFX_ARG_VALIGN                 54
+#define GFX_ARG_SORT_PRIORITY          55
+#define GFX_ARG_CLASS                  56
+#define GFX_ARG_STYLE                  57
+#define GFX_ARG_ACTIVE_XOFFSET         58
+#define GFX_ARG_ACTIVE_YOFFSET         59
+#define GFX_ARG_PRESSED_XOFFSET                60
+#define GFX_ARG_PRESSED_YOFFSET                61
+
+#define NUM_GFX_ARGS                   62
 
 
 /* values for sound configuration suffixes */
 #define FONT_GAME_INFO                 39
 #define FONT_INFO_ELEMENTS             40
 #define FONT_INFO_LEVELSET             41
+#define FONT_MAIN_NETWORK_PLAYERS      42
 
-#define NUM_FONTS                      42
+#define NUM_FONTS                      43
 #define NUM_INITIAL_FONTS              4
 
 /* values for toon animation configuration */
 /* program information and versioning definitions */
 #define PROGRAM_VERSION_SUPER          4
 #define PROGRAM_VERSION_MAJOR          1
-#define PROGRAM_VERSION_MINOR          0
+#define PROGRAM_VERSION_MINOR          1
 #define PROGRAM_VERSION_PATCH          1
 #define PROGRAM_VERSION_EXTRA          ""
 
@@ -2640,6 +2645,9 @@ struct MenuMainButtonInfo
   struct MenuPosInfo first_level;
   struct MenuPosInfo last_level;
   struct MenuPosInfo level_number;
+
+  struct MenuPosInfo insert_solution;
+  struct MenuPosInfo play_solution;
 };
 
 struct MenuMainTextInfo
@@ -2679,6 +2687,9 @@ struct MenuMainInfo
   struct MenuMainButtonInfo button;
   struct MenuMainTextInfo text;
   struct MenuMainInputInfo input;
+
+  struct TextPosInfo preview_players;
+  struct TextPosInfo network_players;
 };
 
 struct TitleFadingInfo
@@ -2957,11 +2968,6 @@ struct EnvelopeInfo
   char text[MAX_ENVELOPE_TEXT_LEN + 1];
 };
 
-struct LevelSetInfo
-{
-  int music[MAX_LEVELS];
-};
-
 struct LevelFileInfo
 {
   int nr;
@@ -3089,6 +3095,7 @@ struct LevelInfo
   boolean can_pass_to_walkable;        /* player can pass to empty or walkable tile */
   boolean grow_into_diggable;  /* amoeba can grow into anything diggable */
   boolean auto_exit_sokoban;   /* automatically finish solved Sokoban levels */
+  boolean solved_by_one_player;        /* level is solved if one player enters exit */
 
   boolean continuous_snapping; /* repeated snapping without releasing key */
   boolean block_snap_field;    /* snapping blocks field to show animation */
@@ -3121,6 +3128,17 @@ struct LevelInfo
   boolean use_action_after_change_bug;
 };
 
+struct NetworkLevelInfo
+{
+  char *leveldir_identifier;           /* network levelset identifier */
+
+  struct LevelFileInfo file_info;      /* file info for level file */
+  struct LevelFileInfo tmpl_info;      /* file info for level template */
+
+  boolean use_network_level_files;     /* use levels from network server */
+  boolean use_custom_template;         /* use CEs from level template */
+};
+
 struct GlobalInfo
 {
   char *autoplay_leveldir;
@@ -3407,7 +3425,9 @@ struct GraphicInfo
   int post_delay_random;       /* animations (pause before next animation) */
 
   int init_event;              /* optional event triggering animation start */
+  int init_event_action;       /* optional action called on animation start */
   int anim_event;              /* optional event triggering animation end   */
+  int anim_event_action;       /* optional action called on animation end   */
 
   int step_offset;             /* optional step offset of toon animations */
   int step_xoffset;            /* optional step offset of toon animations */
@@ -3612,7 +3632,6 @@ extern boolean                    network_player_action_received;
 
 extern int                     graphics_action_mapping[];
 
-extern struct LevelSetInfo     levelset;
 extern struct LevelInfo                level, level_template;
 extern struct HiScore          highscore[];
 extern struct TapeInfo         tape;