ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/global.h
(Generate patch)

Comparing deliantra/server/include/global.h (file contents):
Revision 1.21 by root, Mon Dec 11 21:32:17 2006 UTC vs.
Revision 1.33 by root, Sat Dec 30 10:16:10 2006 UTC

16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 20
21 The author can be reached via e-mail to crossfire-devel@real-time.com 21 The author can be reached via e-mail to crossfire@schmorp.de
22*/ 22*/
23 23
24#ifndef GLOBAL_H 24#ifndef GLOBAL_H
25#define GLOBAL_H 25#define GLOBAL_H
26 26
28#define EXTERN extern 28#define EXTERN extern
29#endif 29#endif
30 30
31#include "includes.h" 31#include "includes.h"
32 32
33typedef int8_t sint8; 33#include "config.h"
34typedef uint8_t uint8; 34#include "define.h"
35typedef int16_t sint16; 35#include "logger.h"
36typedef uint16_t uint16;
37typedef int32_t sint32;
38typedef uint32_t uint32;
39typedef int64_t sint64;
40typedef uint64_t uint64;
41 36
42typedef unsigned short Fontindex; 37#ifndef TRUE
38#define TRUE 1
39#endif
43 40
44#include <vector> 41#ifndef FALSE
42#define FALSE 0
43#endif
45 44
45// used only for tagging structure members so scripting languages
46// can easily parse the include files.
46#define ACC_CLASS(name) 47#define INTERFACE_CLASS(name)
47#define ACC(meta,member) member 48#define ACC(meta,member) member
49#define MTH
48 50
49#include "keyword.h" 51#include "keyword.h"
50#include "traits.h" 52#include "traits.h"
51#include "dynbuf.h" 53#include "dynbuf.h"
52#include "util.h" 54#include "util.h"
53#include "shstr.h" 55#include "shstr.h"
54 56
55/* This blob, in this order, is needed to actually define maps */ 57/* This blob, in this order, is needed to actually define maps */
56#include "face.h" 58#include "face.h"
57/* Include the basic defines from spells.h */ 59
60#include "spells.h"
61
58#include "attack.h" /* needs to be before material.h */ 62#include "attack.h" /* needs to be before material.h */
59#include "material.h" 63#include "material.h"
60#include "living.h" 64#include "living.h"
61#include "object.h" 65#include "object.h"
62#include "map.h" 66#include "map.h"
63#include "tod.h" 67#include "tod.h"
64 68
65#include "skills.h" 69#include "skills.h"
66 70
67/* Pull in the socket structure - used in the player structure */ 71/* Pull in the socket structure - used in the player structure */
68#include "newserver.h" 72#include "network.h"
73#include "client.h"
69 74
70/* Pull in the player structure */ 75/* Pull in the player structure */
71#include "player.h" 76#include "player.h"
72 77
73/* pull in treasure structure */ 78/* pull in treasure structure */
97#include "race.h" 102#include "race.h"
98 103
99/* Now for recipe/alchemy */ 104/* Now for recipe/alchemy */
100#include "recipe.h" 105#include "recipe.h"
101 106
102/* Now for spells */
103#include "spells.h"
104
105#include "funcpoint.h" 107#include "funcpoint.h"
106 108
107/***************************************************************************** 109/*****************************************************************************
108 * GLOBAL VARIABLES: * 110 * GLOBAL VARIABLES: *
109 *****************************************************************************/ 111 *****************************************************************************/
112 114
113/* 115/*
114 * These are the beginnings of linked lists: 116 * These are the beginnings of linked lists:
115 */ 117 */
116EXTERN player *first_player; 118EXTERN player *first_player;
117EXTERN maptile *first_map;
118EXTERN region *first_region; 119EXTERN region *first_region;
119EXTERN treasurelist *first_treasurelist; 120EXTERN treasurelist *first_treasurelist;
120EXTERN artifactlist *first_artifactlist; 121EXTERN artifactlist *first_artifactlist;
121EXTERN archetype *first_archetype; 122EXTERN archetype *first_archetype;
122EXTERN objectlink *first_friendly_object; /* Objects monsters will go after */ 123EXTERN objectlink *first_friendly_object; /* Objects monsters will go after */
131 132
132/* 133/*
133 * Variables set by different flags (see init.c): 134 * Variables set by different flags (see init.c):
134 */ 135 */
135 136
136EXTERN long warn_archetypes; /* If true, write warnings when failing */ 137EXTERN bool warn_archetypes; /* If true, write warnings when failing */
137 /* to find archetypes when loading from file */ 138 /* to find archetypes when loading from file */
138EXTERN long init_done; /* Ignores signals until init_done is true */ 139EXTERN bool init_done; /* Ignores signals until init_done is true */
139EXTERN long trying_emergency_save; /* True when emergency_save() is reached */ 140EXTERN bool in_cleanup; /* True when cleanup() is reached */
140EXTERN long nroferrors; /* If it exceeds MAX_ERRORS, call fatal() */
141 141
142extern long pticks; /* used by various function to determine */ 142extern long pticks; /* used by various function to determine */
143 /* how often to save the character */ 143 /* how often to save the character */
144/* 144/*
145 * Misc global variables: 145 * Misc global variables:
160/* 160/*
161 * Used in treasure.c 161 * Used in treasure.c
162 */ 162 */
163EXTERN archetype *ring_arch,*amulet_arch,*staff_arch,*crown_arch; 163EXTERN archetype *ring_arch,*amulet_arch,*staff_arch,*crown_arch;
164 164
165extern std::vector<Animations> animations; 165EXTERN std::vector<Animations> animations;
166EXTERN int num_animations,animations_allocated, bmaps_checksum; 166EXTERN int num_animations,animations_allocated, bmaps_checksum;
167 167
168/* Rotate right from bsd sum. This is used in various places for checksumming */ 168/* Rotate right from bsd sum. This is used in various places for checksumming */
169#define ROTATE_RIGHT(c) if ((c) & 01) (c) = ((c) >>1) + 0x80000000; else (c) >>= 1; 169#define ROTATE_RIGHT(c) if ((c) & 01) (c) = ((c) >>1) + 0x80000000; else (c) >>= 1;
170 170
171
172#define SET_ANIMATION(ob,newanim) ob->face=&new_faces[animations[ob->animation_id].faces[newanim]] 171#define SET_ANIMATION(ob,newanim) ob->face = new_faces + animations [ob->animation_id].faces [newanim]
173#define GET_ANIMATION(ob,anim) (animations[ob->animation_id].faces[anim]) 172#define GET_ANIMATION(ob,anim) animations [ob->animation_id].faces [anim]
174#define GET_ANIM_ID(ob) (ob->animation_id) 173#define GET_ANIM_ID(ob) (ob->animation_id)
175/* NUM_ANIMATIONS returns the number of animations allocated. The last 174/* NUM_ANIMATIONS returns the number of animations allocated. The last
176 * usuable animation will be NUM_ANIMATIONS-1 (for example, if an object 175 * usuable animation will be NUM_ANIMATIONS-1 (for example, if an object
177 * has 8 animations, NUM_ANIMATIONS will return 8, but the values will 176 * has 8 animations, NUM_ANIMATIONS will return 8, but the values will
178 * range from 0 through 7. 177 * range from 0 through 7.
187 186
188extern New_Face *blank_face, *empty_face; 187extern New_Face *blank_face, *empty_face;
189extern New_Face *dark_faces[]; 188extern New_Face *dark_faces[];
190extern New_Face *smooth_face; 189extern New_Face *smooth_face;
191 190
192
193extern long max_time; /* loop time */
194extern NewSocket *init_sockets; 191extern client *init_sockets;
195 192
193extern void emergency_save ();
194extern void cleanup (bool make_core = false);
196 195
197EXTERN char *font_graphic;
198
199#ifndef __CEXTRACT__
200#include "libproto.h" 196#include "libproto.h"
201#include "sockproto.h" 197#include "sockproto.h"
202#endif
203
204 198
205#define decrease_ob(xyz) decrease_ob_nr(xyz,1) 199#define decrease_ob(xyz) decrease_ob_nr(xyz,1)
206 200
207/* FREE_AND_CLEAR frees the pointer and then sets it to NULL. 201INTERFACE_CLASS (Settings)
208 * This is generally done as a safety, and having this macro
209 * makes the code a bit cleaner when doing so.
210 */
211#define FREE_AND_CLEAR(xyz) {free(xyz); xyz=NULL; }
212
213#ifdef CALLOC
214#undef CALLOC
215#endif
216
217#ifdef USE_CALLOC
218# define CALLOC(x,y) calloc(x,y)
219# define CFREE(x) free(x)
220#else
221# define CALLOC(x,y) malloc(x*y)
222# define CFREE(x) free(x)
223#endif
224
225#if HAVE_DIRENT_H
226# include <dirent.h>
227# define NAMLEN(dirent) strlen((dirent)->d_name)
228#else
229# define dirent direct
230# define NAMLEN(dirent) (dirnet)->d_namlen
231# if HAVE_SYS_NDIR_H
232# include <sys/ndir.h>
233# endif
234# if HAVE_SYS_DIR_H
235# include <sys/dir.h>
236# endif
237# if HAVE_NDIR_H
238# include <ndir.h>
239# endif
240#endif
241
242typedef struct Settings { 202struct Settings {
243 char *logfilename; /* logfile to use */ 203 char *ACC (RO, logfilename); /* logfile to use */
244 uint16 csport; /* port for new client/server */ 204 int ACC (RW, csport); /* port for new client/server */
245 LogLevel debug; /* Default debugging level */ 205 int ACC (RW, debug); /* Default debugging level */
246 uint8 dumpvalues; /* Set to dump various values/tables */ 206 uint8 dumpvalues; /* Set to dump various values/tables */
247 char *dumparg; /* additional argument for some dump functions */ 207 char *dumparg; /* additional argument for some dump functions */
248 uint8 daemonmode; /* If true, detach and become daemon */ 208 uint8 daemonmode; /* If true, detach and become daemon */
249 int argc; /* parameters that were passed to the program */ 209 int argc; /* parameters that were passed to the program */
250 char **argv; /* Only used by xio.c, so will go away at some time */ 210 char **argv; /* Only used by xio.c, so will go away at some time */
251 char *confdir; /* configuration files */ 211 char *ACC (RO, confdir); /* configuration files */
252 char *datadir; /* read only data files */ 212 char *ACC (RO, datadir); /* read only data files */
253 char *localdir; /* read/write data files */ 213 char *ACC (RO, localdir); /* read/write data files */
254 char *playerdir; /* Where the player files are */ 214 char *ACC (RO, playerdir); /* Where the player files are */
255 char *mapdir; /* Where the map files are */ 215 char *ACC (RO, mapdir); /* Where the map files are */
256 char *archetypes; /* name of the archetypes file - libdir is prepended */ 216 char *ACC (RO, archetypes); /* name of the archetypes file - libdir is prepended */
257 char *regions; /* name of the regions file - libdir is prepended */ 217 char *ACC (RO, regions); /* name of the regions file - libdir is prepended */
258 char *treasures; /* location of the treasures file. */ 218 char *ACC (RO, treasures); /* location of the treasures file. */
259 char *uniquedir; /* directory for the unique items */ 219 char *ACC (RO, uniquedir); /* directory for the unique items */
260 char *templatedir; /* directory for the template map */ 220 char *ACC (RO, templatedir); /* directory for the template map */
261 char *tmpdir; /* Directory to use for temporary files */ 221 char *ACC (RO, tmpdir); /* Directory to use for temporary files */
262 uint8 stat_loss_on_death; /* If true, chars lose a random stat when they die */
263 sint16 pk_luck_penalty; /* Amount by which player luck is reduced if they PK */ 222 sint16 ACC (RW, pk_luck_penalty); /* Amount by which player luck is reduced if they PK */
223 uint8 ACC (RW, stat_loss_on_death); /* If true, chars lose a random stat when they die */
264 uint8 permanent_exp_ratio; /* how much exp should be 'permenant' and unable to be lost*/ 224 uint8 ACC (RW, permanent_exp_ratio); /* how much exp should be 'permenant' and unable to be lost*/
265 uint8 death_penalty_ratio; /* how much exp should be lost at death */ 225 uint8 ACC (RW, death_penalty_ratio); /* how much exp should be lost at death */
266 uint8 death_penalty_level; /* how many levels worth of exp may be lost on one death */ 226 uint8 ACC (RW, death_penalty_level); /* how many levels worth of exp may be lost on one death */
267 uint8 balanced_stat_loss; /* If true, Death stat depletion based on level etc */ 227 uint8 ACC (RW, balanced_stat_loss); /* If true, Death stat depletion based on level etc */
268 uint8 not_permadeth; /* if true, death is non-permament */ 228 uint8 ACC (RW, not_permadeth); /* if true, death is non-permament */
269 uint8 simple_exp; /* If true, use the simple experience system */ 229 uint8 ACC (RW, simple_exp); /* If true, use the simple experience system */
270 int reset_loc_time; /* Number of seconds to put player back at home */ 230 int ACC (RW, reset_loc_time); /* Number of seconds to put player back at home */
271 uint8 set_title; /* players can set thier title */ 231 uint8 ACC (RW, set_title); /* players can set thier title */
272 uint8 resurrection; /* ressurection possible w/ permadeth on */ 232 uint8 ACC (RW, resurrection); /* ressurection possible w/ permadeth on */
273 uint8 search_items; /* search_items command */ 233 uint8 ACC (RW, search_items); /* search_items command */
274 uint8 spell_encumbrance; /* encumbrance effects spells */ 234 uint8 ACC (RW, spell_encumbrance); /* encumbrance effects spells */
275 uint8 spell_failure_effects; /* nasty backlash to spell failures */ 235 uint8 ACC (RW, spell_failure_effects); /* nasty backlash to spell failures */
276 uint16 set_friendly_fire; /* Percent of damage done by peaceful player vs player damage */ 236 uint16 ACC (RW, set_friendly_fire); /* Percent of damage done by peaceful player vs player damage */
277 uint8 casting_time; /* it takes awhile to cast a spell */ 237 uint8 ACC (RW, casting_time); /* it takes awhile to cast a spell */
278 uint8 real_wiz; /* use mud-like wizards */ 238 uint8 ACC (RW, real_wiz); /* use mud-like wizards */
279 uint8 recycle_tmp_maps; /* re-use tmp maps. */
280 uint8 explore_mode; /* explore mode allowed? */ 239 uint8 ACC (RW, explore_mode); /* explore mode allowed? */
281 uint8 spellpoint_level_depend; /* spell costs go up with level */ 240 uint8 ACC (RW, spellpoint_level_depend); /* spell costs go up with level */
282 char who_format[MAX_BUF]; /* The format that the who command should use */
283 char who_wiz_format[MAX_BUF]; /* The format that the who command should use when called by a dm*/
284 char motd[MAX_BUF]; /* name of the motd file */ 241 char ACC (RW, motd)[MAX_BUF]; /* name of the motd file */
285 char *rules; /* name of rules file*/ 242 char *ACC (RO, rules); /* name of rules file*/
286 char *news; /* name of news file*/ 243 char *ACC (RO, news); /* name of news file*/
287 char dm_mail[MAX_BUF]; /* DM's Email address */ 244 char ACC (RW, dm_mail)[MAX_BUF]; /* DM's Email address */
288 245
289 /* The meta_ is information for the metaserver. These are set in
290 * the lib/settings file.
291 */
292 uint8 meta_on:1; /* True if we should send updates */
293 char meta_server[MAX_BUF]; /* Hostname/ip addr of the metaserver */
294 char meta_host[MAX_BUF]; /* Hostname of this host */
295 uint16 meta_port; /* Port number to use for updates */
296 char meta_comment[MAX_BUF]; /* Comment we send to the metaserver */
297
298 uint32 worldmapstartx; /* starting x tile for the worldmap */ 246 uint32 ACC (RW, worldmapstartx); /* starting x tile for the worldmap */
299 uint32 worldmapstarty; /* starting y tile for the worldmap */ 247 uint32 ACC (RW, worldmapstarty); /* starting y tile for the worldmap */
300 uint32 worldmaptilesx; /* number of tiles wide the worldmap is */ 248 uint32 ACC (RW, worldmaptilesx); /* number of tiles wide the worldmap is */
301 uint32 worldmaptilesy; /* number of tiles high the worldmap is */ 249 uint32 ACC (RW, worldmaptilesy); /* number of tiles high the worldmap is */
302 uint32 worldmaptilesizex; /* number of squares wide in a wm tile */ 250 uint32 ACC (RW, worldmaptilesizex); /* number of squares wide in a wm tile */
303 uint32 worldmaptilesizey; /* number of squares high in a wm tile */ 251 uint32 ACC (RW, worldmaptilesizey); /* number of squares high in a wm tile */
304 uint16 dynamiclevel; /* how dynamic is the world? */ 252 uint16 ACC (RW, dynamiclevel); /* how dynamic is the world? */
305 uint8 fastclock; /* if true, clock goes warp 9 */ 253 uint8 ACC (RW, fastclock); /* if true, clock goes warp 9 */
306 254
307 char *emergency_mapname; /* map to return players to in emergency */
308 uint16 emergency_x, emergency_y; /* coordinates to use on that map */
309
310 sint16 max_level; /* This is read out of exp_table */ 255 int ACC (RW, max_level); /* This is read out of exp_table */
311 float item_power_factor; /* See note in setings file */ 256 float ACC (RW, item_power_factor); /* See note in setings file */
312 257
313 int armor_max_enchant; /* Maximum number of times an armor can be enchanted */ 258 int ACC (RW, armor_max_enchant); /* Maximum number of times an armor can be enchanted */
314 int armor_weight_reduction; /* Weight reduction per enchantment */ 259 int ACC (RW, armor_weight_reduction); /* Weight reduction per enchantment */
260 int ACC (RW, armor_speed_improvement); /* Speed improvement */
315 uint8 armor_weight_linear; /* If 1, weight reduction is linear, else exponantiel */ 261 uint8 ACC (RW, armor_weight_linear); /* If 1, weight reduction is linear, else exponantiel */
316 int armor_speed_improvement; /* Speed improvement */
317 uint8 armor_speed_linear; /* If 1, speed improvement is linear, else exponantiel */ 262 uint8 ACC (RW, armor_speed_linear); /* If 1, speed improvement is linear, else exponantiel */
318 uint8 no_player_stealing; /* If 1, can not steal from other players */ 263 uint8 ACC (RW, no_player_stealing); /* If 1, can not steal from other players */
319 uint8 create_home_portals; /* If 1, can create portals in personal maps */ 264 uint8 ACC (RW, create_home_portals); /* If 1, can create portals in personal maps */
320} Settings; 265};
321 266
322extern Settings settings; 267extern Settings settings;
323
324/* 0.94.1 - change to GETTIMEOFDAY macro - SNI systems only one one option.
325 * rather than have complex #ifdefs throughout the file, lets just figure
326 * it out once, here at the top.
327 * Have no idea if that is the right symbol to check on for NetBSD,
328 * but NetBSD does use 2 params.
329 * Move this to global.h from time.c since its also used in arch.c
330 */
331
332#ifdef GETTIMEOFDAY_TWO_ARGS
333#define GETTIMEOFDAY(last_time) gettimeofday(last_time, (struct timezone *) NULL);
334#else
335#define GETTIMEOFDAY(last_time) gettimeofday(last_time);
336#endif
337 268
338#include "plugin.h" 269#include "plugin.h"
339#include "cfperl.h" 270#include "cfperl.h"
340 271
341//TODO: various TEMPORARY link guards to avoid doing the wrong thing
342void free (object *);
343void free (archetype *);
344void free (recipe *);
345void free (linked_char *);
346void free (godlink *);
347void free (objectlink *);
348void free (oblinkpt *);
349void free (maptile *);
350void free (key_value *);
351void free (treasure *);
352void free (materialtype_t *);
353void free (player *);
354void free (New_Face *);
355void free (racelink *);
356
357#endif /* GLOBAL_H */ 272#endif /* GLOBAL_H */
358 273

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines