X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=b429c15b992a998188a7a28c8ca32f2e3ee7f629;hb=881bd7909d3a28c07c0bed2185e60a437b407e7c;hp=0ab4907d5db570a8e3cb73b3255d77aba0f54ce9;hpb=7f8f5498ebbb9cbfd0857dce7e53b64bf6603aa4;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 0ab4907d..b429c15b 100644 --- a/src/main.h +++ b/src/main.h @@ -331,6 +331,11 @@ #define CH_SIDE_TOP_BOTTOM MV_VERTICAL #define CH_SIDE_ANY MV_ANY_DIRECTION +#define CH_SIDE_FROM_BUTTON(b) ((b) == MB_LEFTBUTTON ? CH_SIDE_LEFT : \ + (b) == MB_RIGHTBUTTON ? CH_SIDE_RIGHT : \ + (b) == MB_MIDDLEBUTTON ? CH_SIDE_TOP_BOTTOM : \ + CH_SIDE_NONE) + // values for change player for custom elements #define CH_PLAYER_NONE PLAYER_BITS_NONE #define CH_PLAYER_1 PLAYER_BITS_1 @@ -808,6 +813,9 @@ #define IS_DC_STEELWALL_2(e) ((e) >= EL_DC_STEELWALL_2_LEFT && \ (e) <= EL_DC_STEELWALL_2_SINGLE) +// !!! IMPROVE THIS !!! +#define IS_EM_ELEMENT(e) (map_element_EM_to_RND_cave(map_element_RND_to_EM_cave(e)) == (e)) + #define MM_WALL_BASE(e) ((e) & 0xfff0) #define MM_WALL_BITS(e) ((e) & 0x000f) @@ -2276,6 +2284,7 @@ enum GFX_SPECIAL_ARG_TITLE_4, GFX_SPECIAL_ARG_TITLE_5, GFX_SPECIAL_ARG_MAIN, + GFX_SPECIAL_ARG_NAMES, GFX_SPECIAL_ARG_LEVELS, GFX_SPECIAL_ARG_LEVELNR, GFX_SPECIAL_ARG_SCORES, @@ -2289,7 +2298,9 @@ enum GFX_SPECIAL_ARG_PREVIEW, GFX_SPECIAL_ARG_CRUMBLED, GFX_SPECIAL_ARG_MAINONLY, + GFX_SPECIAL_ARG_NAMESONLY, GFX_SPECIAL_ARG_TYPENAME, + GFX_SPECIAL_ARG_TYPENAMES, GFX_SPECIAL_ARG_SUBMENU, GFX_SPECIAL_ARG_MENU, GFX_SPECIAL_ARG_TOONS, @@ -2524,6 +2535,7 @@ enum #define GAME_MODE_TITLE_4 GFX_SPECIAL_ARG_TITLE_4 #define GAME_MODE_TITLE_5 GFX_SPECIAL_ARG_TITLE_5 #define GAME_MODE_MAIN GFX_SPECIAL_ARG_MAIN +#define GAME_MODE_NAMES GFX_SPECIAL_ARG_NAMES #define GAME_MODE_LEVELS GFX_SPECIAL_ARG_LEVELS #define GAME_MODE_LEVELNR GFX_SPECIAL_ARG_LEVELNR #define GAME_MODE_SCORES GFX_SPECIAL_ARG_SCORES @@ -2537,7 +2549,9 @@ enum #define GAME_MODE_PSEUDO_PREVIEW GFX_SPECIAL_ARG_PREVIEW #define GAME_MODE_PSEUDO_CRUMBLED GFX_SPECIAL_ARG_CRUMBLED #define GAME_MODE_PSEUDO_MAINONLY GFX_SPECIAL_ARG_MAINONLY +#define GAME_MODE_PSEUDO_NAMESONLY GFX_SPECIAL_ARG_NAMESONLY #define GAME_MODE_PSEUDO_TYPENAME GFX_SPECIAL_ARG_TYPENAME +#define GAME_MODE_PSEUDO_TYPENAMES GFX_SPECIAL_ARG_TYPENAMES #define GAME_MODE_PSEUDO_SUBMENU GFX_SPECIAL_ARG_SUBMENU #define GAME_MODE_PSEUDO_MENU GFX_SPECIAL_ARG_MENU #define GAME_MODE_PSEUDO_TOONS GFX_SPECIAL_ARG_TOONS @@ -2561,15 +2575,15 @@ enum // program information and versioning definitions #define PROGRAM_VERSION_SUPER 4 #define PROGRAM_VERSION_MAJOR 2 -#define PROGRAM_VERSION_MINOR 0 -#define PROGRAM_VERSION_PATCH 3 +#define PROGRAM_VERSION_MINOR 3 +#define PROGRAM_VERSION_PATCH 2 #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 "https://www.artsoft.org/" -#define PROGRAM_COPYRIGHT_STRING "Copyright \xa9""1995-2020 by Holger Schemel" +#define PROGRAM_COPYRIGHT_STRING "Copyright \xa9""1995-2021 by Holger Schemel" #define PROGRAM_COMPANY_STRING "A Game by Artsoft Entertainment" #define PROGRAM_ICON_FILENAME "RocksIcon32x32.png" @@ -2881,9 +2895,15 @@ struct RequestInfo int anim_mode; int align; int valign; + int sort_priority; boolean autowrap; boolean centered; boolean wrap_single_words; + + // run-time values + Bitmap *bitmap; + int sx, sy; + int xsize, ysize; }; struct PreviewInfo @@ -3018,10 +3038,25 @@ struct ViewportInfo struct RectWithBorder door_2[NUM_SPECIAL_GFX_ARGS]; }; -struct HiScore +struct ScoreEntry { - char Name[MAX_PLAYER_NAME_LEN + 1]; - int Score; + char tape_basename[MAX_FILENAME_LEN + 1]; + char name[MAX_PLAYER_NAME_LEN + 1]; + int score; + int time; // time (in frames) or steps played +}; + +struct ScoreInfo +{ + int file_version; // file format version the score is stored with + int game_version; // game release version the score was created with + + char level_identifier[MAX_FILENAME_LEN + 1]; + int level_nr; + + int num_entries; + + struct ScoreEntry entry[MAX_SCORE_ENTRIES]; }; struct Content @@ -3087,6 +3122,7 @@ struct LevelInfo int time; // available time (seconds) int gems_needed; boolean auto_count_gems; + boolean rate_time_over_score; char name[MAX_LEVEL_NAME_LEN + 1]; char author[MAX_LEVEL_AUTHOR_LEN + 1]; @@ -3171,6 +3207,7 @@ struct LevelInfo boolean sb_objects_needed; // all Sokoban objects must be solved boolean auto_exit_sokoban; // automatically finish solved Sokoban levels boolean solved_by_one_player; // level is solved if one player enters exit + boolean finish_dig_collect; // only finished dig/collect triggers ce action boolean continuous_snapping; // repeated snapping without releasing key boolean block_snap_field; // snapping blocks field to show animation @@ -3188,6 +3225,8 @@ struct LevelInfo // ('int' instead of 'boolean' because used as selectbox value in editor) int use_step_counter; // count steps instead of seconds for level + int time_score_base; // use time score for 1 or 10 seconds/steps + short field[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; boolean use_custom_template; // use custom properties from template file @@ -3244,6 +3283,8 @@ struct GlobalInfo int anim_status_next; boolean use_envelope_request; + + char **user_names; }; struct ElementChangeInfo @@ -3377,6 +3418,8 @@ struct ElementInfo int drop_delay_random; // additional random delay after dropping int move_delay_fixed; // constant delay after moving int move_delay_random; // additional random delay after moving + int step_delay_fixed; // constant delay while moving + int step_delay_random; // additional random delay while moving int move_pattern; // direction movable element moves to int move_direction_initial; // initial direction element moves to @@ -3636,7 +3679,7 @@ extern DrawBuffer *fieldbuffer; extern DrawBuffer *drawto_field; extern int game_status; -extern boolean game_status_last_screen; +extern int game_status_last_screen; extern boolean level_editor_test_game; extern boolean network_playing; @@ -3722,7 +3765,7 @@ extern boolean network_player_action_received; extern int graphics_action_mapping[]; extern struct LevelInfo level, level_template; -extern struct HiScore highscore[]; +extern struct ScoreInfo scores; extern struct TapeInfo tape; extern struct GlobalInfo global; extern struct BorderInfo border;