X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=1e62cc61186a8ab658c32be77c43875a7ff6d2ab;hb=872cf2d86e73d185fcad1fac7b389e7d1dfcb839;hp=ade881e0e392d1e4921efcb24c6b632b5189a1b1;hpb=590e9a86daa2b0d3923673bfe02525766224808e;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index ade881e0..1e62cc61 100644 --- a/src/main.h +++ b/src/main.h @@ -56,6 +56,10 @@ #define MAX_LEV_FIELDX MAX_PLAYFIELD_WIDTH #define MAX_LEV_FIELDY MAX_PLAYFIELD_HEIGHT +#define MIN_SCROLL_DELAY 0 +#define STD_SCROLL_DELAY 3 +#define MAX_SCROLL_DELAY 8 + #define SCREENX(a) ((a) - scroll_x) #define SCREENY(a) ((a) - scroll_y) #define LEVELX(a) ((a) + scroll_x) @@ -649,7 +653,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 && \ @@ -820,6 +824,8 @@ #define IS_LOOP_SOUND(s) (sound_info[s].loop) +#define IS_SPECIAL_GFX_ARG(a) ((a) >= 0 && (a) < NUM_SPECIAL_GFX_ARGS) + #define EL_CASCADE_ACTIVE(e) (IS_EDITOR_CASCADE_INACTIVE(e) ? (e) + 1 : (e)) #define EL_CASCADE_INACTIVE(e) (IS_EDITOR_CASCADE_ACTIVE(e) ? (e) - 1 : (e)) #define EL_CASCADE_TOGGLE(e) (IS_EDITOR_CASCADE_INACTIVE(e) ? (e) + 1 : \ @@ -832,6 +838,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 */ @@ -847,8 +858,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 @@ -1718,8 +1727,8 @@ /* values for special image configuration suffixes (must match game mode) */ #define GFX_SPECIAL_ARG_DEFAULT 0 -#define GFX_SPECIAL_ARG_TITLE 1 -#define GFX_SPECIAL_ARG_MESSAGE 2 +#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 @@ -1728,10 +1737,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 @@ -1786,13 +1796,15 @@ #define GFX_ARG_NAME 36 #define GFX_ARG_SCALE_UP_FACTOR 37 #define GFX_ARG_CLONE_FROM 38 -#define GFX_ARG_FADE_DELAY 39 -#define GFX_ARG_POST_DELAY 40 -#define GFX_ARG_AUTO_DELAY 41 -#define GFX_ARG_ALIGN 42 -#define GFX_ARG_SORT_PRIORITY 43 +#define GFX_ARG_FADE_MODE 39 +#define GFX_ARG_FADE_DELAY 40 +#define GFX_ARG_POST_DELAY 41 +#define GFX_ARG_AUTO_DELAY 42 +#define GFX_ARG_ALIGN 43 +#define GFX_ARG_VALIGN 44 +#define GFX_ARG_SORT_PRIORITY 45 -#define NUM_GFX_ARGS 44 +#define NUM_GFX_ARGS 46 /* values for sound configuration suffixes */ @@ -1851,6 +1863,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 : \ @@ -1862,12 +1875,12 @@ (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 -#define GAME_MODE_TITLE 1 -#define GAME_MODE_MESSAGE 2 +#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 @@ -1876,12 +1889,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 @@ -1990,15 +2004,6 @@ struct BorderInfo boolean draw_masked[NUM_SPECIAL_GFX_ARGS]; }; -#if 0 -struct MenuPosInfo -{ - int x, y; - int width, height; - int align; -}; -#endif - struct MenuMainButtonInfo { struct MenuPosInfo name; @@ -2025,9 +2030,9 @@ struct MenuMainTextInfo struct TextPosInfo setup; struct TextPosInfo quit; - struct TextPosInfo current_level; struct TextPosInfo first_level; struct TextPosInfo last_level; + struct TextPosInfo level_number; struct TextPosInfo level_info_1; struct TextPosInfo level_info_2; struct TextPosInfo level_name; @@ -2053,30 +2058,30 @@ struct MenuMainInfo struct MenuMainInputInfo input; }; -struct TitleInfo +struct TitleFadingInfo { + int fade_mode; int fade_delay; int post_delay; int auto_delay; - - int fade_delay_final; - int post_delay_final; - int auto_delay_final; }; struct TitleMessageInfo { - int x; - int y; - int width; - int height; - int chars; - int lines; - int align; + int x, y; + int width, height; + int chars, lines; + int align, valign; + int font; boolean autowrap; boolean centered; - boolean skip_comments; + boolean parse_comments; int sort_priority; + + int fade_mode; + int fade_delay; + int post_delay; + int auto_delay; }; struct MenuInfo @@ -2090,9 +2095,10 @@ struct MenuInfo int list_size[NUM_SPECIAL_GFX_ARGS]; - int fade_delay; - int post_delay; - int auto_delay; + struct TitleFadingInfo enter_menu; + struct TitleFadingInfo leave_menu; + struct TitleFadingInfo enter_screen[NUM_SPECIAL_GFX_ARGS]; + struct TitleFadingInfo leave_screen[NUM_SPECIAL_GFX_ARGS]; int sound[NUM_SPECIAL_GFX_ARGS]; int music[NUM_SPECIAL_GFX_ARGS]; @@ -2112,7 +2118,7 @@ struct DoorInfo struct PreviewInfo { int x, y; - int align; + int align, valign; int xsize, ysize; int xoffset, yoffset; int tile_size; @@ -2254,6 +2260,7 @@ struct LevelInfo boolean use_spring_bug; /* for compatibility with old levels */ boolean use_time_orb_bug; /* for compatibility with old levels */ boolean instant_relocation; /* no visual delay when relocating player */ + boolean shifted_relocation; /* no level centering when relocating player */ boolean can_pass_to_walkable; /* player can pass to empty or walkable tile */ boolean grow_into_diggable; /* amoeba can grow into anything diggable */ @@ -2525,10 +2532,11 @@ struct GraphicInfo int draw_masked; /* optional setting for drawing envelope gfx */ + int fade_mode; /* optional setting for drawing title screens */ 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 align; /* optional setting for drawing title screens */ + int align, valign; /* optional setting for drawing title screens */ int sort_priority; /* optional setting for drawing title screens */ boolean use_image_size; /* use image size as default width and height */ @@ -2663,6 +2671,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; @@ -2692,8 +2703,13 @@ extern struct HiScore highscore[]; extern struct TapeInfo tape; extern struct GlobalInfo global; extern struct BorderInfo border; -extern struct TitleInfo title; +extern struct TitleFadingInfo fading; +extern struct TitleFadingInfo fading_none; +extern struct TitleFadingInfo title_initial_default; +extern struct TitleFadingInfo title_default; +extern struct TitleMessageInfo titlemessage_initial_default; extern struct TitleMessageInfo titlemessage_initial[]; +extern struct TitleMessageInfo titlemessage_default; extern struct TitleMessageInfo titlemessage[]; extern struct TitleMessageInfo readme; extern struct MenuInfo menu;