X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=3f88801ccdb440ae79b8d6671371a41cebb798b2;hb=695b9e3d2e2ee94c93d2e804aa3c23dd34f68a25;hp=8ae17e69e0bcc146d72244c23cfef320134eb81a;hpb=013255ff68bf77db29470e26ac4cd7777836c8b0;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 8ae17e69..3f88801c 100644 --- a/src/main.h +++ b/src/main.h @@ -108,6 +108,7 @@ #define EP_THROWABLE 28 #define EP_CAN_EXPLODE 29 #define EP_GRAVITY_REACHABLE 30 +#define EP_DONT_GET_HIT_BY 31 /* values for pre-defined properties */ /* (from here on, values can be changed by inserting new values) */ @@ -548,6 +549,7 @@ #define IS_THROWABLE(e) HAS_PROPERTY(e, EP_THROWABLE) #define CAN_EXPLODE(e) HAS_PROPERTY(e, EP_CAN_EXPLODE) #define IS_GRAVITY_REACHABLE(e) HAS_PROPERTY(e, EP_GRAVITY_REACHABLE) +#define DONT_GET_HIT_BY(e) HAS_PROPERTY(e, EP_DONT_GET_HIT_BY) /* macros for special configurable properties */ #define IS_EM_SLIPPERY_WALL(e) HAS_PROPERTY(e, EP_EM_SLIPPERY_WALL) @@ -929,6 +931,12 @@ #define MICROLABEL1_YPOS (MICROLEVEL_YPOS - 36) #define MICROLABEL2_YPOS (MICROLEVEL_YPOS + MICROLEVEL_YSIZE + 7) +/* values for GfxRedraw */ +#define GFX_REDRAW_NONE (0) +#define GFX_REDRAW_TILE (1 << 0) +#define GFX_REDRAW_TILE_CRUMBLED (1 << 1) +#define GFX_REDRAW_TILE_CRUMBLED_NEIGHBOURS (1 << 2) +#define GFX_REDRAW_TILE_TWINKLED (1 << 3) /* score for elements */ #define SC_EMERALD 0 @@ -1598,9 +1606,17 @@ #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_GRAPHIC_1 (EL_FIRST_DUMMY + 25) +#define EL_GRAPHIC_2 (EL_FIRST_DUMMY + 26) +#define EL_GRAPHIC_3 (EL_FIRST_DUMMY + 27) +#define EL_GRAPHIC_4 (EL_FIRST_DUMMY + 28) +#define EL_GRAPHIC_5 (EL_FIRST_DUMMY + 29) +#define EL_GRAPHIC_6 (EL_FIRST_DUMMY + 30) +#define EL_GRAPHIC_7 (EL_FIRST_DUMMY + 31) +#define EL_GRAPHIC_8 (EL_FIRST_DUMMY + 32) /* internal elements (only used for internal purposes like copying) */ -#define EL_FIRST_INTERNAL (EL_FIRST_DUMMY + 25) +#define EL_FIRST_INTERNAL (EL_FIRST_DUMMY + 33) #define EL_INTERNAL_CLIPBOARD_CUSTOM (EL_FIRST_INTERNAL + 0) #define EL_INTERNAL_CLIPBOARD_CHANGE (EL_FIRST_INTERNAL + 1) @@ -1741,21 +1757,22 @@ /* values for special image configuration suffixes (must match game mode) */ #define GFX_SPECIAL_ARG_DEFAULT 0 -#define GFX_SPECIAL_ARG_TITLE_INITIAL 1 -#define GFX_SPECIAL_ARG_TITLE 2 -#define GFX_SPECIAL_ARG_MAIN 3 -#define GFX_SPECIAL_ARG_LEVELS 4 -#define GFX_SPECIAL_ARG_SCORES 5 -#define GFX_SPECIAL_ARG_EDITOR 6 -#define GFX_SPECIAL_ARG_INFO 7 -#define GFX_SPECIAL_ARG_SETUP 8 -#define GFX_SPECIAL_ARG_PLAYING 9 -#define GFX_SPECIAL_ARG_DOOR 10 -#define GFX_SPECIAL_ARG_PANEL 11 -#define GFX_SPECIAL_ARG_PREVIEW 12 -#define GFX_SPECIAL_ARG_CRUMBLED 13 - -#define NUM_SPECIAL_GFX_ARGS 14 +#define GFX_SPECIAL_ARG_LOADING 1 +#define GFX_SPECIAL_ARG_TITLE_INITIAL 2 +#define GFX_SPECIAL_ARG_TITLE 3 +#define GFX_SPECIAL_ARG_MAIN 4 +#define GFX_SPECIAL_ARG_LEVELS 5 +#define GFX_SPECIAL_ARG_SCORES 6 +#define GFX_SPECIAL_ARG_EDITOR 7 +#define GFX_SPECIAL_ARG_INFO 8 +#define GFX_SPECIAL_ARG_SETUP 9 +#define GFX_SPECIAL_ARG_PLAYING 10 +#define GFX_SPECIAL_ARG_DOOR 11 +#define GFX_SPECIAL_ARG_PANEL 12 +#define GFX_SPECIAL_ARG_PREVIEW 13 +#define GFX_SPECIAL_ARG_CRUMBLED 14 + +#define NUM_SPECIAL_GFX_ARGS 15 /* these additional definitions are currently only used for draw offsets */ #define GFX_SPECIAL_ARG_INFO_MAIN 0 @@ -1908,23 +1925,24 @@ /* values for game_status (must match special image configuration suffixes) */ #define GAME_MODE_DEFAULT 0 -#define GAME_MODE_TITLE_INITIAL 1 -#define GAME_MODE_TITLE 2 -#define GAME_MODE_MAIN 3 -#define GAME_MODE_LEVELS 4 -#define GAME_MODE_SCORES 5 -#define GAME_MODE_EDITOR 6 -#define GAME_MODE_INFO 7 -#define GAME_MODE_SETUP 8 -#define GAME_MODE_PLAYING 9 -#define GAME_MODE_PSEUDO_DOOR 10 -#define GAME_MODE_PSEUDO_PANEL 11 -#define GAME_MODE_PSEUDO_PREVIEW 12 -#define GAME_MODE_PSEUDO_CRUMBLED 13 +#define GAME_MODE_LOADING 1 +#define GAME_MODE_TITLE_INITIAL 2 +#define GAME_MODE_TITLE 3 +#define GAME_MODE_MAIN 4 +#define GAME_MODE_LEVELS 5 +#define GAME_MODE_SCORES 6 +#define GAME_MODE_EDITOR 7 +#define GAME_MODE_INFO 8 +#define GAME_MODE_SETUP 9 +#define GAME_MODE_PLAYING 10 +#define GAME_MODE_PSEUDO_DOOR 11 +#define GAME_MODE_PSEUDO_PANEL 12 +#define GAME_MODE_PSEUDO_PREVIEW 13 +#define GAME_MODE_PSEUDO_CRUMBLED 14 /* there are no special config file suffixes for these modes */ -#define GAME_MODE_PSEUDO_TYPENAME 14 -#define GAME_MODE_QUIT 15 +#define GAME_MODE_PSEUDO_TYPENAME 15 +#define GAME_MODE_QUIT 16 /* special definitions currently only used for custom artwork configuration */ #define MUSIC_PREFIX_BACKGROUND 0 @@ -1939,15 +1957,23 @@ /* program information and versioning definitions */ #define PROGRAM_VERSION_MAJOR 3 #define PROGRAM_VERSION_MINOR 2 -#define PROGRAM_VERSION_PATCH 4 -#define PROGRAM_VERSION_BUILD 1 +#define PROGRAM_VERSION_PATCH 5 +#define PROGRAM_VERSION_BUILD 0 #define PROGRAM_TITLE_STRING "Rocks'n'Diamonds" #define PROGRAM_AUTHOR_STRING "Holger Schemel" -#define PROGRAM_COPYRIGHT_STRING "Copyright ©1995-2006 by Holger Schemel" +#define PROGRAM_COPYRIGHT_STRING "Copyright ©1995-2008 by Holger Schemel" #define PROGRAM_EMAIL_STRING "info@artsoft.org" #define PROGRAM_WEBSITE_STRING "http://www.artsoft.org/" #define PROGRAM_GAME_BY_STRING "A Game by Artsoft Entertainment" +#define PROGRAM_UNIX_DATADIR_STRING ".rocksndiamonds" + +#if defined(CREATE_SPECIAL_EDITION_RND_JUE) +#undef PROGRAM_TITLE_STRING +#define PROGRAM_TITLE_STRING "R'n'D jue" +#undef PROGRAM_UNIX_DATADIR_STRING +#define PROGRAM_UNIX_DATADIR_STRING ".rnd_jue" +#endif #define ICON_TITLE_STRING PROGRAM_TITLE_STRING #define COOKIE_PREFIX "ROCKSNDIAMONDS" @@ -1955,7 +1981,7 @@ #define USERDATA_DIRECTORY_WIN32 PROGRAM_TITLE_STRING #define USERDATA_DIRECTORY_MACOSX PROGRAM_TITLE_STRING -#define USERDATA_DIRECTORY_UNIX ".rocksndiamonds" +#define USERDATA_DIRECTORY_UNIX PROGRAM_UNIX_DATADIR_STRING #define USERDATA_DIRECTORY_DOS "userdata" #if defined(PLATFORM_WIN32) @@ -2031,6 +2057,7 @@ struct BorderInfo { boolean draw_masked[NUM_SPECIAL_GFX_ARGS]; + boolean draw_masked_when_fading; }; struct MenuMainButtonInfo @@ -2113,6 +2140,11 @@ struct TitleMessageInfo int auto_delay; }; +struct InitInfo +{ + struct MenuPosInfo busy; +}; + struct MenuInfo { int draw_xoffset[NUM_SPECIAL_GFX_ARGS]; @@ -2130,6 +2162,7 @@ struct MenuInfo struct TitleFadingInfo leave_menu; struct TitleFadingInfo enter_screen[NUM_SPECIAL_GFX_ARGS]; struct TitleFadingInfo leave_screen[NUM_SPECIAL_GFX_ARGS]; + struct TitleFadingInfo next_screen; int sound[NUM_SPECIAL_GFX_ARGS]; int music[NUM_SPECIAL_GFX_ARGS]; @@ -2321,11 +2354,20 @@ struct GlobalInfo char *convert_leveldir; int convert_level_nr; + char *create_images_dir; + int num_toons; float frames_per_second; boolean fps_slowdown; int fps_slowdown_factor; + + /* global values for fading screens and masking borders */ + int border_status; +#if 0 + int fading_status; + int fading_type; +#endif }; struct ElementChangeInfo @@ -2344,7 +2386,7 @@ struct ElementChangeInfo int delay_random; /* added frame delay before changed (random) */ int delay_frames; /* either 1 (frames) or 50 (seconds; 50 fps) */ - int trigger_element; /* element triggering change */ + int initial_trigger_element; /* initial element triggering change */ struct Content target_content;/* elements for extended change target */ boolean use_target_content; /* use extended change target */ @@ -2362,6 +2404,8 @@ struct ElementChangeInfo /* ---------- internal values used at runtime when playing ---------- */ + int trigger_element; /* element triggering change */ + /* functions that are called before, while and after the change of an element -- currently only used for non-custom elements */ void (*pre_change_function)(int x, int y); @@ -2371,6 +2415,7 @@ struct ElementChangeInfo short actual_trigger_element; /* element that actually triggered change */ int actual_trigger_side; /* element side that triggered the change */ int actual_trigger_player; /* player which actually triggered change */ + int actual_trigger_player_bits; /* player bits of triggering players */ int actual_trigger_ce_value; /* CE value of element that triggered change */ int actual_trigger_ce_score; /* CE score of element that triggered change */ @@ -2653,6 +2698,7 @@ extern Bitmap *bitmap_db_cross; extern Bitmap *bitmap_db_field; extern Bitmap *bitmap_db_panel; extern Bitmap *bitmap_db_door; +extern Bitmap *bitmap_db_toons; extern Pixmap tile_clipmask[]; extern DrawBuffer *fieldbuffer; extern DrawBuffer *drawto_field; @@ -2704,6 +2750,7 @@ 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 GfxRedraw[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern int ActiveElement[MAX_NUM_ELEMENTS]; extern int ActiveButton[NUM_IMAGE_FILES]; @@ -2747,6 +2794,7 @@ extern struct TitleMessageInfo titlemessage_initial[]; extern struct TitleMessageInfo titlemessage_default; extern struct TitleMessageInfo titlemessage[]; extern struct TitleMessageInfo readme; +extern struct InitInfo init; extern struct MenuInfo menu; extern struct DoorInfo door_1, door_2; extern struct PreviewInfo preview; @@ -2764,6 +2812,10 @@ extern struct MusicInfo *music_info; extern struct MusicFileInfo *music_file_info; extern struct HelpAnimInfo *helpanim_info; extern SetupFileHash *helptext_info; +extern SetupFileHash *image_config_hash; +extern SetupFileHash *element_token_hash; +extern SetupFileHash *graphic_token_hash; +extern SetupFileHash *font_token_hash; extern struct ConfigTypeInfo image_config_suffix[]; extern struct ConfigTypeInfo sound_config_suffix[]; extern struct ConfigTypeInfo music_config_suffix[];