X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=69f758a0ed50a1a4e86ad6a9c030fa566926971a;hb=f857fec3082c785b0dd271b6ad1b7642a2ed4e65;hp=2833e094cfacf96086e69d8ae92a6e7223c1bb82;hpb=ac4c028b525860750de315d626730ac493f56944;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 2833e094..69f758a0 100644 --- a/src/main.h +++ b/src/main.h @@ -60,58 +60,78 @@ #define IN_SCR_FIELD(x,y) ((x)>=BX1 && (x)<=BX2 && (y)>=BY1 &&(y)<=BY2) #define IN_LEV_FIELD(x,y) ((x)>=0 && (x)=0 &&(y)= EL_CUSTOM_START && \ (e) <= EL_CUSTOM_END) @@ -368,14 +396,14 @@ #define EL_KEY_2 33 #define EL_KEY_3 34 #define EL_KEY_4 35 -#define EL_GATE_1_CLOSED 36 -#define EL_GATE_2_CLOSED 37 -#define EL_GATE_3_CLOSED 38 -#define EL_GATE_4_CLOSED 39 -#define EL_GATE_1_GRAY_CLOSED 40 -#define EL_GATE_2_GRAY_CLOSED 41 -#define EL_GATE_3_GRAY_CLOSED 42 -#define EL_GATE_4_GRAY_CLOSED 43 +#define EL_GATE_1 36 +#define EL_GATE_2 37 +#define EL_GATE_3 38 +#define EL_GATE_4 39 +#define EL_GATE_1_GRAY 40 +#define EL_GATE_2_GRAY 41 +#define EL_GATE_3_GRAY 42 +#define EL_GATE_4_GRAY 43 #define EL_DYNAMITE 44 #define EL_PACMAN 45 #define EL_INVISIBLE_WALL 46 @@ -479,10 +507,10 @@ #define EL_EXPANDABLE_WALL_VERTICAL 201 #define EL_EXPANDABLE_WALL_ANY 202 -#define EL_EM_GATE_1_CLOSED 203 -#define EL_EM_GATE_2_CLOSED 204 -#define EL_EM_GATE_3_CLOSED 205 -#define EL_EM_GATE_4_CLOSED 206 +#define EL_EM_GATE_1 203 +#define EL_EM_GATE_2 204 +#define EL_EM_GATE_3 205 +#define EL_EM_GATE_4 206 #define EL_EM_KEY_2_FILE 207 #define EL_EM_KEY_3_FILE 208 @@ -532,10 +560,10 @@ #define EL_SP_CHIP_BOTTOM (EL_SP_START + 39) #define EL_SP_END (EL_SP_START + 39) -#define EL_EM_GATE_1_GRAY_CLOSED 250 -#define EL_EM_GATE_2_GRAY_CLOSED 251 -#define EL_EM_GATE_3_GRAY_CLOSED 252 -#define EL_EM_GATE_4_GRAY_CLOSED 253 +#define EL_EM_GATE_1_GRAY 250 +#define EL_EM_GATE_2_GRAY 251 +#define EL_EM_GATE_3_GRAY 252 +#define EL_EM_GATE_4_GRAY 253 #define EL_UNUSED_254 254 #define EL_UNUSED_255 255 @@ -712,25 +740,9 @@ #define EL_BD_MAGIC_WALL_EMPTYING (EL_FIRST_RUNTIME_REAL + 43) #define EL_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 44) #define EL_BD_MAGIC_WALL_DEAD (EL_FIRST_RUNTIME_REAL + 45) -#define EL_GATE_1_OPEN (EL_FIRST_RUNTIME_REAL + 46) -#define EL_GATE_2_OPEN (EL_FIRST_RUNTIME_REAL + 47) -#define EL_GATE_3_OPEN (EL_FIRST_RUNTIME_REAL + 48) -#define EL_GATE_4_OPEN (EL_FIRST_RUNTIME_REAL + 49) -#define EL_GATE_1_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 50) -#define EL_GATE_2_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 51) -#define EL_GATE_3_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 52) -#define EL_GATE_4_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 53) -#define EL_EM_GATE_1_OPEN (EL_FIRST_RUNTIME_REAL + 54) -#define EL_EM_GATE_2_OPEN (EL_FIRST_RUNTIME_REAL + 55) -#define EL_EM_GATE_3_OPEN (EL_FIRST_RUNTIME_REAL + 56) -#define EL_EM_GATE_4_OPEN (EL_FIRST_RUNTIME_REAL + 57) -#define EL_EM_GATE_1_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 58) -#define EL_EM_GATE_2_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 59) -#define EL_EM_GATE_3_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 60) -#define EL_EM_GATE_4_GRAY_OPEN (EL_FIRST_RUNTIME_REAL + 61) /* "unreal" (and therefore not drawable) runtime elements */ -#define EL_FIRST_RUNTIME_UNREAL (EL_FIRST_RUNTIME_REAL + 62) +#define EL_FIRST_RUNTIME_UNREAL (EL_FIRST_RUNTIME_REAL + 46) #define EL_BLOCKED (EL_FIRST_RUNTIME_UNREAL + 0) #define EL_EXPLOSION (EL_FIRST_RUNTIME_UNREAL + 1) @@ -799,7 +811,7 @@ #define NUM_ACTIONS 26 -/* values for special image configuration suffixes */ +/* values for special image configuration suffixes (must match game mode) */ #define GFX_SPECIAL_ARG_MAIN 0 #define GFX_SPECIAL_ARG_LEVELS 1 #define GFX_SPECIAL_ARG_SCORES 2 @@ -856,43 +868,49 @@ #define FONT_TITLE_2 5 #define FONT_MENU_1 6 #define FONT_MENU_2 7 -#define FONT_TEXT_1 8 -#define FONT_TEXT_2 9 -#define FONT_TEXT_3 10 -#define FONT_TEXT_4 11 -#define FONT_INPUT_1 12 -#define FONT_INPUT_1_ACTIVE 13 -#define FONT_INPUT_2 14 -#define FONT_INPUT_2_ACTIVE 15 -#define FONT_OPTION_OFF 16 -#define FONT_OPTION_ON 17 -#define FONT_VALUE_1 18 -#define FONT_VALUE_2 19 -#define FONT_VALUE_OLD 20 -#define FONT_LEVEL_NUMBER 21 -#define FONT_TAPE_RECORDER 22 -#define FONT_GAME_INFO 23 - -#define NUM_FONTS 24 +#define FONT_TEXT_1_ACTIVE 8 +#define FONT_TEXT_2_ACTIVE 9 +#define FONT_TEXT_3_ACTIVE 10 +#define FONT_TEXT_4_ACTIVE 11 +#define FONT_TEXT_1 12 +#define FONT_TEXT_2 13 +#define FONT_TEXT_3 14 +#define FONT_TEXT_4 15 +#define FONT_INPUT_1_ACTIVE 16 +#define FONT_INPUT_2_ACTIVE 17 +#define FONT_INPUT_1 18 +#define FONT_INPUT_2 19 +#define FONT_OPTION_OFF 20 +#define FONT_OPTION_ON 21 +#define FONT_VALUE_1 22 +#define FONT_VALUE_2 23 +#define FONT_VALUE_OLD 24 +#define FONT_LEVEL_NUMBER 25 +#define FONT_TAPE_RECORDER 26 +#define FONT_GAME_INFO 27 + +#define NUM_FONTS 28 #define NUM_INITIAL_FONTS 4 -/* values for game_status */ -#define EXITGAME 0 -#define MAINMENU 1 -#define PLAYING 2 -#define LEVELED 3 -#define HELPSCREEN 4 -#define CHOOSELEVEL 5 -#define TYPENAME 6 -#define HALLOFFAME 7 -#define SETUP 8 -#define PSEUDO_PREVIEW 9 -#define PSEUDO_DOOR 10 +/* values for game_status (must match special image configuration suffixes) */ +#define GAME_MODE_MAIN 0 +#define GAME_MODE_LEVELS 1 +#define GAME_MODE_SCORES 2 +#define GAME_MODE_EDITOR 3 +#define GAME_MODE_INFO 4 +#define GAME_MODE_SETUP 5 +#define GAME_MODE_PSEUDO_DOOR 6 +#define GAME_MODE_PSEUDO_PREVIEW 7 + +/* there are no special config file suffixes for these modes */ +#define GAME_MODE_PLAYING 8 +#define GAME_MODE_PSEUDO_TYPENAME 9 +#define GAME_MODE_QUIT 10 #define PROGRAM_VERSION_MAJOR 2 #define PROGRAM_VERSION_MINOR 2 #define PROGRAM_VERSION_PATCH 0 -#define PROGRAM_VERSION_STRING "2.2.0rc6" +#define PROGRAM_VERSION_STRING "2.2.0rc7" #define PROGRAM_TITLE_STRING "Rocks'n'Diamonds" #define PROGRAM_AUTHOR_STRING "Holger Schemel" @@ -1104,19 +1122,25 @@ struct GlobalInfo int num_toons; - int menu_draw_xoffset; - int menu_draw_yoffset; - int menu_draw_xoffset_MAIN; - int menu_draw_yoffset_MAIN; - - int door_step_offset; - int door_step_delay; - float frames_per_second; boolean fps_slowdown; int fps_slowdown_factor; }; +struct MenuInfo +{ + int draw_xoffset_default; + int draw_yoffset_default; + int draw_xoffset[NUM_SPECIAL_GFX_ARGS]; + int draw_yoffset[NUM_SPECIAL_GFX_ARGS]; +}; + +struct DoorInfo +{ + int step_offset; + int step_delay; +}; + struct ElementInfo { char *token_name; /* element token used in config files */ @@ -1266,10 +1290,13 @@ extern struct HiScore highscore[]; extern struct TapeInfo tape; extern struct GameInfo game; extern struct GlobalInfo global; +extern struct MenuInfo menu; +extern struct DoorInfo door; extern struct ElementInfo element_info[]; extern struct ElementActionInfo element_action_info[]; extern struct ElementDirectionInfo element_direction_info[]; extern struct SpecialSuffixInfo special_suffix_info[]; +extern struct TokenIntPtrInfo image_config_vars[]; extern struct FontInfo font_info[]; extern struct GraphicInfo *graphic_info; extern struct SoundInfo *sound_info;