X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fmain.h;h=49d18568d266863e96c395568cff4434cd004582;hp=93874a7e974a57883f29df82c51f02e9abb3adbe;hb=810941e29ed4187457df039951c60c2d84943d48;hpb=f93552d6cd84e880ee73d4864018167aefc1bb79 diff --git a/src/main.h b/src/main.h index 93874a7e..49d18568 100644 --- a/src/main.h +++ b/src/main.h @@ -4,7 +4,7 @@ // (c) 1995-2014 by Artsoft Entertainment // Holger Schemel // info@artsoft.org -// http://www.artsoft.org/ +// https://www.artsoft.org/ // ---------------------------------------------------------------------------- // main.h // ============================================================================ @@ -252,11 +252,18 @@ #define CE_VALUE_CHANGES_OF_X 41 #define CE_SCORE_CHANGES 42 #define CE_SCORE_CHANGES_OF_X 43 +#define CE_CLICKED_BY_MOUSE 44 +#define CE_PRESSED_BY_MOUSE 45 +#define CE_MOUSE_CLICKED_ON_X 46 +#define CE_MOUSE_PRESSED_ON_X 47 -#define NUM_CHANGE_EVENTS 44 +#define NUM_CHANGE_EVENTS 48 #define NUM_CE_BITFIELDS ((NUM_CHANGE_EVENTS + 31) / 32) +#define CE_HEADLINE_SPECIAL_EVENTS 250 +#define CE_UNDEFINED 255 + #define CE_BITMASK_DEFAULT 0 #define CH_EVENT_BITFIELD_NR(e) (e / 32) @@ -366,6 +373,7 @@ #define CA_SET_PLAYER_INVENTORY 18 #define CA_SET_CE_ARTWORK 19 #define CA_SET_LEVEL_RANDOM_SEED 20 +#define CA_MOVE_PLAYER_NEW 21 #define CA_HEADLINE_LEVEL_ACTIONS 250 #define CA_HEADLINE_PLAYER_ACTIONS 251 @@ -800,6 +808,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) @@ -809,13 +820,13 @@ #if 1 #define TILE_GFX_ELEMENT(x, y) \ (GfxElement[x][y] != EL_UNDEFINED && \ - Feld[x][y] != EL_EXPLOSION ? \ - GfxElement[x][y] : Feld[x][y]) + Tile[x][y] != EL_EXPLOSION ? \ + GfxElement[x][y] : Tile[x][y]) #else #define TILE_GFX_ELEMENT(x, y) \ GFX_ELEMENT(GfxElement[x][y] != EL_UNDEFINED && \ - Feld[x][y] != EL_EXPLOSION ? \ - GfxElement[x][y] : Feld[x][y]) + Tile[x][y] != EL_EXPLOSION ? \ + GfxElement[x][y] : Tile[x][y]) #endif // !!! "use sound" deactivated due to problems with level "bug machine" !!! @@ -836,12 +847,12 @@ #define IS_PLAYER(x, y) (ELEM_IS_PLAYER(StorePlayer[x][y])) -#define IS_FREE(x, y) (Feld[x][y] == EL_EMPTY && !IS_PLAYER(x, y)) -#define IS_FREE_OR_PLAYER(x, y) (Feld[x][y] == EL_EMPTY) +#define IS_FREE(x, y) (Tile[x][y] == EL_EMPTY && !IS_PLAYER(x, y)) +#define IS_FREE_OR_PLAYER(x, y) (Tile[x][y] == EL_EMPTY) #define IS_MOVING(x,y) (MovPos[x][y] != 0) #define IS_FALLING(x,y) (MovPos[x][y] != 0 && MovDir[x][y] == MV_DOWN) -#define IS_BLOCKED(x,y) (Feld[x][y] == EL_BLOCKED) +#define IS_BLOCKED(x,y) (Tile[x][y] == EL_BLOCKED) #define IS_MV_DIAGONAL(x) ((x) & MV_HORIZONTAL && (x) & MV_VERTICAL) @@ -872,9 +883,9 @@ #define PLAYERINFO(x,y) (&stored_player[StorePlayer[x][y]-EL_PLAYER_1]) #define SHIELD_ON(p) ((p)->shield_normal_time_left > 0) -#define ENEMY_PROTECTED_FIELD(x,y) (IS_PROTECTED(Feld[x][y]) || \ +#define ENEMY_PROTECTED_FIELD(x,y) (IS_PROTECTED(Tile[x][y]) || \ IS_PROTECTED(Back[x][y])) -#define EXPLOSION_PROTECTED_FIELD(x,y) (IS_EXPLOSION_PROOF(Feld[x][y])) +#define EXPLOSION_PROTECTED_FIELD(x,y) (IS_EXPLOSION_PROOF(Tile[x][y])) #define PLAYER_ENEMY_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \ ENEMY_PROTECTED_FIELD(x, y)) #define PLAYER_EXPLOSION_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \ @@ -954,7 +965,8 @@ #define MIN_ELEMENTS_IN_GROUP 1 #define MAX_ELEMENTS_IN_GROUP 16 #define MIN_ANDROID_ELEMENTS 1 -#define MAX_ANDROID_ELEMENTS 16 +#define MAX_ANDROID_ELEMENTS 32 +#define MAX_ANDROID_ELEMENTS_OLD 16 // (extended since version 4.2.0.0) // values for elements with content #define MIN_ELEMENT_CONTENTS 1 @@ -1889,7 +1901,10 @@ #define EL_MM_END_2 (EL_DF_START2 + 430) #define EL_MM_END EL_MM_END_2 -#define NUM_FILE_ELEMENTS 1215 +#define EL_SPRING_LEFT 1215 +#define EL_SPRING_RIGHT 1216 + +#define NUM_FILE_ELEMENTS 1217 // "real" (and therefore drawable) runtime elements @@ -2264,6 +2279,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, @@ -2277,7 +2293,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, @@ -2312,6 +2330,7 @@ enum { GFX_SPECIAL_ARG_SETUP_MAIN = 0, GFX_SPECIAL_ARG_SETUP_GAME, + GFX_SPECIAL_ARG_SETUP_ENGINES, GFX_SPECIAL_ARG_SETUP_EDITOR, GFX_SPECIAL_ARG_SETUP_GRAPHICS, GFX_SPECIAL_ARG_SETUP_SOUND, @@ -2370,10 +2389,13 @@ enum GFX_ARG_DRAW_ORDER, GFX_ARG_INIT_DELAY_FIXED, GFX_ARG_INIT_DELAY_RANDOM, + GFX_ARG_INIT_DELAY_ACTION, GFX_ARG_ANIM_DELAY_FIXED, GFX_ARG_ANIM_DELAY_RANDOM, + GFX_ARG_ANIM_DELAY_ACTION, GFX_ARG_POST_DELAY_FIXED, GFX_ARG_POST_DELAY_RANDOM, + GFX_ARG_POST_DELAY_ACTION, GFX_ARG_INIT_EVENT, GFX_ARG_INIT_EVENT_ACTION, GFX_ARG_ANIM_EVENT, @@ -2386,6 +2408,7 @@ enum GFX_ARG_FADE_DELAY, GFX_ARG_POST_DELAY, GFX_ARG_AUTO_DELAY, + GFX_ARG_AUTO_DELAY_UNIT, GFX_ARG_ALIGN, GFX_ARG_VALIGN, GFX_ARG_SORT_PRIORITY, @@ -2507,6 +2530,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 @@ -2520,7 +2544,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 @@ -2543,16 +2569,16 @@ enum // program information and versioning definitions #define PROGRAM_VERSION_SUPER 4 -#define PROGRAM_VERSION_MAJOR 1 -#define PROGRAM_VERSION_MINOR 2 -#define PROGRAM_VERSION_PATCH 1 +#define PROGRAM_VERSION_MAJOR 2 +#define PROGRAM_VERSION_MINOR 1 +#define PROGRAM_VERSION_PATCH 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-2019 by Holger Schemel" +#define PROGRAM_WEBSITE_STRING "https://www.artsoft.org/" +#define PROGRAM_COPYRIGHT_STRING "Copyright \xa9""1995-2020 by Holger Schemel" #define PROGRAM_COMPANY_STRING "A Game by Artsoft Entertainment" #define PROGRAM_ICON_FILENAME "RocksIcon32x32.png" @@ -2624,6 +2650,7 @@ enum #define AUTOPLAY_FFWD (1 << 1) #define AUTOPLAY_WARP (1 << 2) #define AUTOPLAY_TEST (1 << 3) +#define AUTOPLAY_FIX (1 << 4) #define AUTOPLAY_WARP_NO_DISPLAY AUTOPLAY_TEST #define AUTOPLAY_MODE_NONE 0 @@ -2631,6 +2658,7 @@ enum #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_FIX (AUTOPLAY_MODE_TEST | AUTOPLAY_FIX) #define AUTOPLAY_MODE_WARP_NO_DISPLAY AUTOPLAY_MODE_TEST @@ -2645,10 +2673,15 @@ struct RequestButtonInfo struct TextPosInfo yes; struct TextPosInfo no; struct TextPosInfo confirm; + struct TextPosInfo player_1; struct TextPosInfo player_2; struct TextPosInfo player_3; struct TextPosInfo player_4; + + struct TextPosInfo touch_yes; + struct TextPosInfo touch_no; + struct TextPosInfo touch_confirm; }; struct MenuMainButtonInfo @@ -2671,6 +2704,8 @@ struct MenuMainButtonInfo struct MenuPosInfo insert_solution; struct MenuPosInfo play_solution; + + struct MenuPosInfo switch_ecs_aga; }; struct MenuMainTextInfo @@ -2715,12 +2750,29 @@ struct MenuMainInfo struct TextPosInfo network_players; }; +struct MenuSetupButtonInfo +{ + struct MenuPosInfo prev_player; + struct MenuPosInfo next_player; + + struct MenuPosInfo touch_back; + struct MenuPosInfo touch_next; + struct MenuPosInfo touch_back2; + struct MenuPosInfo touch_next2; +}; + +struct MenuSetupInfo +{ + struct MenuSetupButtonInfo button; +}; + struct TitleFadingInfo { int fade_mode; int fade_delay; int post_delay; int auto_delay; + int auto_delay_unit; }; struct TitleMessageInfo @@ -2739,6 +2791,7 @@ struct TitleMessageInfo int fade_delay; int post_delay; int auto_delay; + int auto_delay_unit; }; struct InitInfo @@ -2801,6 +2854,7 @@ struct MenuInfo int music[NUM_SPECIAL_GFX_ARGS]; struct MenuMainInfo main; + struct MenuSetupInfo setup; }; struct DoorInfo @@ -3087,7 +3141,7 @@ struct LevelInfo int android_move_time; int android_clone_time; boolean ball_random; - boolean ball_state_initial; + boolean ball_active_initial; int ball_time; int lenses_score; int magnify_score; @@ -3176,6 +3230,11 @@ struct GlobalInfo boolean autoplay_all; boolean autoplay_mode; + char *patchtapes_mode; + char *patchtapes_leveldir; + int patchtapes_level[MAX_TAPES_PER_SET]; + boolean patchtapes_all; + char *convert_leveldir; int convert_level_nr; @@ -3194,6 +3253,8 @@ struct GlobalInfo int anim_status_next; boolean use_envelope_request; + + char **user_names; }; struct ElementChangeInfo @@ -3461,10 +3522,13 @@ struct GraphicInfo int init_delay_fixed; // optional initial delay values for global int init_delay_random; // animations (pause interval before start) + int init_delay_action; // optional action called on animation start int anim_delay_fixed; // optional delay values for bored/sleeping int anim_delay_random; // and global animations (animation length) + int anim_delay_action; // optional action called on animation end int post_delay_fixed; // optional delay values after bored/global int post_delay_random; // animations (pause before next animation) + int post_delay_action; // optional action called after post delay int init_event; // optional event triggering animation start int init_event_action; // optional action called on animation start @@ -3490,6 +3554,7 @@ struct GraphicInfo int fade_delay; // optional setting for drawing title screens int post_delay; // optional setting for drawing title screens int auto_delay; // optional setting for drawing title screens + int auto_delay_unit; // optional setting for drawing title screens int align, valign; // optional setting for drawing title screens int sort_priority; // optional setting for drawing title screens @@ -3585,12 +3650,10 @@ extern int game_status; extern boolean game_status_last_screen; extern boolean level_editor_test_game; extern boolean network_playing; -extern boolean network_server; -extern SDL_Thread *server_thread; extern int key_joystick_mapping; -extern short Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short Tile[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short Last[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short MovPos[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];