X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=39692e8562ad56d763a6ae1893267286b26b3aa2;hb=7892cce9f39489a779f8fad4a3e756b0bb8dbee5;hp=bb85b0ccf017add7642edf2bd93f9c4b01bbb98a;hpb=bf1e4db1ffa9a313b8d1b68e55633ace682fef96;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index bb85b0cc..39692e85 100644 --- a/src/main.h +++ b/src/main.h @@ -86,6 +86,7 @@ #define EP_DROPPABLE 22 #define EP_CAN_EXPLODE_1X1 23 #define EP_PUSHABLE 24 +#define EP_CAN_EXPLODE_DYNA 25 /* values for pre-defined properties */ #define EP_PLAYER 32 @@ -161,7 +162,7 @@ #define CE_PRESSED_BY_PLAYER 2 #define CE_PUSHED_BY_PLAYER 3 #define CE_DROPPED_BY_PLAYER 4 -#define CE_COLLISION_ACTIVE 5 +#define CE_HITTING_SOMETHING 5 #define CE_IMPACT 6 #define CE_SMASHED 7 #define CE_OTHER_IS_TOUCHING 8 @@ -183,9 +184,9 @@ #define CE_OTHER_GETS_LEFT 24 #define CE_SWITCHED 25 #define CE_OTHER_IS_SWITCHING 26 -#define CE_COLLISION_PASSIVE 27 -#define CE_OTHER_IS_COLL_ACTIVE 28 -#define CE_OTHER_IS_COLL_PASSIVE 29 +#define CE_HIT_BY_SOMETHING 27 +#define CE_OTHER_IS_HITTING 28 +#define CE_OTHER_GETS_HIT 29 #define NUM_CHANGE_EVENTS 30 @@ -229,7 +230,7 @@ #define MV_BIT_WHEN_PUSHED 10 #define MV_BIT_MAZE_RUNNER 11 #define MV_BIT_MAZE_HUNTER 12 -#define MV_BIT_PROJECTILE 13 +#define MV_BIT_WHEN_DROPPED 13 #define MV_BIT_TURNING_LEFT_RIGHT 14 #define MV_BIT_TURNING_RIGHT_LEFT 15 #define MV_BIT_TURNING_RANDOM 16 @@ -249,7 +250,7 @@ #define MV_MAZE_RUNNER (1 << MV_BIT_MAZE_RUNNER) #define MV_MAZE_HUNTER (1 << MV_BIT_MAZE_HUNTER) #define MV_MAZE_RUNNER_STYLE (MV_MAZE_RUNNER | MV_MAZE_HUNTER) -#define MV_PROJECTILE (1 << MV_BIT_PROJECTILE) +#define MV_WHEN_DROPPED (1 << MV_BIT_WHEN_DROPPED) #define MV_TURNING_LEFT_RIGHT (1 << MV_BIT_TURNING_LEFT_RIGHT) #define MV_TURNING_RIGHT_LEFT (1 << MV_BIT_TURNING_RIGHT_LEFT) #define MV_TURNING_RANDOM (1 << MV_BIT_TURNING_RANDOM) @@ -287,6 +288,7 @@ #define IS_DROPPABLE(e) HAS_PROPERTY(e, EP_DROPPABLE) #define CAN_EXPLODE_1X1(e) HAS_PROPERTY(e, EP_CAN_EXPLODE_1X1) #define IS_PUSHABLE(e) HAS_PROPERTY(e, EP_PUSHABLE) +#define CAN_EXPLODE_DYNA(e) HAS_PROPERTY(e, EP_CAN_EXPLODE_DYNA) /* macros for special configurable properties */ #define IS_EM_SLIPPERY_WALL(e) HAS_PROPERTY(e, EP_EM_SLIPPERY_WALL) @@ -340,6 +342,9 @@ #define IS_CUSTOM_ELEMENT(e) ((e) >= EL_CUSTOM_START && \ (e) <= EL_CUSTOM_END) +#define IS_GROUP_ELEMENT(e) ((e) >= EL_GROUP_START && \ + (e) <= EL_GROUP_END) + #define IS_ENVELOPE(e) ((e) >= EL_ENVELOPE_1 && \ (e) <= EL_ENVELOPE_4) @@ -416,6 +421,8 @@ #define MAX_ENVELOPE_TEXT_LEN (MAX_ENVELOPE_XSIZE * MAX_ENVELOPE_YSIZE) #define MIN_CHANGE_PAGES 1 #define MAX_CHANGE_PAGES 16 +#define MIN_ELEMENTS_IN_GROUP 1 +#define MAX_ELEMENTS_IN_GROUP 16 /* values for elements with content */ #define MIN_ELEMENT_CONTENTS 1 @@ -462,6 +469,23 @@ #define MICROLABEL_YPOS (MICROLEV_YPOS + MICROLEV_YSIZE + 7) +/* score for elements */ +#define SC_EMERALD 0 +#define SC_DIAMOND 1 +#define SC_BUG 2 +#define SC_SPACESHIP 3 +#define SC_YAMYAM 4 +#define SC_ROBOT 5 +#define SC_PACMAN 6 +#define SC_NUT 7 +#define SC_DYNAMITE 8 +#define SC_KEY 9 +#define SC_TIME_BONUS 10 +#define SC_CRYSTAL 11 +#define SC_PEARL 12 +#define SC_SHIELD 13 + + /* "real" level file elements */ #define EL_UNDEFINED -1 @@ -805,7 +829,16 @@ #define EL_ENVELOPE_3 622 #define EL_ENVELOPE_4 623 -#define NUM_FILE_ELEMENTS 624 +/* ---------- begin of group elements section ------------------------------ */ +#define EL_GROUP_START 624 + +#include "conf_grp.h" /* include auto-generated data structure definitions */ + +#define NUM_GROUP_ELEMENTS 32 +#define EL_GROUP_END 655 +/* ---------- end of custom elements section ------------------------------- */ + +#define NUM_FILE_ELEMENTS 656 /* "real" (and therefore drawable) runtime elements */ @@ -1215,6 +1248,7 @@ struct PlayerInfo boolean is_collecting; boolean is_pushing; boolean is_switching; + boolean is_dropping; boolean is_bored; boolean is_sleeping; @@ -1239,6 +1273,8 @@ struct PlayerInfo unsigned long move_delay; int move_delay_value; + int move_delay_reset_counter; + unsigned long push_delay; unsigned long push_delay_value; @@ -1267,6 +1303,13 @@ struct LevelSetInfo int music[MAX_LEVELS]; }; +struct LevelFileInfo +{ + int nr; + int type; + char *filename; +}; + struct LevelInfo { int file_version; /* file format version the level is stored with */ @@ -1418,6 +1461,13 @@ struct ElementChangeInfo int other_action; /* change triggered by other element actions */ }; +struct ElementGroupInfo +{ + int num_elements; /* number of elements in this group */ + + short element[MAX_ELEMENTS_IN_GROUP]; /* list of elements in this group */ +}; + struct ElementInfo { /* ---------- token and description strings ---------- */ @@ -1470,6 +1520,8 @@ struct ElementInfo int num_change_pages; /* actual number of change pages */ int current_change_page; /* currently edited change page */ + struct ElementGroupInfo *group; /* pointer to element group info */ + /* ---------- internal values used at runtime when playing ---------- */ unsigned long change_events; /* bitfield for combined change events */