ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/utils.C
(Generate patch)

Comparing deliantra/server/common/utils.C (file contents):
Revision 1.15 by root, Thu Sep 14 22:34:00 2006 UTC vs.
Revision 1.23 by root, Sat Dec 16 03:08:25 2006 UTC

27 27
28#include <global.h> 28#include <global.h>
29#include <funcpoint.h> 29#include <funcpoint.h>
30#include <material.h> 30#include <material.h>
31 31
32#include <sys/time.h>
33#include <time.h>
32#include <glib.h> 34#include <glib.h>
33 35
34/* 36/*
35 * The random functions here take luck into account when rolling random 37 * The random functions here take luck into account when rolling random
36 * dice or numbers. This function has less of an impact the larger the 38 * dice or numbers. This function has less of an impact the larger the
97 diff = max - min + 1; 99 diff = max - min + 1;
98 ((diff > 2) ? (base = 20) : (base = 50)); /* d2 and d3 are corner cases */ 100 ((diff > 2) ? (base = 20) : (base = 50)); /* d2 and d3 are corner cases */
99 101
100 if (max < 1 || diff < 1) 102 if (max < 1 || diff < 1)
101 { 103 {
102#ifndef WIN32
103 LOG (llevError, "Calling random_roll with min=%lld max=%lld\n", min, max);
104#else
105 LOG (llevError, "Calling random_roll with min=%I64d max=%I64d\n", min, max); 104 LOG (llevError, "Calling random_roll with min=%" PRId64 " max=%" PRId64 "\n", min, max);
106#endif
107 return (min); /* avoids a float exception */ 105 return (min); /* avoids a float exception */
108 } 106 }
109 107
110 /* Don't know of a portable call to get 64 bit random values. 108 /* Don't know of a portable call to get 64 bit random values.
111 * So make a call to get two 32 bit random numbers, and just to 109 * So make a call to get two 32 bit random numbers, and just to
200} 198}
201 199
202/* decay and destroy persihable items in a map */ 200/* decay and destroy persihable items in a map */
203 201
204void 202void
205decay_objects (mapstruct *m) 203decay_objects (maptile *m)
206{ 204{
207 int x, y, destroy; 205 int x, y, destroy;
208 object *op, *otmp; 206 object *op, *otmp;
209 207
210 if (m->unique) 208 if (m->unique)
258 if (op->material & M_ICE && MAP_TEMP (m) > 32) 256 if (op->material & M_ICE && MAP_TEMP (m) > 32)
259 destroy = 1; 257 destroy = 1;
260 } 258 }
261 /* adjust overall chance below */ 259 /* adjust overall chance below */
262 if (destroy && rndm (0, 1)) 260 if (destroy && rndm (0, 1))
263 { 261 op->destroy ();
264 remove_ob (op);
265 free_object (op);
266 }
267 } 262 }
268} 263}
269 264
270/* convert materialname to materialtype_t */ 265/* convert materialname to materialtype_t */
271 266
545 return; 540 return;
546} 541}
547 542
548///////////////////////////////////////////////////////////////////////////// 543/////////////////////////////////////////////////////////////////////////////
549 544
545#if 0
546refcounted *refcounted::rc_first;
547
548refcounted::refcounted ()
549{
550 refcnt = 0;
551 rc_next = rc_first;
552 rc_first = this;
553}
554
555refcounted::~refcounted ()
556{
557 assert (!rc_next);
558 assert (!refcnt);
559}
560#endif
561
550void *alloc (int s) throw (std::bad_alloc) 562void *salloc (int size) throw (std::bad_alloc)
551{ 563{
552 void *p = g_slice_alloc (s); 564 void *ptr = g_slice_alloc (size);
553 565
554 if (!p) 566 if (!ptr)
555 throw std::bad_alloc (); 567 throw std::bad_alloc ();
556 568
557 return p; 569 return ptr;
570}
571
572void *salloc (int size, void *src) throw (std::bad_alloc)
573{
574 void *ptr = salloc (size);
575
576 memcpy (ptr, src, size);
577
578 return ptr;
558} 579}
559 580
560void assign (char *dst, const char *src, int maxlen) 581void assign (char *dst, const char *src, int maxlen)
561{ 582{
562 if (!src) 583 if (!src)
579 } 600 }
580 else 601 else
581 memcpy (dst, src, len + 1); 602 memcpy (dst, src, len + 1);
582} 603}
583 604
605tstamp now ()
606{
607 struct timeval tv;
608
609 gettimeofday (&tv, 0);
610 return tstamp (tv.tv_sec) + tstamp (tv.tv_usec) * tstamp (1e-6);
611}
612

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines