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.1.1.2 by elmex, Wed Mar 15 14:04:54 2006 UTC vs.
Revision 1.28 by root, Fri Dec 15 20:08:45 2006 UTC

1/*
2 * static char *rcsid_global_h =
3 * "$Id: global.h,v 1.1.1.2 2006/03/15 14:04:54 elmex Exp $";
4 */
5
6/* 1/*
7 CrossFire, A Multiplayer game for X-windows 2 CrossFire, A Multiplayer game for X-windows
8 3
9 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 4 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
10 Copyright (C) 1992 Frank Tore Johansen 5 Copyright (C) 1992 Frank Tore Johansen
21 16
22 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
23 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
24 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 20
26 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
27*/ 22*/
28 23
29#ifndef GLOBAL_H 24#ifndef GLOBAL_H
30#define GLOBAL_H 25#define GLOBAL_H
31 26
33#define EXTERN extern 28#define EXTERN extern
34#endif 29#endif
35 30
36#include "includes.h" 31#include "includes.h"
37 32
38 33typedef int8_t sint8;
39/* Type defines for specific signed/unsigned variables of a certain number 34typedef uint8_t uint8;
40 * of bits. Not really used anyplace, but if a certain number of bits 35typedef int16_t sint16;
41 * is required, these type defines should then be used. This will make 36typedef uint16_t uint16;
42 * porting to systems that have different sized data types easier. 37typedef int32_t sint32;
43 *
44 * Note: The type defines should just mean that the data type has at
45 * least that many bits. if a uint16 is actually 32 bits, no big deal,
46 * it is just a waste of space.
47 *
48 * Note2: When using something that is normally stored in a character
49 * (ie strings), don't use the uint8/sint8 typdefs, use 'char' instead.
50 * The signedness for char is probably not universal, and using char
51 * will probably be more portable than sint8/unit8
52 */
53
54
55typedef unsigned int uint32; 38typedef uint32_t uint32;
39typedef int64_t sint64;
40typedef uint64_t uint64;
56 41
57#ifndef UINT32_MAX 42#include "config.h"
58#define UINT32_MAX 4294967295U 43#include "define.h"
44#include "logger.h"
45
46#ifndef TRUE
47#define TRUE 1
59#endif 48#endif
60 49
61typedef signed int sint32; 50#ifndef FALSE
62#define SINT32_MAX 2147483647 51#define FALSE 0
63
64typedef unsigned short uint16;
65#ifndef UINT16_MAX
66#define UINT16_MAX 65535
67#endif 52#endif
68 53
69typedef signed short sint16; 54// used only for tagging structure members so scripting languages
70#define SINT16_MAX 32767 55// can easily parse the include files.
56#define ACC_CLASS(name)
57#define ACC(meta,member) member
71 58
72typedef unsigned char uint8; 59#include "keyword.h"
73#ifndef UINT8_MAX 60#include "traits.h"
74#define UINT8_MAX 255 61#include "dynbuf.h"
75#endif 62#include "util.h"
76 63#include "shstr.h"
77typedef signed char sint8;
78#define SINT8_MAX 127
79
80
81typedef unsigned short Fontindex;
82
83#ifdef WIN32
84/* Python plugin stuff defines SIZEOF_LONG_LONG as 8, and besides __int64 is a 64b type on MSVC...
85 * So let's force the typedef */
86typedef unsigned __int64 uint64;
87typedef signed __int64 sint64;
88/* Needed for experience */
89#define atoll _atoi64
90
91/* To reduce number of warnings */
92#pragma warning( disable: 4244 ) /* conversion from 'xxx' to 'yyy', possible loss of data */
93#pragma warning( disable: 4305 ) /* initializing float f = 0.05; instead of f = 0.05f; */
94
95#else /* WIN32 */
96
97#if SIZEOF_LONG == 8
98typedef unsigned long uint64;
99typedef signed long sint64;
100#elif SIZEOF_LONG_LONG == 8
101typedef unsigned long long uint64;
102typedef signed long long sint64;
103#else
104#error do not know how to get a 64 bit value on this system.
105#error correct and send mail to crossfire-devel on how to do this
106#endif
107
108#endif
109 64
110/* This blob, in this order, is needed to actually define maps */ 65/* This blob, in this order, is needed to actually define maps */
111#include "face.h" 66#include "face.h"
112/* Include the basic defines from spells.h */ 67/* Include the basic defines from spells.h */
113#include "attack.h" /* needs to be before material.h */ 68#include "attack.h" /* needs to be before material.h */
118#include "tod.h" 73#include "tod.h"
119 74
120#include "skills.h" 75#include "skills.h"
121 76
122/* Pull in the socket structure - used in the player structure */ 77/* Pull in the socket structure - used in the player structure */
123#include "newserver.h" 78#include "network.h"
79#include "client.h"
124 80
125/* Pull in the player structure */ 81/* Pull in the player structure */
126#include "player.h" 82#include "player.h"
127 83
128/* pull in treasure structure */ 84/* pull in treasure structure */
134#include "book.h" 90#include "book.h"
135/* 91/*
136 * So far only used when dealing with artifacts. 92 * So far only used when dealing with artifacts.
137 * (now used by alchemy and other code too. Nov 95 b.t). 93 * (now used by alchemy and other code too. Nov 95 b.t).
138 */ 94 */
139typedef struct linked_char { 95struct linked_char
140 const char *name; 96{
97 shstr name;
141 struct linked_char *next; 98 struct linked_char *next;
142} linked_char; 99};
143
144 100
145/* Pull in artifacts */ 101/* Pull in artifacts */
146#include "artifact.h" 102#include "artifact.h"
147 103
148/* Now for gods */ 104/* Now for gods */
167 123
168/* 124/*
169 * These are the beginnings of linked lists: 125 * These are the beginnings of linked lists:
170 */ 126 */
171EXTERN player *first_player; 127EXTERN player *first_player;
172EXTERN mapstruct *first_map; 128EXTERN maptile *first_map;
173EXTERN region *first_region; 129EXTERN region *first_region;
174EXTERN treasurelist *first_treasurelist; 130EXTERN treasurelist *first_treasurelist;
175EXTERN artifactlist *first_artifactlist; 131EXTERN artifactlist *first_artifactlist;
176EXTERN archetype *first_archetype; 132EXTERN archetype *first_archetype;
177EXTERN objectlink *first_friendly_object; /* Objects monsters will go after */ 133EXTERN objectlink *first_friendly_object; /* Objects monsters will go after */
178EXTERN godlink *first_god; 134EXTERN godlink *first_god;
179EXTERN racelink *first_race; 135EXTERN racelink *first_race;
180 136
181#define NROF_COMPRESS_METHODS 4
182EXTERN char *uncomp[NROF_COMPRESS_METHODS][3];
183/* 137/*
184 * The editor uses these (will get them out of here later): 138 * The editor uses these (will get them out of here later):
185 */ 139 */
186 140
187EXTERN long editor; /* if true, edit maps instead of playing (almost obsolete) */ 141EXTERN long editor; /* if true, edit maps instead of playing (almost obsolete) */
189/* 143/*
190 * Variables set by different flags (see init.c): 144 * Variables set by different flags (see init.c):
191 */ 145 */
192 146
193EXTERN long warn_archetypes; /* If true, write warnings when failing */ 147EXTERN long warn_archetypes; /* If true, write warnings when failing */
194 /* to find archetypes when loading from file */ 148 /* to find archetypes when loading from file */
195EXTERN long init_done; /* Ignores signals until init_done is true */ 149EXTERN long init_done; /* Ignores signals until init_done is true */
196EXTERN long trying_emergency_save; /* True when emergency_save() is reached */ 150EXTERN long trying_emergency_save; /* True when emergency_save() is reached */
197EXTERN long nroferrors; /* If it exceeds MAX_ERRORS, call fatal() */ 151EXTERN long nroferrors; /* If it exceeds MAX_ERRORS, call fatal() */
198 152
199extern long pticks; /* used by various function to determine */ 153extern long pticks; /* used by various function to determine */
200 /* how often to save the character */ 154 /* how often to save the character */
201/* 155/*
202 * Misc global variables: 156 * Misc global variables:
203 */ 157 */
204EXTERN FILE *logfile; /* Used by server/daemon.c */ 158EXTERN FILE *logfile; /* Used by server/daemon.c */
205EXTERN int exiting; /* True if the game is about to exit */ 159EXTERN int exiting; /* True if the game is about to exit */
208EXTERN long nrofallowedstr; /* Only used in malloc_info() */ 162EXTERN long nrofallowedstr; /* Only used in malloc_info() */
209 163
210EXTERN archetype *empty_archetype; /* Nice to have fast access to it */ 164EXTERN archetype *empty_archetype; /* Nice to have fast access to it */
211EXTERN archetype *map_archeytpe; 165EXTERN archetype *map_archeytpe;
212EXTERN char first_map_path[MAX_BUF]; /* The start-level */ 166EXTERN char first_map_path[MAX_BUF]; /* The start-level */
167EXTERN char first_map_ext_path[MAX_BUF]; /* Path used for per-race start maps */
213 168
214EXTERN char errmsg[HUGE_BUF]; 169EXTERN char errmsg[HUGE_BUF];
215EXTERN long ob_count; 170EXTERN long ob_count;
216/* 171/*
217 * Used in treasure.c 172 * Used in treasure.c
218 */ 173 */
219EXTERN archetype *ring_arch,*amulet_arch,*staff_arch,*crown_arch; 174EXTERN archetype *ring_arch,*amulet_arch,*staff_arch,*crown_arch;
220EXTERN const char *undead_name; /* Used in hit_player() in main.c */
221 175
222EXTERN Animations *animations; 176EXTERN std::vector<Animations> animations;
223EXTERN int num_animations,animations_allocated, bmaps_checksum; 177EXTERN int num_animations,animations_allocated, bmaps_checksum;
224 178
225/* Rotate right from bsd sum. This is used in various places for checksumming */ 179/* Rotate right from bsd sum. This is used in various places for checksumming */
226#define ROTATE_RIGHT(c) if ((c) & 01) (c) = ((c) >>1) + 0x80000000; else (c) >>= 1; 180#define ROTATE_RIGHT(c) if ((c) & 01) (c) = ((c) >>1) + 0x80000000; else (c) >>= 1;
227 181
244 198
245extern New_Face *blank_face, *empty_face; 199extern New_Face *blank_face, *empty_face;
246extern New_Face *dark_faces[]; 200extern New_Face *dark_faces[];
247extern New_Face *smooth_face; 201extern New_Face *smooth_face;
248 202
249
250extern long max_time; /* loop time */
251extern NewSocket *init_sockets; 203extern client *init_sockets;
252 204
253
254EXTERN char *font_graphic;
255
256#ifndef __CEXTRACT__
257#include "libproto.h" 205#include "libproto.h"
258#include "sockproto.h" 206#include "sockproto.h"
259#endif
260
261 207
262#define decrease_ob(xyz) decrease_ob_nr(xyz,1) 208#define decrease_ob(xyz) decrease_ob_nr(xyz,1)
263 209
264/* FREE_AND_CLEAR frees the pointer and then sets it to NULL. 210ACC_CLASS (Settings)
265 * This is generally done as a safety, and having this macro
266 * makes the code a bit cleaner when doing so.
267 */
268#define FREE_AND_CLEAR(xyz) {free(xyz); xyz=NULL; }
269#define FREE_AND_CLEAR_STR(xyz) {free_string(xyz); xyz=NULL; }
270
271/* FREE_AND_COPY is for the shared string - it is handy enough
272 * to use all over the place.
273 */
274#define FREE_AND_COPY(sv,nv) { if (sv) free_string(sv); sv=add_string(nv); }
275
276#define DELETE_STRING(__str_) free_string(__str_);__str_=NULL;
277
278#ifdef CALLOC
279#undef CALLOC
280#endif
281
282#ifdef USE_CALLOC
283# define CALLOC(x,y) calloc(x,y)
284# define CFREE(x) free(x)
285#else
286# define CALLOC(x,y) malloc(x*y)
287# define CFREE(x) free(x)
288#endif
289
290#ifndef WIN32 /* ---win32 we define this stuff in win32.h */
291#if HAVE_DIRENT_H
292# include <dirent.h>
293# define NAMLEN(dirent) strlen((dirent)->d_name)
294#else
295# define dirent direct
296# define NAMLEN(dirent) (dirnet)->d_namlen
297# if HAVE_SYS_NDIR_H
298# include <sys/ndir.h>
299# endif
300# if HAVE_SYS_DIR_H
301# include <sys/dir.h>
302# endif
303# if HAVE_NDIR_H
304# include <ndir.h>
305# endif
306#endif
307#endif
308
309typedef struct Settings { 211struct Settings {
310 char *logfilename; /* logfile to use */ 212 char *ACC (RO, logfilename); /* logfile to use */
311 uint16 csport; /* port for new client/server */ 213 int ACC (RW, csport); /* port for new client/server */
312 LogLevel debug; /* Default debugging level */ 214 int ACC (RW, debug); /* Default debugging level */
313 uint8 dumpvalues; /* Set to dump various values/tables */ 215 uint8 dumpvalues; /* Set to dump various values/tables */
314 char *dumparg; /* additional argument for some dump functions */ 216 char *dumparg; /* additional argument for some dump functions */
315 uint8 daemonmode; /* If true, detach and become daemon */ 217 uint8 daemonmode; /* If true, detach and become daemon */
316 int argc; /* parameters that were passed to the program */ 218 int argc; /* parameters that were passed to the program */
317 char **argv; /* Only used by xio.c, so will go away at some time */ 219 char **argv; /* Only used by xio.c, so will go away at some time */
318 char *confdir; /* configuration files */ 220 char *ACC (RO, confdir); /* configuration files */
319 char *datadir; /* read only data files */ 221 char *ACC (RO, datadir); /* read only data files */
320 char *localdir; /* read/write data files */ 222 char *ACC (RO, localdir); /* read/write data files */
321 char *playerdir; /* Where the player files are */ 223 char *ACC (RO, playerdir); /* Where the player files are */
322 char *mapdir; /* Where the map files are */ 224 char *ACC (RO, mapdir); /* Where the map files are */
323 char *archetypes; /* name of the archetypes file - libdir is prepended */ 225 char *ACC (RO, archetypes); /* name of the archetypes file - libdir is prepended */
324 char *regions; /* name of the regions file - libdir is prepended */ 226 char *ACC (RO, regions); /* name of the regions file - libdir is prepended */
325 char *treasures; /* location of the treasures file. */ 227 char *ACC (RO, treasures); /* location of the treasures file. */
326 char *uniquedir; /* directory for the unique items */ 228 char *ACC (RO, uniquedir); /* directory for the unique items */
327 char *templatedir; /* directory for the template map */ 229 char *ACC (RO, templatedir); /* directory for the template map */
328 char *tmpdir; /* Directory to use for temporary files */ 230 char *ACC (RO, tmpdir); /* Directory to use for temporary files */
329 uint8 stat_loss_on_death; /* If true, chars lose a random stat when they die */
330 sint16 pk_luck_penalty; /* Amount by which player luck is reduced if they PK */ 231 sint16 ACC (RW, pk_luck_penalty); /* Amount by which player luck is reduced if they PK */
232 uint8 ACC (RW, stat_loss_on_death); /* If true, chars lose a random stat when they die */
331 uint8 permanent_exp_ratio; /* how much exp should be 'permenant' and unable to be lost*/ 233 uint8 ACC (RW, permanent_exp_ratio); /* how much exp should be 'permenant' and unable to be lost*/
332 uint8 death_penalty_ratio; /* how much exp should be lost at death */ 234 uint8 ACC (RW, death_penalty_ratio); /* how much exp should be lost at death */
333 uint8 death_penalty_level; /* how many levels worth of exp may be lost on one death */ 235 uint8 ACC (RW, death_penalty_level); /* how many levels worth of exp may be lost on one death */
334 uint8 balanced_stat_loss; /* If true, Death stat depletion based on level etc */ 236 uint8 ACC (RW, balanced_stat_loss); /* If true, Death stat depletion based on level etc */
335 uint8 not_permadeth; /* if true, death is non-permament */ 237 uint8 ACC (RW, not_permadeth); /* if true, death is non-permament */
336 uint8 simple_exp; /* If true, use the simple experience system */ 238 uint8 ACC (RW, simple_exp); /* If true, use the simple experience system */
337 int reset_loc_time; /* Number of seconds to put player back at home */ 239 int ACC (RW, reset_loc_time); /* Number of seconds to put player back at home */
338 uint8 set_title; /* players can set thier title */ 240 uint8 ACC (RW, set_title); /* players can set thier title */
339 uint8 resurrection; /* ressurection possible w/ permadeth on */ 241 uint8 ACC (RW, resurrection); /* ressurection possible w/ permadeth on */
340 uint8 search_items; /* search_items command */ 242 uint8 ACC (RW, search_items); /* search_items command */
341 uint8 spell_encumbrance; /* encumbrance effects spells */ 243 uint8 ACC (RW, spell_encumbrance); /* encumbrance effects spells */
342 uint8 spell_failure_effects; /* nasty backlash to spell failures */ 244 uint8 ACC (RW, spell_failure_effects); /* nasty backlash to spell failures */
343 uint16 set_friendly_fire; /* Percent of damage done by peaceful player vs player damage */ 245 uint16 ACC (RW, set_friendly_fire); /* Percent of damage done by peaceful player vs player damage */
344 uint8 casting_time; /* it takes awhile to cast a spell */ 246 uint8 ACC (RW, casting_time); /* it takes awhile to cast a spell */
345 uint8 real_wiz; /* use mud-like wizards */ 247 uint8 ACC (RW, real_wiz); /* use mud-like wizards */
346 uint8 recycle_tmp_maps; /* re-use tmp maps. */ 248 uint8 ACC (RW, recycle_tmp_maps); /* re-use tmp maps. */
347 uint8 explore_mode; /* explore mode allowed? */ 249 uint8 ACC (RW, explore_mode); /* explore mode allowed? */
348 uint8 spellpoint_level_depend; /* spell costs go up with level */ 250 uint8 ACC (RW, spellpoint_level_depend); /* spell costs go up with level */
349 char who_format[MAX_BUF]; /* The format that the who command should use */
350 char who_wiz_format[MAX_BUF]; /* The format that the who command should use when called by a dm*/
351 char motd[MAX_BUF]; /* name of the motd file */ 251 char ACC (RW, motd)[MAX_BUF]; /* name of the motd file */
352 char *rules; /* name of rules file*/ 252 char *ACC (RO, rules); /* name of rules file*/
353 char *news; /* name of news file*/ 253 char *ACC (RO, news); /* name of news file*/
354 char dm_mail[MAX_BUF]; /* DM's Email address */ 254 char ACC (RW, dm_mail)[MAX_BUF]; /* DM's Email address */
355 255
356 /* The meta_ is information for the metaserver. These are set in
357 * the lib/settings file.
358 */
359 uint8 meta_on:1; /* True if we should send updates */
360 char meta_server[MAX_BUF]; /* Hostname/ip addr of the metaserver */
361 char meta_host[MAX_BUF]; /* Hostname of this host */
362 uint16 meta_port; /* Port number to use for updates */
363 char meta_comment[MAX_BUF]; /* Comment we send to the metaserver */
364
365 uint32 worldmapstartx; /* starting x tile for the worldmap */ 256 uint32 ACC (RW, worldmapstartx); /* starting x tile for the worldmap */
366 uint32 worldmapstarty; /* starting y tile for the worldmap */ 257 uint32 ACC (RW, worldmapstarty); /* starting y tile for the worldmap */
367 uint32 worldmaptilesx; /* number of tiles wide the worldmap is */ 258 uint32 ACC (RW, worldmaptilesx); /* number of tiles wide the worldmap is */
368 uint32 worldmaptilesy; /* number of tiles high the worldmap is */ 259 uint32 ACC (RW, worldmaptilesy); /* number of tiles high the worldmap is */
369 uint32 worldmaptilesizex; /* number of squares wide in a wm tile */ 260 uint32 ACC (RW, worldmaptilesizex); /* number of squares wide in a wm tile */
370 uint32 worldmaptilesizey; /* number of squares high in a wm tile */ 261 uint32 ACC (RW, worldmaptilesizey); /* number of squares high in a wm tile */
371 uint16 dynamiclevel; /* how dynamic is the world? */ 262 uint16 ACC (RW, dynamiclevel); /* how dynamic is the world? */
372 uint8 fastclock; /* if true, clock goes warp 9 */ 263 uint8 ACC (RW, fastclock); /* if true, clock goes warp 9 */
373 264
374 char *emergency_mapname; /* map to return players to in emergency */ 265 char *ACC (RW, emergency_mapname); /* map to return players to in emergency */
375 uint16 emergency_x, emergency_y; /* coordinates to use on that map */ 266 uint16 ACC (RW, emergency_x), ACC (RW, emergency_y); /* coordinates to use on that map */
376 267
377 sint16 max_level; /* This is read out of exp_table */ 268 int ACC (RW, max_level); /* This is read out of exp_table */
378 float item_power_factor; /* See note in setings file */ 269 float ACC (RW, item_power_factor); /* See note in setings file */
379 270
380 int armor_max_enchant; /* Maximum number of times an armor can be enchanted */ 271 int ACC (RW, armor_max_enchant); /* Maximum number of times an armor can be enchanted */
381 int armor_weight_reduction; /* Weight reduction per enchantment */ 272 int ACC (RW, armor_weight_reduction); /* Weight reduction per enchantment */
273 int ACC (RW, armor_speed_improvement); /* Speed improvement */
382 uint8 armor_weight_linear; /* If 1, weight reduction is linear, else exponantiel */ 274 uint8 ACC (RW, armor_weight_linear); /* If 1, weight reduction is linear, else exponantiel */
383 int armor_speed_improvement; /* Speed improvement */
384 uint8 armor_speed_linear; /* If 1, speed improvement is linear, else exponantiel */ 275 uint8 ACC (RW, armor_speed_linear); /* If 1, speed improvement is linear, else exponantiel */
385 uint8 no_player_stealing; /* If 1, can not steal from other players */ 276 uint8 ACC (RW, no_player_stealing); /* If 1, can not steal from other players */
386} Settings; 277 uint8 ACC (RW, create_home_portals); /* If 1, can create portals in personal maps */
278};
387 279
388extern Settings settings; 280extern Settings settings;
389 281
390/* 0.94.1 - change to GETTIMEOFDAY macro - SNI systems only one one option.
391 * rather than have complex #ifdefs throughout the file, lets just figure
392 * it out once, here at the top.
393 * Have no idea if that is the right symbol to check on for NetBSD,
394 * but NetBSD does use 2 params.
395 * Move this to global.h from time.c since its also used in arch.c
396 */
397
398#ifdef GETTIMEOFDAY_TWO_ARGS
399#define GETTIMEOFDAY(last_time) gettimeofday(last_time, (struct timezone *) NULL);
400#else
401#define GETTIMEOFDAY(last_time) gettimeofday(last_time);
402#endif
403
404/* GROS: Those are used by plugin events (argument fixthem) */
405#define SCRIPT_FIX_ACTIVATOR 2
406#define SCRIPT_FIX_ALL 1
407#define SCRIPT_FIX_NOTHING 0
408
409#include "plugin.h" 282#include "plugin.h"
283#include "cfperl.h"
410 284
411#endif /* GLOBAL_H */ 285#endif /* GLOBAL_H */
286

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines