… | |
… | |
107 | * used in the get_map_flags value - that function is used to return |
107 | * used in the get_map_flags value - that function is used to return |
108 | * the flag value, as well as other conditions - using a more general |
108 | * the flag value, as well as other conditions - using a more general |
109 | * function that does more of the work can hopefully be used to replace |
109 | * function that does more of the work can hopefully be used to replace |
110 | * lots of duplicate checks currently in the code. |
110 | * lots of duplicate checks currently in the code. |
111 | */ |
111 | */ |
112 | #define P_OUT_OF_MAP 0x10000 /* This space is outside the map */ |
112 | #define P_OUT_OF_MAP 0x10000 /* This space is outside the map */ |
113 | #define P_NEW_MAP 0x20000 |
113 | #define P_NEW_MAP 0x20000 /* Coordinates passed result in a new tiled map */ |
114 | /* Coordinates passed result in a new tiled map */ |
|
|
115 | |
114 | |
116 | /* Instead of having numerous arrays that have information on a |
115 | /* Instead of having numerous arrays that have information on a |
117 | * particular space (was map, floor, floor2, map_ob), |
116 | * particular space (was map, floor, floor2, map_ob), |
118 | * have this structure take care of that information. |
117 | * have this structure take care of that information. |
119 | * This puts it all in one place, and should also make it easier |
118 | * This puts it all in one place, and should also make it easier |
… | |
… | |
123 | struct mapspace |
122 | struct mapspace |
124 | { |
123 | { |
125 | object *ACC (RW, bot); |
124 | object *ACC (RW, bot); |
126 | object *ACC (RW, top); /* lowest/highest object on this space */ |
125 | object *ACC (RW, top); /* lowest/highest object on this space */ |
127 | object *ACC (RW, faces_obj[MAP_LAYERS]);/* face objects for the 3 layers */ |
126 | object *ACC (RW, faces_obj[MAP_LAYERS]);/* face objects for the 3 layers */ |
|
|
127 | uint32_t smell; // the last count a player was seen here, or 0 |
|
|
128 | static uint32_t smellcount; // global smell counter |
128 | uint8 flags_; /* flags about this space (see the P_ values above) */ |
129 | uint8 flags_; /* flags about this space (see the P_ values above) */ |
129 | sint8 ACC (RW, light); /* How much light this space provides */ |
130 | sint8 ACC (RW, light); /* How much light this space provides */ |
130 | MoveType ACC (RW, move_block); /* What movement types this space blocks */ |
131 | MoveType ACC (RW, move_block); /* What movement types this space blocks */ |
131 | MoveType ACC (RW, move_slow); /* What movement types this space slows */ |
132 | MoveType ACC (RW, move_slow); /* What movement types this space slows */ |
132 | MoveType ACC (RW, move_on); /* What movement types are activated */ |
133 | MoveType ACC (RW, move_on); /* What movement types are activated */ |
… | |
… | |
502 | /* if not, do it the slow way */ \ |
503 | /* if not, do it the slow way */ \ |
503 | if (!m || ++ny >= m->height) \ |
504 | if (!m || ++ny >= m->height) \ |
504 | { \ |
505 | { \ |
505 | nx = (op)->x + dx; ny = (op)->y + dy; m = (op)->map; \ |
506 | nx = (op)->x + dx; ny = (op)->y + dy; m = (op)->map; \ |
506 | \ |
507 | \ |
507 | if (xy_normalise (m, nx, ny)) \ |
508 | if (!xy_normalise (m, nx, ny)) \ |
508 | m->touch (); \ |
|
|
509 | else \ |
|
|
510 | m = 0; \ |
509 | m = 0; \ |
511 | } |
510 | } |
512 | |
511 | |
513 | #define ordered_mapwalk_end \ |
512 | #define ordered_mapwalk_end \ |
514 | } \ |
513 | } \ |