… | |
… | |
68 | // (possibly) max. number of objects "per page" in the ground container |
68 | // (possibly) max. number of objects "per page" in the ground container |
69 | #define FLOORBOX_PAGESIZE 50 |
69 | #define FLOORBOX_PAGESIZE 50 |
70 | |
70 | |
71 | struct MapCell |
71 | struct MapCell |
72 | { |
72 | { |
73 | tag_t player; // this is, unfortunately, very wasteful of memory space, but pretty bandwidth-efficient |
73 | tag_t player; // this is, unfortunately, very wasteful of memory space, but pretty bandwidth-efficient |
74 | int count; /* This is really darkness in the map1 command */ |
74 | int count; /* This is really darkness in the map1 command */ |
75 | faceidx faces[MAP_LAYERS]; |
75 | faceidx faces[MAP_LAYERS]; |
76 | unsigned char stat_hp; // health of something in this space, or 0 |
76 | unsigned char stat_hp; // health of something in this space, or 0 |
77 | unsigned char flags; |
77 | unsigned char flags; |
78 | uint8_t smooth[MAP_LAYERS]; |
78 | uint8_t smooth[MAP_LAYERS]; |
… | |
… | |
157 | int ACC (RW, fd); |
157 | int ACC (RW, fd); |
158 | unsigned int inbuf_len; // number of bytes valid in inbuf |
158 | unsigned int inbuf_len; // number of bytes valid in inbuf |
159 | statsinfo stats; |
159 | statsinfo stats; |
160 | object_vector_index ACC (RO, active); |
160 | object_vector_index ACC (RO, active); |
161 | player_ptr ACC (RO, pl); |
161 | player_ptr ACC (RO, pl); |
162 | |
|
|
163 | /* The following is the setup for a ring buffer for storing output |
|
|
164 | * data that the OS can't handle right away. |
|
|
165 | */ |
|
|
166 | struct |
|
|
167 | { |
|
|
168 | char data[SOCKETBUFSIZE]; |
|
|
169 | int start; |
|
|
170 | int len; |
|
|
171 | } outputbuffer; |
|
|
172 | |
162 | |
173 | char *ACC (RW, host); /* Which host it is connected from (ip address) */ |
163 | char *ACC (RW, host); /* Which host it is connected from (ip address) */ |
174 | uint8 ACC (RW, state); /* Input state of the player (name, password, etc */ |
164 | uint8 ACC (RW, state); /* Input state of the player (name, password, etc */ |
175 | |
165 | |
176 | sint8 ACC (RW, last_level); /* Last level we sent to client */ |
166 | sint8 ACC (RW, last_level); /* Last level we sent to client */ |
… | |
… | |
222 | uint16 ACC (RW, mss); // likely tcp maximum segment size |
212 | uint16 ACC (RW, mss); // likely tcp maximum segment size |
223 | uint8 ACC (RW, mapmode); /* Type of map commands the client wants. */ |
213 | uint8 ACC (RW, mapmode); /* Type of map commands the client wants. */ |
224 | uint8 ACC (RW, mapx), ACC (RW, mapy); /* How large a map the client wants */ |
214 | uint8 ACC (RW, mapx), ACC (RW, mapy); /* How large a map the client wants */ |
225 | uint8 ACC (RW, itemcmd); /* What version of the 'item' protocol command to use */ |
215 | uint8 ACC (RW, itemcmd); /* What version of the 'item' protocol command to use */ |
226 | |
216 | |
227 | maptile *ACC (RW, current_map); // CF+ last/current player map |
217 | maptile_ptr ACC (RW, current_map); // CF+ last/current player map |
228 | region *ACC (RW, current_region); // CF+ last/current player region |
218 | region_ptr ACC (RW, current_region); // CF+ last/current player region |
229 | int ACC (RW, current_x), ACC (RW, current_y); // CF+ last/current map position |
219 | int ACC (RW, current_x), ACC (RW, current_y); // CF+ last/current map position |
230 | shstr ACC (RW, version); // CF+ client name/version |
220 | shstr ACC (RW, version); // CF+ client name/version |
231 | uint8 ACC (RW, faceset); // CF+ selected faceset |
221 | uint8 ACC (RW, faceset); // CF+ selected faceset |
232 | |
222 | |
233 | tstamp ACC (RW, last_send); // last data send on socket. |
223 | tstamp ACC (RW, last_send); // last data send on socket. |
… | |
… | |
280 | int count; |
270 | int count; |
281 | char msg[MSG_BUF_SIZE]; |
271 | char msg[MSG_BUF_SIZE]; |
282 | } msgbuf[MSG_BUF_COUNT]; |
272 | } msgbuf[MSG_BUF_COUNT]; |
283 | |
273 | |
284 | MTH bool msg_suppressed (const char *msg); |
274 | MTH bool msg_suppressed (const char *msg); |
|
|
275 | |
|
|
276 | /* The following is the setup for a ring buffer for storing output |
|
|
277 | * data that the OS can't handle right away. |
|
|
278 | * TODO: this member is enourmously large - optimise? |
|
|
279 | */ |
|
|
280 | struct |
|
|
281 | { |
|
|
282 | char data[SOCKETBUFSIZE]; |
|
|
283 | int start; |
|
|
284 | int len; |
|
|
285 | } outputbuffer; |
285 | |
286 | |
286 | bool may_execute (const packet_type *pkt) const; |
287 | bool may_execute (const packet_type *pkt) const; |
287 | void execute (const packet_type *pkt, char *data, int datalen); |
288 | void execute (const packet_type *pkt, char *data, int datalen); |
288 | |
289 | |
289 | void queue_command (packet_type *handler, char *data, int datalen); |
290 | void queue_command (packet_type *handler, char *data, int datalen); |
… | |
… | |
413 | |
414 | |
414 | // returns true when the message needs special (read: perl) treatment |
415 | // returns true when the message needs special (read: perl) treatment |
415 | static inline bool |
416 | static inline bool |
416 | msg_is_special (const char *msg, bool nl_special = true) |
417 | msg_is_special (const char *msg, bool nl_special = true) |
417 | { |
418 | { |
418 | return msg [strcspn (msg, nl_special ? "<[&\n" : "<[&")]; |
419 | return msg [strcspn (msg, nl_special ? "<&\n" : "<&")]; |
419 | } |
420 | } |
420 | |
421 | |
421 | #endif |
422 | #endif |
422 | |
423 | |