X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=1b877e7e31401e23a454b6a0b76bec2d27984ed7;hb=531605e2e684de4c30a4e9927f9c5107f468b163;hp=eb8e2611639f1f36469340ce0ae20b39ce8f2ab5;hpb=585994e9f3f77300b730f790062010518f35a739;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index eb8e2611..1b877e7e 100644 --- a/src/main.h +++ b/src/main.h @@ -625,6 +625,18 @@ #define IS_OBSOLETE(e) HAS_PROPERTY(e, EP_OBSOLETE) /* special macros used in game engine */ +#define IS_FILE_ELEMENT(e) ((e) >= 0 && \ + (e) <= NUM_FILE_ELEMENTS) + +#define IS_DRAWABLE_ELEMENT(e) ((e) >= 0 && \ + (e) <= NUM_DRAWABLE_ELEMENTS) + +#define IS_RUNTIME_ELEMENT(e) ((e) >= 0 && \ + (e) <= NUM_RUNTIME_ELEMENTS) + +#define IS_VALID_ELEMENT(e) ((e) >= 0 && \ + (e) <= MAX_NUM_ELEMENTS) + #define IS_CUSTOM_ELEMENT(e) ((e) >= EL_CUSTOM_START && \ (e) <= EL_CUSTOM_END) @@ -653,7 +665,7 @@ #define EM_KEY_NR(e) ((e) - EL_EM_KEY_1) #define EMC_KEY_NR(e) ((e) - EL_EMC_KEY_5 + 4) #define KEY_NR(e) (IS_RND_KEY(e) ? RND_KEY_NR(e) : \ - IS_EM_KEY(e) ? EM_KEY_NR(e) : \ + IS_EM_KEY(e) ? EM_KEY_NR(e) : \ IS_EMC_KEY(e) ? EMC_KEY_NR(e) : 0) #define IS_RND_GATE(e) ((e) >= EL_GATE_1 && \ @@ -838,6 +850,11 @@ (d) == MV_UP ? "MV_UP" : \ (d) == MV_DOWN ? "MV_DOWN" : "(various)") +#define ELEMENT_ACTIVE(e) (ActiveElement[e]) + +#define FONT_ACTIVE(f) (ActiveFont[f]) + + /* fundamental game speed values */ #define MICROLEVEL_SCROLL_DELAY 50 /* delay for scrolling micro level */ #define MICROLEVEL_LABEL_DELAY 250 /* delay for micro level label */ @@ -853,8 +870,6 @@ #define MAX_NUM_AMOEBA 100 -#define NUM_BELTS 4 -#define NUM_BELT_PARTS 3 #define NUM_ENVELOPES 4 #define MIN_ENVELOPE_XSIZE 1 #define MIN_ENVELOPE_YSIZE 1 @@ -1523,8 +1538,10 @@ #define EL_EMC_DRIPPER_ACTIVE (EL_FIRST_RUNTIME_REAL + 70) #define EL_EMC_SPRING_BUMPER_ACTIVE (EL_FIRST_RUNTIME_REAL + 71) +#define NUM_DRAWABLE_ELEMENTS (EL_FIRST_RUNTIME_REAL + 72) + /* "unreal" (and therefore not drawable) runtime elements */ -#define EL_FIRST_RUNTIME_UNREAL (EL_FIRST_RUNTIME_REAL + 72) +#define EL_FIRST_RUNTIME_UNREAL (NUM_DRAWABLE_ELEMENTS) #define EL_BLOCKED (EL_FIRST_RUNTIME_UNREAL + 0) #define EL_EXPLOSION (EL_FIRST_RUNTIME_UNREAL + 1) @@ -1734,10 +1751,11 @@ #define GFX_SPECIAL_ARG_SETUP 8 #define GFX_SPECIAL_ARG_PLAYING 9 #define GFX_SPECIAL_ARG_DOOR 10 -#define GFX_SPECIAL_ARG_PREVIEW 11 -#define GFX_SPECIAL_ARG_CRUMBLED 12 +#define GFX_SPECIAL_ARG_PANEL 11 +#define GFX_SPECIAL_ARG_PREVIEW 12 +#define GFX_SPECIAL_ARG_CRUMBLED 13 -#define NUM_SPECIAL_GFX_ARGS 13 +#define NUM_SPECIAL_GFX_ARGS 14 /* these additional definitions are currently only used for draw offsets */ #define GFX_SPECIAL_ARG_INFO_MAIN 0 @@ -1859,6 +1877,7 @@ #define NUM_FONTS 37 #define NUM_INITIAL_FONTS 4 +#if 0 #define FONT_ACTIVE(f) \ ((f) == FONT_MENU_1 ? FONT_MENU_1_ACTIVE : \ (f) == FONT_MENU_2 ? FONT_MENU_2_ACTIVE : \ @@ -1870,7 +1889,7 @@ (f) == FONT_INPUT_2 ? FONT_INPUT_2_ACTIVE : \ (f) == FONT_LEVEL_NUMBER ? FONT_LEVEL_NUMBER_ACTIVE : \ (f)) - +#endif /* values for game_status (must match special image configuration suffixes) */ #define GAME_MODE_DEFAULT 0 @@ -1884,12 +1903,13 @@ #define GAME_MODE_SETUP 8 #define GAME_MODE_PLAYING 9 #define GAME_MODE_PSEUDO_DOOR 10 -#define GAME_MODE_PSEUDO_PREVIEW 11 -#define GAME_MODE_PSEUDO_CRUMBLED 12 +#define GAME_MODE_PSEUDO_PANEL 11 +#define GAME_MODE_PSEUDO_PREVIEW 12 +#define GAME_MODE_PSEUDO_CRUMBLED 13 /* there are no special config file suffixes for these modes */ -#define GAME_MODE_PSEUDO_TYPENAME 13 -#define GAME_MODE_QUIT 14 +#define GAME_MODE_PSEUDO_TYPENAME 14 +#define GAME_MODE_QUIT 15 /* special definitions currently only used for custom artwork configuration */ #define MUSIC_PREFIX_BACKGROUND 0 @@ -2665,6 +2685,9 @@ 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 ActiveElement[MAX_NUM_ELEMENTS]; +extern int ActiveFont[NUM_FONTS]; + extern int lev_fieldx, lev_fieldy; extern int scroll_x, scroll_y;