version number set to 4.0.1.0
[rocksndiamonds.git] / src / main.h
index 16c73cc4267f08dafb977cba289c342dbbf4709e..90d6e8800e2a37f6e2d2de6bbc97bed8a3bfc16c 100644 (file)
 #define ACTION_PART_6                  89
 #define ACTION_PART_7                  90
 #define ACTION_PART_8                  91
-#define ACTION_OTHER                   92
-
-#define NUM_ACTIONS                    93
+#define ACTION_PART_9                  92
+#define ACTION_PART_10                 93
+#define ACTION_PART_11                 94
+#define ACTION_PART_12                 95
+#define ACTION_PART_13                 96
+#define ACTION_PART_14                 97
+#define ACTION_PART_15                 98
+#define ACTION_PART_16                 99
+#define ACTION_PART_17                 100
+#define ACTION_PART_18                 101
+#define ACTION_PART_19                 102
+#define ACTION_PART_20                 103
+#define ACTION_PART_21                 104
+#define ACTION_PART_22                 105
+#define ACTION_PART_23                 106
+#define ACTION_PART_24                 107
+#define ACTION_PART_25                 108
+#define ACTION_PART_26                 109
+#define ACTION_PART_27                 110
+#define ACTION_PART_28                 111
+#define ACTION_PART_29                 112
+#define ACTION_PART_30                 113
+#define ACTION_PART_31                 114
+#define ACTION_PART_32                 115
+#define ACTION_OTHER                   116
+
+#define NUM_ACTIONS                    117
 
 #define ACTION_BORING_LAST             ACTION_BORING_10
 #define ACTION_SLEEPING_LAST           ACTION_SLEEPING_3
 #define GFX_SPECIAL_ARG_SUBMENU                29
 #define GFX_SPECIAL_ARG_MENU           30
 #define GFX_SPECIAL_ARG_TOONS          31
-#define GFX_SPECIAL_ARG_FADING         32
-#define GFX_SPECIAL_ARG_QUIT           33
+#define GFX_SPECIAL_ARG_SCORESOLD      32
+#define GFX_SPECIAL_ARG_SCORESNEW      33
+#define GFX_SPECIAL_ARG_FADING         34
+#define GFX_SPECIAL_ARG_QUIT           35
 
-#define NUM_SPECIAL_GFX_ARGS           34
+#define NUM_SPECIAL_GFX_ARGS           36
 
 /* these additional definitions are currently only used for draw offsets */
 #define GFX_SPECIAL_ARG_INFO_MAIN      0
 #define GFX_ARG_ANIM_DELAY_RANDOM      38
 #define GFX_ARG_POST_DELAY_FIXED       39
 #define GFX_ARG_POST_DELAY_RANDOM      40
-#define GFX_ARG_NAME                   41
-#define GFX_ARG_SCALE_UP_FACTOR                42
-#define GFX_ARG_TILE_SIZE              43
-#define GFX_ARG_CLONE_FROM             44
-#define GFX_ARG_FADE_MODE              45
-#define GFX_ARG_FADE_DELAY             46
-#define GFX_ARG_POST_DELAY             47
-#define GFX_ARG_AUTO_DELAY             48
-#define GFX_ARG_ALIGN                  49
-#define GFX_ARG_VALIGN                 50
-#define GFX_ARG_SORT_PRIORITY          51
-#define GFX_ARG_CLASS                  52
-#define GFX_ARG_STYLE                  53
-#define GFX_ARG_ACTIVE_XOFFSET         54
-#define GFX_ARG_ACTIVE_YOFFSET         55
-#define GFX_ARG_PRESSED_XOFFSET                56
-#define GFX_ARG_PRESSED_YOFFSET                57
-
-#define NUM_GFX_ARGS                   58
+#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
 
 
 /* values for sound configuration suffixes */
 #define MAX_NUM_TOONS                  20
 
 /* values for global animation configuration (must match those from main.c) */
-#define NUM_GLOBAL_ANIMS               8
-#define NUM_GLOBAL_ANIM_PARTS          8
+#define NUM_GLOBAL_ANIMS               MAX_GLOBAL_ANIMS
+#define NUM_GLOBAL_ANIM_PARTS          MAX_GLOBAL_ANIM_PARTS
 #define NUM_GLOBAL_ANIM_PARTS_ALL      (NUM_GLOBAL_ANIM_PARTS + 1)
 #define NUM_GLOBAL_ANIM_TOKENS         (2 * NUM_GLOBAL_ANIMS)
 
 #define GLOBAL_ANIM_ID_GRAPHIC_FIRST   0
-#define GLOBAL_ANIM_ID_GRAPHIC_LAST    7
-#define GLOBAL_ANIM_ID_CONTROL_FIRST   (NUM_GLOBAL_ANIMS + 0)
-#define GLOBAL_ANIM_ID_CONTROL_LAST    (NUM_GLOBAL_ANIMS + 7)
+#define GLOBAL_ANIM_ID_GRAPHIC_LAST    (NUM_GLOBAL_ANIMS - 1)
+#define GLOBAL_ANIM_ID_CONTROL_FIRST   (NUM_GLOBAL_ANIMS)
+#define GLOBAL_ANIM_ID_CONTROL_LAST    (2 * NUM_GLOBAL_ANIMS - 1)
 
 #define GLOBAL_ANIM_ID_PART_FIRST      0
-#define GLOBAL_ANIM_ID_PART_LAST       7
-#define GLOBAL_ANIM_ID_PART_BASE       8
+#define GLOBAL_ANIM_ID_PART_LAST       (NUM_GLOBAL_ANIM_PARTS - 1)
+#define GLOBAL_ANIM_ID_PART_BASE       (NUM_GLOBAL_ANIM_PARTS)
 
 /* values for global border graphics */
 #define IMG_GLOBAL_BORDER_FIRST                IMG_GLOBAL_BORDER
 #define GAME_MODE_PSEUDO_SUBMENU       29
 #define GAME_MODE_PSEUDO_MENU          30
 #define GAME_MODE_PSEUDO_TOONS         31
-#define GAME_MODE_PSEUDO_FADING                32
-#define GAME_MODE_QUIT                 33
+#define GAME_MODE_PSEUDO_SCORESOLD     32
+#define GAME_MODE_PSEUDO_SCORESNEW     33
+#define GAME_MODE_PSEUDO_FADING                34
+#define GAME_MODE_QUIT                 35
 
-#define NUM_GAME_MODES                 34
+#define NUM_GAME_MODES                 36
 
 /* special definitions currently only used for custom artwork configuration */
 #define MUSIC_PREFIX_BACKGROUND                0
 /* program information and versioning definitions */
 #define PROGRAM_VERSION_MAJOR          4
 #define PROGRAM_VERSION_MINOR          0
-#define PROGRAM_VERSION_PATCH          0
+#define PROGRAM_VERSION_PATCH          1
 #define PROGRAM_VERSION_BUILD          0
+#define PROGRAM_VERSION_EXTRA          ""
 
 #define PROGRAM_TITLE_STRING           "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING          "Holger Schemel"
 #define PROGRAM_EMAIL_STRING           "info@artsoft.org"
 #define PROGRAM_WEBSITE_STRING         "http://www.artsoft.org/"
-#define PROGRAM_COPYRIGHT_STRING       "Copyright \xa9""1995-2016 by Holger Schemel"
+#define PROGRAM_COPYRIGHT_STRING       "Copyright \xa9""1995-2017 by Holger Schemel"
 #define PROGRAM_COMPANY_STRING         "A Game by Artsoft Entertainment"
 
 #define PROGRAM_ICON_FILENAME          "RocksIcon32x32.png"
 #define NUM_ENGINE_TYPES               4
 
 /* values for automatically playing tapes */
-#define AUTOPLAY_TEST                  0
-#define AUTOPLAY_PLAY                  1
-#define AUTOPLAY_FFWD                  2
+#define AUTOPLAY_NONE                  0
+#define AUTOPLAY_PLAY                  (1 << 0)
+#define AUTOPLAY_FFWD                  (1 << 1)
+#define AUTOPLAY_WARP                  (1 << 2)
+#define AUTOPLAY_TEST                  (1 << 3)
+#define AUTOPLAY_WARP_NO_DISPLAY       AUTOPLAY_TEST
+
+#define AUTOPLAY_MODE_NONE             0
+#define AUTOPLAY_MODE_PLAY             (AUTOPLAY_MODE_NONE | AUTOPLAY_PLAY)
+#define AUTOPLAY_MODE_FFWD             (AUTOPLAY_MODE_PLAY | AUTOPLAY_FFWD)
+#define AUTOPLAY_MODE_WARP             (AUTOPLAY_MODE_FFWD | AUTOPLAY_WARP)
+#define AUTOPLAY_MODE_TEST             (AUTOPLAY_MODE_WARP | AUTOPLAY_TEST)
+#define AUTOPLAY_MODE_WARP_NO_DISPLAY  AUTOPLAY_MODE_TEST
 
 
 struct BorderInfo
@@ -2338,40 +2379,44 @@ struct EditorGadgetInfo
 
 struct EditorButtonInfo
 {
-  struct XY prev_level;
-  struct XY next_level;
-
-  struct XY properties;
-
-  struct XY draw_single;
-  struct XY draw_connected;
-  struct XY draw_line;
-  struct XY draw_arc;
-  struct XY draw_rectangle;
-  struct XY draw_filled_box;
-  struct XY rotate_up;
-  struct XY draw_text;
-  struct XY flood_fill;
-  struct XY rotate_left;
-  struct XY zoom_level;
-  struct XY rotate_right;
-  struct XY draw_random;
-  struct XY grab_brush;
-  struct XY rotate_down;
-  struct XY pick_element;
-
-  struct XY ce_copy_from;
-  struct XY ce_copy_to;
-  struct XY ce_swap;
-  struct XY ce_copy;
-  struct XY ce_paste;
-
-  struct XY undo;
-  struct XY conf;
-  struct XY save;
-  struct XY clear;
-  struct XY test;
-  struct XY exit;
+  struct XYTileSize prev_level;
+  struct XYTileSize next_level;
+
+  struct XYTileSize properties;
+  struct XYTileSize element_left;
+  struct XYTileSize element_middle;
+  struct XYTileSize element_right;
+  struct XYTileSize palette;
+
+  struct XYTileSize draw_single;
+  struct XYTileSize draw_connected;
+  struct XYTileSize draw_line;
+  struct XYTileSize draw_arc;
+  struct XYTileSize draw_rectangle;
+  struct XYTileSize draw_filled_box;
+  struct XYTileSize rotate_up;
+  struct XYTileSize draw_text;
+  struct XYTileSize flood_fill;
+  struct XYTileSize rotate_left;
+  struct XYTileSize zoom_level;
+  struct XYTileSize rotate_right;
+  struct XYTileSize draw_random;
+  struct XYTileSize grab_brush;
+  struct XYTileSize rotate_down;
+  struct XYTileSize pick_element;
+
+  struct XYTileSize ce_copy_from;
+  struct XYTileSize ce_copy_to;
+  struct XYTileSize ce_swap;
+  struct XYTileSize ce_copy;
+  struct XYTileSize ce_paste;
+
+  struct XYTileSize undo;
+  struct XYTileSize conf;
+  struct XYTileSize save;
+  struct XYTileSize clear;
+  struct XYTileSize test;
+  struct XYTileSize exit;
 };
 
 struct EditorInputInfo
@@ -2379,21 +2424,17 @@ struct EditorInputInfo
   struct XY level_number;
 };
 
-struct EditorPaletteElementInfo
-{
-  int x, y;
-  int tile_size;
-};
-
 struct EditorPaletteInfo
 {
   int x, y;
   int cols, rows;
   int tile_size;
+  boolean show_as_separate_screen;
+  boolean show_on_element_buttons;
 
-  struct EditorPaletteElementInfo element_left;
-  struct EditorPaletteElementInfo element_middle;
-  struct EditorPaletteElementInfo element_right;
+  struct XYTileSize element_left;
+  struct XYTileSize element_middle;
+  struct XYTileSize element_right;
 };
 
 struct EditorDrawingAreaInfo
@@ -2585,6 +2626,7 @@ struct LevelInfo
   boolean use_custom_template; /* use custom properties from template file */
 
   boolean no_valid_file;       /* set when level file missing or invalid */
+  boolean no_level_file;       /* set when falling back to level template */
 
   boolean changed;             /* set when level was changed in the editor */
 
@@ -2817,6 +2859,11 @@ struct FontInfo
                                /* internal bitmap ID for special graphics */
 };
 
+struct GlobalAnimNameInfo
+{
+  char *token_name;            /* global animation token in config files */
+};
+
 struct GlobalAnimInfo
 {
   char *token_name;            /* global animation token in config files */
@@ -2824,8 +2871,9 @@ struct GlobalAnimInfo
   /* global animation graphic and control definitions */
   int graphic[NUM_GLOBAL_ANIM_PARTS_ALL][NUM_SPECIAL_GFX_ARGS];
 
-  /* global animation sound definitions */
+  /* global animation sound and music definitions */
   int sound[NUM_GLOBAL_ANIM_PARTS_ALL][NUM_SPECIAL_GFX_ARGS];
+  int music[NUM_GLOBAL_ANIM_PARTS_ALL][NUM_SPECIAL_GFX_ARGS];
 };
 
 struct GraphicInfo
@@ -2870,6 +2918,9 @@ struct GraphicInfo
   int post_delay_fixed;                /* optional delay values after bored/global */
   int post_delay_random;       /* animations (pause before next animation) */
 
+  int init_event;              /* optional event triggering animation start */
+  int anim_event;              /* optional event triggering animation end   */
+
   int step_offset;             /* optional step offset of toon animations */
   int step_xoffset;            /* optional step offset of toon animations */
   int step_yoffset;            /* optional step offset of toon animations */
@@ -2971,13 +3022,12 @@ struct HelpAnimInfo
 };
 
 
-extern Bitmap                 *bitmap_db_store;
-extern Bitmap                 *bitmap_db_cross;
 extern Bitmap                 *bitmap_db_field;
 extern Bitmap                 *bitmap_db_panel;
 extern Bitmap                 *bitmap_db_door_1;
 extern Bitmap                 *bitmap_db_door_2;
-extern Bitmap                 *bitmap_db_toons;
+extern Bitmap                 *bitmap_db_store_1;
+extern Bitmap                 *bitmap_db_store_2;
 extern DrawBuffer             *fieldbuffer;
 extern DrawBuffer             *drawto_field;
 
@@ -3057,6 +3107,7 @@ extern int                        FX, FY;
 extern int                     ScrollStepSize;
 extern int                     ScreenMovDir, ScreenMovPos, ScreenGfxPos;
 extern int                     BorderElement;
+extern int                     MenuFrameDelay;
 extern int                     GameFrameDelay;
 extern int                     FfwdFrameDelay;
 extern int                     BX1, BY1;
@@ -3082,19 +3133,25 @@ extern struct BorderInfo        border;
 extern struct ViewportInfo     viewport;
 extern struct TitleFadingInfo  fading;
 extern struct TitleFadingInfo  fading_none;
+extern struct TitleFadingInfo  title_initial_first_default;
 extern struct TitleFadingInfo  title_initial_default;
+extern struct TitleFadingInfo  title_first_default;
 extern struct TitleFadingInfo  title_default;
-extern struct TitleMessageInfo titlescreen_initial_default;
+extern struct TitleMessageInfo titlescreen_initial_first_default;
 extern struct TitleMessageInfo titlescreen_initial_first[];
+extern struct TitleMessageInfo titlescreen_initial_default;
 extern struct TitleMessageInfo titlescreen_initial[];
-extern struct TitleMessageInfo titlescreen_default;
+extern struct TitleMessageInfo titlescreen_first_default;
 extern struct TitleMessageInfo titlescreen_first[];
+extern struct TitleMessageInfo titlescreen_default;
 extern struct TitleMessageInfo titlescreen[];
-extern struct TitleMessageInfo titlemessage_initial_default;
+extern struct TitleMessageInfo titlemessage_initial_first_default;
 extern struct TitleMessageInfo titlemessage_initial_first[];
+extern struct TitleMessageInfo titlemessage_initial_default;
 extern struct TitleMessageInfo titlemessage_initial[];
-extern struct TitleMessageInfo titlemessage_default;
+extern struct TitleMessageInfo titlemessage_first_default;
 extern struct TitleMessageInfo titlemessage_first[];
+extern struct TitleMessageInfo titlemessage_default;
 extern struct TitleMessageInfo titlemessage[];
 extern struct TitleMessageInfo readme;
 extern struct InitInfo         init, init_last;
@@ -3111,6 +3168,7 @@ extern struct SpecialSuffixInfo special_suffix_info[];
 extern struct TokenIntPtrInfo  image_config_vars[];
 extern struct FontInfo         font_info[];
 extern struct GlobalAnimInfo   global_anim_info[];
+extern struct GlobalAnimNameInfo global_anim_name_info[];
 extern struct MusicPrefixInfo  music_prefix_info[];
 extern struct GraphicInfo      *graphic_info;
 extern struct SoundInfo               *sound_info;