X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=92585c34140f2c322253f4f22020689b808c6429;hb=effdabc5d3461d471514ef58a2294365f5030d3a;hp=a6ec11b09f33d9781cd1d6c31dc7d623d579b0e1;hpb=c42db18f39053cf2ec85943c37a20b8caa742d09;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index a6ec11b0..92585c34 100644 --- a/src/main.h +++ b/src/main.h @@ -21,10 +21,11 @@ #include #include "libgame/libgame.h" + +#include "game_bd/game_bd.h" #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 @@ -697,11 +698,22 @@ #define IS_INTERNAL_ELEMENT(e) ((e) >= EL_INTERNAL_START && \ (e) <= EL_INTERNAL_END) -#define IS_MM_ELEMENT(e) ((e) >= EL_MM_START && \ - (e) <= EL_MM_END) - -#define IS_DF_ELEMENT(e) ((e) >= EL_DF_START && \ - (e) <= EL_DF_END) +#define IS_MM_ELEMENT_1(e) ((e) >= EL_MM_START_1 && \ + (e) <= EL_MM_END_1) +#define IS_MM_ELEMENT_2(e) ((e) >= EL_MM_START_2 && \ + (e) <= EL_MM_END_2) +#define IS_MM_ELEMENT_3(e) ((e) >= EL_MM_START_3 && \ + (e) <= EL_MM_END_3) +#define IS_MM_ELEMENT(e) (IS_MM_ELEMENT_1(e) || \ + IS_MM_ELEMENT_2(e) || \ + IS_MM_ELEMENT_3(e)) + +#define IS_DF_ELEMENT_1(e) ((e) >= EL_DF_START_1 && \ + (e) <= EL_DF_END_1) +#define IS_DF_ELEMENT_2(e) ((e) >= EL_DF_START_2 && \ + (e) <= EL_DF_END_2) +#define IS_DF_ELEMENT(e) (IS_DF_ELEMENT_1(e) || \ + IS_DF_ELEMENT_2(e)) #define IS_MM_MCDUFFIN(e) ((e) >= EL_MM_MCDUFFIN_START && \ (e) <= EL_MM_MCDUFFIN_END) @@ -1145,14 +1157,6 @@ #define EL_BD_FIREFLY_UP 75 #define EL_BD_FIREFLY_LEFT 76 #define EL_BD_FIREFLY_DOWN 77 -#define EL_BD_BUTTERFLY_1 EL_BD_BUTTERFLY_DOWN -#define EL_BD_BUTTERFLY_2 EL_BD_BUTTERFLY_LEFT -#define EL_BD_BUTTERFLY_3 EL_BD_BUTTERFLY_UP -#define EL_BD_BUTTERFLY_4 EL_BD_BUTTERFLY_RIGHT -#define EL_BD_FIREFLY_1 EL_BD_FIREFLY_LEFT -#define EL_BD_FIREFLY_2 EL_BD_FIREFLY_DOWN -#define EL_BD_FIREFLY_3 EL_BD_FIREFLY_RIGHT -#define EL_BD_FIREFLY_4 EL_BD_FIREFLY_UP #define EL_BD_BUTTERFLY 78 #define EL_BD_FIREFLY 79 #define EL_PLAYER_1 80 @@ -1719,6 +1723,7 @@ #define EL_MM_START_2 (EL_MM_START + 160) #define EL_DF_START EL_MM_START_2 +#define EL_DF_START_1 EL_MM_START_2 #define EL_DF_START2 (EL_DF_START - 240) #define EL_DF_MIRROR_START EL_DF_START @@ -1844,7 +1849,7 @@ #define EL_DF_STEEL_GRID_ROTATING_8 (EL_DF_STEEL_GRID_ROTATING_START + 7) #define EL_DF_STEEL_GRID_ROTATING_END EL_DF_STEEL_GRID_ROTATING_07 -#define EL_DF_END (EL_DF_START2 + 355) +#define EL_DF_END_1 (EL_DF_START2 + 355) #define EL_MM_TELEPORTER_RED_START (EL_DF_START2 + 356) #define EL_MM_TELEPORTER_RED_1 (EL_MM_TELEPORTER_RED_START + 0) @@ -1932,7 +1937,6 @@ #define EL_DF_WOODEN_WALL 1214 #define EL_MM_END_2 (EL_DF_START2 + 430) -#define EL_MM_END EL_MM_END_2 #define EL_SPRING_LEFT 1215 #define EL_SPRING_RIGHT 1216 @@ -1947,7 +1951,39 @@ #define EL_EMPTY_SPACE_END 1232 // ---------- end of empty space elements section ----------------------------- -#define NUM_FILE_ELEMENTS 1233 +#define EL_MM_START_3 EL_DF_MIRROR_FIXED_START +#define EL_DF_START_2 EL_DF_MIRROR_FIXED_START + +#define EL_DF_MIRROR_FIXED_START 1233 +#define EL_DF_MIRROR_FIXED_1 (EL_DF_MIRROR_FIXED_START + 0) +#define EL_DF_MIRROR_FIXED_2 (EL_DF_MIRROR_FIXED_START + 1) +#define EL_DF_MIRROR_FIXED_3 (EL_DF_MIRROR_FIXED_START + 2) +#define EL_DF_MIRROR_FIXED_4 (EL_DF_MIRROR_FIXED_START + 3) +#define EL_DF_MIRROR_FIXED_5 (EL_DF_MIRROR_FIXED_START + 4) +#define EL_DF_MIRROR_FIXED_6 (EL_DF_MIRROR_FIXED_START + 5) +#define EL_DF_MIRROR_FIXED_7 (EL_DF_MIRROR_FIXED_START + 6) +#define EL_DF_MIRROR_FIXED_8 (EL_DF_MIRROR_FIXED_START + 7) +#define EL_DF_MIRROR_FIXED_9 (EL_DF_MIRROR_FIXED_START + 8) +#define EL_DF_MIRROR_FIXED_10 (EL_DF_MIRROR_FIXED_START + 9) +#define EL_DF_MIRROR_FIXED_11 (EL_DF_MIRROR_FIXED_START + 10) +#define EL_DF_MIRROR_FIXED_12 (EL_DF_MIRROR_FIXED_START + 11) +#define EL_DF_MIRROR_FIXED_13 (EL_DF_MIRROR_FIXED_START + 12) +#define EL_DF_MIRROR_FIXED_14 (EL_DF_MIRROR_FIXED_START + 13) +#define EL_DF_MIRROR_FIXED_15 (EL_DF_MIRROR_FIXED_START + 14) +#define EL_DF_MIRROR_FIXED_16 (EL_DF_MIRROR_FIXED_START + 15) +#define EL_DF_MIRROR_FIXED_END EL_DF_MIRROR_FIXED_16 + +#define EL_DF_SLOPE_START 1249 +#define EL_DF_SLOPE_1 (EL_DF_SLOPE_START + 0) +#define EL_DF_SLOPE_2 (EL_DF_SLOPE_START + 1) +#define EL_DF_SLOPE_3 (EL_DF_SLOPE_START + 2) +#define EL_DF_SLOPE_4 (EL_DF_SLOPE_START + 3) +#define EL_DF_SLOPE_END EL_DF_SLOPE_4 + +#define EL_MM_END_3 EL_DF_SLOPE_END +#define EL_DF_END_2 EL_DF_SLOPE_END + +#define NUM_FILE_ELEMENTS 1253 // "real" (and therefore drawable) runtime elements @@ -2454,6 +2490,7 @@ enum GFX_ARG_SORT_PRIORITY, GFX_ARG_CLASS, GFX_ARG_STYLE, + GFX_ARG_ALPHA, GFX_ARG_ACTIVE_XOFFSET, GFX_ARG_ACTIVE_YOFFSET, GFX_ARG_PRESSED_XOFFSET, @@ -2509,6 +2546,7 @@ enum FONT_ENVELOPE_2, FONT_ENVELOPE_3, FONT_ENVELOPE_4, + FONT_REQUEST_NARROW, FONT_REQUEST, FONT_INPUT_1_ACTIVE, FONT_INPUT_2_ACTIVE, @@ -2618,15 +2656,15 @@ enum // program information and versioning definitions #define PROGRAM_VERSION_SUPER 4 #define PROGRAM_VERSION_MAJOR 3 -#define PROGRAM_VERSION_MINOR 5 -#define PROGRAM_VERSION_PATCH 3 +#define PROGRAM_VERSION_MINOR 8 +#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 "1995-2023 by Holger Schemel" +#define PROGRAM_COPYRIGHT_STRING "1995-2024 by Holger Schemel" #define PROGRAM_COMPANY_STRING "A Game by Artsoft Entertainment" #define PROGRAM_ICON_FILENAME "icons/icon.png" @@ -2686,11 +2724,12 @@ enum // values for game engine type identifier #define GAME_ENGINE_TYPE_UNKNOWN LEVEL_FILE_TYPE_UNKNOWN #define GAME_ENGINE_TYPE_RND LEVEL_FILE_TYPE_RND +#define GAME_ENGINE_TYPE_BD LEVEL_FILE_TYPE_BD #define GAME_ENGINE_TYPE_EM LEVEL_FILE_TYPE_EM #define GAME_ENGINE_TYPE_SP LEVEL_FILE_TYPE_SP #define GAME_ENGINE_TYPE_MM LEVEL_FILE_TYPE_MM -#define NUM_ENGINE_TYPES 4 +#define NUM_ENGINE_TYPES 5 // values for automatically playing tapes #define AUTOPLAY_NONE 0 @@ -3192,6 +3231,7 @@ struct LevelInfo int game_engine_type; // level stored in native format for the alternative native game engines + struct LevelInfo_BD *native_bd_level; struct LevelInfo_EM *native_em_level; struct LevelInfo_SP *native_sp_level; struct LevelInfo_MM *native_mm_level; @@ -3434,6 +3474,8 @@ struct ElementChangeInfo void (*post_change_function)(int x, int y); short actual_trigger_element; // element that actually triggered change + int actual_trigger_x; // element x position that triggered change + int actual_trigger_y; // element y position that 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 @@ -3548,6 +3590,8 @@ struct ElementInfo struct ElementGroupInfo *group; // pointer to element group info + boolean has_anim_event; // element can trigger global animation + // ---------- internal values used at runtime when playing ---------- boolean has_change_event[NUM_CHANGE_EVENTS]; @@ -3696,6 +3740,7 @@ struct GraphicInfo int class; int style; + int alpha; int active_xoffset; int active_yoffset; @@ -3736,11 +3781,13 @@ struct MusicFileInfo char *artist_header; char *album_header; char *year_header; + char *played_header; char *title; char *artist; char *album; char *year; + char *played; int music;