X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=8a0fca2c30269df31ab100a379625bde365543bf;hb=c781e660ed2fe6ad36c9eee0a77d64ee07163030;hp=1f16fcc82deec921f94ebd28c5730e55c91876e5;hpb=274935f49f49068998ad7b4ed9d93892aedfc6aa;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 1f16fcc8..8a0fca2c 100644 --- a/src/main.h +++ b/src/main.h @@ -185,9 +185,12 @@ #define CH_EVENT_BIT(c) (1 << (c)) #define CH_EVENT_VAR(e) (element_info[e].change->events) +#define CH_ANY_EVENT_VAR(e) (element_info[e].change_events) #define HAS_CHANGE_EVENT(e,c) (IS_CUSTOM_ELEMENT(e) && \ (CH_EVENT_VAR(e) & CH_EVENT_BIT(c)) != 0) +#define HAS_ANY_CHANGE_EVENT(e,c) (IS_CUSTOM_ELEMENT(e) && \ + (CH_ANY_EVENT_VAR(e) & CH_EVENT_BIT(c)) != 0) #define SET_CHANGE_EVENT(e,c,v) (IS_CUSTOM_ELEMENT(e) ? \ ((v) ? \ (CH_EVENT_VAR(e) |= CH_EVENT_BIT(c)) : \ @@ -1233,6 +1236,8 @@ struct DoorInfo struct ElementChangeInfo { + boolean can_change; /* use or ignore this change info */ + unsigned long events; /* bitfield for change events */ short target_element; /* target element after change */ @@ -1317,10 +1322,13 @@ struct ElementInfo int num_change_pages; /* actual number of change pages */ int current_change_page; /* currently edited change page */ - /* ---------- internal values used in game at runtime ---------- */ + /* ---------- internal values used at runtime when playing ---------- */ unsigned long change_events; /* bitfield for combined change events */ + int event_page_num[NUM_CHANGE_EVENTS]; /* page number for each event */ + struct ElementChangeInfo *event_page[NUM_CHANGE_EVENTS]; /* page for event */ + /* ---------- internal values used in level editor ---------- */ int access_type; /* walkable or passable */