X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=877609eb421979875eec661639853f1602a88d1f;hb=db89d31c2a430be3b7c3eb19b779c9347efa9ba5;hp=5e22d27a0d8ec82f62c73bd52335a436293d46fc;hpb=113df1c4ad60b24a31ec6498f8cd3b2d4cd9dbfd;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 5e22d27a..877609eb 100644 --- a/src/main.h +++ b/src/main.h @@ -163,11 +163,15 @@ #define EP_HAS_ACTION 87 #define EP_CAN_CHANGE_OR_HAS_ACTION 88 -#define NUM_ELEMENT_PROPERTIES 89 +/* values for internal purpose only (other) */ +#define EP_OBSOLETE 89 + +#define NUM_ELEMENT_PROPERTIES 90 #define NUM_EP_BITFIELDS ((NUM_ELEMENT_PROPERTIES + 31) / 32) -#define EP_BITFIELD_BASE 0 +#define EP_BITFIELD_BASE_NR 0 +#define EP_BITMASK_BASE_DEFAULT (1 << EP_CAN_MOVE_INTO_ACID) #define EP_BITMASK_DEFAULT 0 #define PROPERTY_BIT(p) (1 << ((p) % 32)) @@ -221,11 +225,18 @@ #define CE_MOVE_OF_X 35 #define CE_DIGGING_X 36 #define CE_CREATION_OF_X 37 +#define CE_SCORE_GETS_ZERO 38 +#define CE_SCORE_GETS_ZERO_OF_X 39 + +#define NUM_CHANGE_EVENTS 40 -#define NUM_CHANGE_EVENTS 38 +#define NUM_CE_BITFIELDS ((NUM_CHANGE_EVENTS + 31) / 32) #define CE_BITMASK_DEFAULT 0 +#define CH_EVENT_BITFIELD_NR(e) (e / 32) +#define CH_EVENT_BIT(e) (1 << ((e) % 32)) + #define CH_EVENT_VAR(e,c) (element_info[e].change->has_event[c]) #define CH_ANY_EVENT_VAR(e,c) (element_info[e].has_change_event[c]) @@ -381,13 +392,16 @@ #define CA_ARG_ELEMENT_RESET (CA_ARG_ELEMENT + 0) #define CA_ARG_ELEMENT_TARGET (CA_ARG_ELEMENT + 1) #define CA_ARG_ELEMENT_TRIGGER (CA_ARG_ELEMENT + 2) -#define CA_ARG_ELEMENT_HEADLINE (CA_ARG_ELEMENT + 998) +#define CA_ARG_ELEMENT_HEADLINE (CA_ARG_ELEMENT + 997) #define CA_ARG_ELEMENT_CV_TARGET (CA_ARG_ELEMENT_TARGET) #define CA_ARG_ELEMENT_CV_TRIGGER (CA_ARG_ELEMENT_TRIGGER) #define CA_ARG_ELEMENT_CV_HEADLINE (CA_ARG_ELEMENT_HEADLINE) #define CA_ARG_ELEMENT_NR_TARGET (CA_ARG_ELEMENT + 3) #define CA_ARG_ELEMENT_NR_TRIGGER (CA_ARG_ELEMENT + 4) -#define CA_ARG_ELEMENT_NR_HEADLINE (CA_ARG_ELEMENT + 999) +#define CA_ARG_ELEMENT_NR_HEADLINE (CA_ARG_ELEMENT + 998) +#define CA_ARG_ELEMENT_CS_TARGET (CA_ARG_ELEMENT + 5) +#define CA_ARG_ELEMENT_CS_TRIGGER (CA_ARG_ELEMENT + 6) +#define CA_ARG_ELEMENT_CS_HEADLINE (CA_ARG_ELEMENT + 999) #define CA_ARG_SPEED 13000 #define CA_ARG_SPEED_NOT_MOVING (CA_ARG_SPEED + STEPSIZE_NOT_MOVING) #define CA_ARG_SPEED_VERY_SLOW (CA_ARG_SPEED + STEPSIZE_VERY_SLOW) @@ -588,6 +602,8 @@ #define CAN_CHANGE_OR_HAS_ACTION(e) \ HAS_PROPERTY(e, EP_CAN_CHANGE_OR_HAS_ACTION) +#define IS_OBSOLETE(e) HAS_PROPERTY(e, EP_OBSOLETE) + /* special macros used in game engine */ #define IS_CUSTOM_ELEMENT(e) ((e) >= EL_CUSTOM_START && \ (e) <= EL_CUSTOM_END) @@ -667,6 +683,7 @@ #define GFX_ELEMENT(e) (element_info[e].use_gfx_element ? \ element_info[e].gfx_element : e) +/* !!! CHECK THIS !!! */ #if 1 #define TILE_GFX_ELEMENT(x, y) \ (GfxElement[x][y] != EL_UNDEFINED && \ @@ -774,12 +791,16 @@ #define MAX_ELEMENT_NAME_LEN 32 #define MAX_TAPES_PER_SET 1024 #define MAX_SCORE_ENTRIES 100 +#define MAX_NUM_TITLE_SCREENS 5 + #define MAX_NUM_AMOEBA 100 + #if 0 /* game.h */ #define MAX_INVENTORY_SIZE 1000 #define STD_NUM_KEYS 4 #define MAX_NUM_KEYS 8 #endif + #define NUM_BELTS 4 #define NUM_BELT_PARTS 3 #define MIN_ENVELOPE_XSIZE 1 @@ -1265,13 +1286,16 @@ #define EL_EMC_DRIPPER 704 #define EL_TRIGGER_CE_VALUE 705 +#define EL_TRIGGER_CE_SCORE 706 +#define EL_CURRENT_CE_VALUE 707 +#define EL_CURRENT_CE_SCORE 708 -#define EL_YAMYAM_LEFT 706 -#define EL_YAMYAM_RIGHT 707 -#define EL_YAMYAM_UP 708 -#define EL_YAMYAM_DOWN 709 +#define EL_YAMYAM_LEFT 709 +#define EL_YAMYAM_RIGHT 710 +#define EL_YAMYAM_UP 711 +#define EL_YAMYAM_DOWN 712 -#define NUM_FILE_ELEMENTS 710 +#define NUM_FILE_ELEMENTS 713 /* "real" (and therefore drawable) runtime elements */ @@ -1534,18 +1558,19 @@ /* values for special image configuration suffixes (must match game mode) */ #define GFX_SPECIAL_ARG_DEFAULT 0 -#define GFX_SPECIAL_ARG_MAIN 1 -#define GFX_SPECIAL_ARG_LEVELS 2 -#define GFX_SPECIAL_ARG_SCORES 3 -#define GFX_SPECIAL_ARG_EDITOR 4 -#define GFX_SPECIAL_ARG_INFO 5 -#define GFX_SPECIAL_ARG_SETUP 6 -#define GFX_SPECIAL_ARG_PLAYING 7 -#define GFX_SPECIAL_ARG_DOOR 8 -#define GFX_SPECIAL_ARG_PREVIEW 9 -#define GFX_SPECIAL_ARG_CRUMBLED 10 +#define GFX_SPECIAL_ARG_TITLE 1 +#define GFX_SPECIAL_ARG_MAIN 2 +#define GFX_SPECIAL_ARG_LEVELS 3 +#define GFX_SPECIAL_ARG_SCORES 4 +#define GFX_SPECIAL_ARG_EDITOR 5 +#define GFX_SPECIAL_ARG_INFO 6 +#define GFX_SPECIAL_ARG_SETUP 7 +#define GFX_SPECIAL_ARG_PLAYING 8 +#define GFX_SPECIAL_ARG_DOOR 9 +#define GFX_SPECIAL_ARG_PREVIEW 10 +#define GFX_SPECIAL_ARG_CRUMBLED 11 -#define NUM_SPECIAL_GFX_ARGS 11 +#define NUM_SPECIAL_GFX_ARGS 12 /* values for image configuration suffixes */ @@ -1636,29 +1661,31 @@ #define FONT_VALUE_1 26 #define FONT_VALUE_2 27 #define FONT_VALUE_OLD 28 -#define FONT_LEVEL_NUMBER 29 -#define FONT_TAPE_RECORDER 30 -#define FONT_GAME_INFO 31 +#define FONT_LEVEL_NUMBER_ACTIVE 29 +#define FONT_LEVEL_NUMBER 30 +#define FONT_TAPE_RECORDER 31 +#define FONT_GAME_INFO 32 -#define NUM_FONTS 32 +#define NUM_FONTS 33 #define NUM_INITIAL_FONTS 4 /* values for game_status (must match special image configuration suffixes) */ #define GAME_MODE_DEFAULT 0 -#define GAME_MODE_MAIN 1 -#define GAME_MODE_LEVELS 2 -#define GAME_MODE_SCORES 3 -#define GAME_MODE_EDITOR 4 -#define GAME_MODE_INFO 5 -#define GAME_MODE_SETUP 6 -#define GAME_MODE_PLAYING 7 -#define GAME_MODE_PSEUDO_DOOR 8 -#define GAME_MODE_PSEUDO_PREVIEW 9 -#define GAME_MODE_PSEUDO_CRUMBLED 10 +#define GAME_MODE_TITLE 1 +#define GAME_MODE_MAIN 2 +#define GAME_MODE_LEVELS 3 +#define GAME_MODE_SCORES 4 +#define GAME_MODE_EDITOR 5 +#define GAME_MODE_INFO 6 +#define GAME_MODE_SETUP 7 +#define GAME_MODE_PLAYING 8 +#define GAME_MODE_PSEUDO_DOOR 9 +#define GAME_MODE_PSEUDO_PREVIEW 10 +#define GAME_MODE_PSEUDO_CRUMBLED 11 /* there are no special config file suffixes for these modes */ -#define GAME_MODE_PSEUDO_TYPENAME 11 -#define GAME_MODE_QUIT 12 +#define GAME_MODE_PSEUDO_TYPENAME 12 +#define GAME_MODE_QUIT 13 /* special definitions currently only used for custom artwork configuration */ #define MUSIC_PREFIX_BACKGROUND 0 @@ -1970,6 +1997,7 @@ struct ElementChangeInfo int actual_trigger_side; /* element side that triggered the change */ int actual_trigger_player; /* player which actually triggered change */ int actual_trigger_ce_value; /* CE value of element that triggered change */ + int actual_trigger_ce_score; /* CE score of element that triggered change */ boolean can_change_or_has_action; /* can_change | has_action */ @@ -2147,7 +2175,8 @@ struct GraphicInfo int step_offset; /* optional step offset of toon animations */ int step_delay; /* optional step delay of toon animations */ - int draw_x, draw_y; /* optional offset for drawing fonts chars */ + int draw_xoffset; /* optional offset for drawing font chars */ + int draw_yoffset; /* optional offset for drawing font chars */ int draw_masked; /* optional setting for drawing envelope gfx */ @@ -2225,10 +2254,12 @@ struct HelpAnimInfo }; -extern Bitmap *bitmap_db_field, *bitmap_db_door; +extern Bitmap *bitmap_db_title; +extern Bitmap *bitmap_db_field; +extern Bitmap *bitmap_db_door; extern Pixmap tile_clipmask[]; -extern DrawBuffer *fieldbuffer; -extern DrawBuffer *drawto_field; +extern DrawBuffer *fieldbuffer; +extern DrawBuffer *drawto_field; extern int game_status; extern boolean level_editor_test_game;