1 | /* |
1 | /* |
2 | * This file is part of Deliantra, the Roguelike Realtime MMORPG. |
2 | * This file is part of Deliantra, the Roguelike Realtime MMORPG. |
3 | * |
3 | * |
4 | * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Deliantra team |
4 | * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra team |
5 | * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team |
5 | * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team |
6 | * Copyright (©) 1992,2007 Frank Tore Johansen |
6 | * Copyright (©) 1992,2007 Frank Tore Johansen |
7 | * |
7 | * |
8 | * Deliantra is free software: you can redistribute it and/or modify |
8 | * Deliantra is free software: you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License as published by |
9 | * it under the terms of the GNU General Public License as published by |
… | |
… | |
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]; |
… | |
… | |
174 | uint8 ACC (RW, state); /* Input state of the player (name, password, etc */ |
174 | uint8 ACC (RW, state); /* Input state of the player (name, password, etc */ |
175 | |
175 | |
176 | sint8 ACC (RW, last_level); /* Last level we sent to client */ |
176 | sint8 ACC (RW, last_level); /* Last level we sent to client */ |
177 | uint16 ACC (RW, last_flags); /* fire/run on flags for last tick */ |
177 | uint16 ACC (RW, last_flags); /* fire/run on flags for last tick */ |
178 | float ACC (RW, last_weapon_sp); /* if diff than weapon_sp, update client */ |
178 | float ACC (RW, last_weapon_sp); /* if diff than weapon_sp, update client */ |
179 | //sint32 ACC (RW, last_weight); /* Last weight as sent to client; -1 means do not send weight */ |
179 | sint32 ACC (RW, last_weight); /* Last weight as sent to client; -1 means do not send weight */ |
180 | sint32 ACC (RW, last_weight_limit); /* Last weight limit transmitted to client */ |
180 | sint32 ACC (RW, last_weight_limit); /* Last weight limit transmitted to client */ |
181 | uint32 ACC (RW, last_path_attuned); /* Last spell attunment sent to client */ |
181 | uint32 ACC (RW, last_path_attuned); /* Last spell attunment sent to client */ |
182 | uint32 ACC (RW, last_path_repelled); /* Last spell repelled sent to client */ |
182 | uint32 ACC (RW, last_path_repelled); /* Last spell repelled sent to client */ |
183 | uint32 ACC (RW, last_path_denied); /* Last spell denied sent to client */ |
183 | uint32 ACC (RW, last_path_denied); /* Last spell denied sent to client */ |
184 | living ACC (RO, last_stats); /* Last stats as sent to client */ |
184 | living ACC (RO, last_stats); /* Last stats as sent to client */ |
… | |
… | |
222 | uint16 ACC (RW, mss); // likely tcp maximum segment size |
222 | uint16 ACC (RW, mss); // likely tcp maximum segment size |
223 | uint8 ACC (RW, mapmode); /* Type of map commands the client wants. */ |
223 | 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 */ |
224 | 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 */ |
225 | uint8 ACC (RW, itemcmd); /* What version of the 'item' protocol command to use */ |
226 | |
226 | |
227 | maptile *ACC (RW, current_map); // CF+ last/current player map |
227 | maptile_ptr ACC (RW, current_map); // CF+ last/current player map |
228 | region *ACC (RW, current_region); // CF+ last/current player region |
228 | 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 |
229 | int ACC (RW, current_x), ACC (RW, current_y); // CF+ last/current map position |
230 | shstr ACC (RW, version); // CF+ client name/version |
230 | shstr ACC (RW, version); // CF+ client name/version |
231 | uint8 ACC (RW, faceset); // CF+ selected faceset |
231 | uint8 ACC (RW, faceset); // CF+ selected faceset |
232 | |
232 | |
233 | tstamp ACC (RW, last_send); // last data send on socket. |
233 | tstamp ACC (RW, last_send); // last data send on socket. |
… | |
… | |
409 | |
409 | |
410 | #define for_all_clients(var) \ |
410 | #define for_all_clients(var) \ |
411 | for (int _i = 0; _i < clients.size (); ++_i) \ |
411 | for (int _i = 0; _i < clients.size (); ++_i) \ |
412 | statementvar (client *, var, clients [_i]) |
412 | statementvar (client *, var, clients [_i]) |
413 | |
413 | |
|
|
414 | // returns true when the message needs special (read: perl) treatment |
|
|
415 | static inline bool |
|
|
416 | msg_is_special (const char *msg, bool nl_special = true) |
|
|
417 | { |
|
|
418 | return msg [strcspn (msg, nl_special ? "<&\n" : "<&")]; |
|
|
419 | } |
|
|
420 | |
414 | #endif |
421 | #endif |
415 | |
422 | |