ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/cfperl.xs
(Generate patch)

Comparing deliantra/server/server/cfperl.xs (file contents):
Revision 1.191 by root, Tue Apr 17 18:40:32 2007 UTC vs.
Revision 1.194 by root, Mon Apr 23 18:09:57 2007 UTC

56 56
57typedef char *octet_string; 57typedef char *octet_string;
58typedef char *utf8_string; 58typedef char *utf8_string;
59typedef const char *const_octet_string; 59typedef const char *const_octet_string;
60typedef const char *const_utf8_string; 60typedef const char *const_utf8_string;
61
62typedef std::string std__string;
61 63
62#if IVSIZE >= 8 64#if IVSIZE >= 8
63 typedef IV val64; 65 typedef IV val64;
64# define newSVval64 newSViv 66# define newSVval64 newSViv
65# define SvVAL64 SvIV 67# define SvVAL64 SvIV
356inline SV *to_sv (living * v) { return newSVptr (v, stash_cf_living_wrap); } 358inline SV *to_sv (living * v) { return newSVptr (v, stash_cf_living_wrap); }
357 359
358inline SV *to_sv (object & v) { return to_sv (&v); } 360inline SV *to_sv (object & v) { return to_sv (&v); }
359inline SV *to_sv (living & v) { return to_sv (&v); } 361inline SV *to_sv (living & v) { return to_sv (&v); }
360 362
361//inline SV *to_sv (faceinfo * v) { return to_sv (v->name); }
362inline SV *to_sv (treasurelist * v) { return to_sv (v->name); }
363inline SV *to_sv (std::string & v) { return newSVpvn (v.data (), v.size ()); } 363inline SV *to_sv (const std::string & v) { return newSVpvn (v.data (), v.size ()); }
364inline SV *to_sv (const treasurelist *v) { return to_sv (v->name); }
364 365
365inline SV *to_sv (UUID v) 366inline SV *to_sv (UUID v)
366{ 367{
367 char buf[128]; 368 char buf[128];
368 snprintf (buf, 128, "<1.%" PRIx64 ">", v.seq); 369 snprintf (buf, 128, "<1.%" PRIx64 ">", v.seq);
1324 1325
1325void _post_tick () 1326void _post_tick ()
1326 CODE: 1327 CODE:
1327 coroapi::next_cede = SvNV (sv_next_tick) - TICK * (1. - 1. / CEDES_PER_TICK); 1328 coroapi::next_cede = SvNV (sv_next_tick) - TICK * (1. - 1. / CEDES_PER_TICK);
1328 1329
1330# support function for map-world.ext
1331void _quantise (SV *data_sv, SV *plt_sv)
1332 CODE:
1333{
1334 if (!SvROK (plt_sv) || SvTYPE (SvRV (plt_sv)) != SVt_PVAV)
1335 croak ("_quantise called with invalid agruments");
1336
1337 plt_sv = SvRV (plt_sv);
1338 SV **plt = AvARRAY (plt_sv);
1339 int plt_count = AvFILL (plt_sv) + 1;
1340
1341 STRLEN len;
1342 char *data = SvPVbyte (data_sv, len);
1343 char *dst = data;
1344
1345 while (len >= 3)
1346 {
1347 for (SV **val_sv = plt + plt_count; val_sv-- > plt; )
1348 {
1349 char *val = SvPVX (*val_sv);
1350
1351 if (val [0] == data [0]
1352 && val [1] == data [1]
1353 && val [2] == data [2])
1354 {
1355 *dst++ = val [3];
1356 goto next;
1357 }
1358 }
1359
1360 croak ("_quantise: color not found in palette: #%02x%02x%02x, at offset %d %d",
1361 (uint8_t)data [0], (uint8_t)data [1], (uint8_t)data [2],
1362 dst - SvPVX (data_sv), len);
1363
1364 next:
1365 data += 3;
1366 len -= 3;
1367 }
1368
1369 SvCUR_set (data_sv, dst - SvPVX (data_sv));
1370}
1371
1329NV floor (NV x) 1372NV floor (NV x)
1330 1373
1331NV ceil (NV x) 1374NV ceil (NV x)
1332 1375
1333NV rndm (...) 1376NV rndm (...)
1966 sfree (THIS->regions, THIS->size ()); 2009 sfree (THIS->regions, THIS->size ());
1967 free (THIS->regionmap); 2010 free (THIS->regionmap);
1968 2011
1969 THIS->regions = regions; 2012 THIS->regions = regions;
1970 THIS->regionmap = regionmap; 2013 THIS->regionmap = regionmap;
2014}
2015
2016void
2017maptile::create_region_treasure ()
2018 CODE:
2019{
2020 object *op = object::create ();
2021 op->type = FLOOR;
2022 op->map = THIS;
2023
2024 for (int x = 0; x < THIS->width; ++x)
2025 for (int y = 0; y < THIS->height; ++y)
2026 {
2027 region *rgn = THIS->region (x, y);
2028
2029 //fprintf (stderr, "%d,%d %f %p\n", x, y, rgn->treasure_density,rgn->treasure);//D
2030 if (rgn->treasure && rndm () < rgn->treasure_density)
2031 {
2032 op->x = x;
2033 op->y = y;
2034 create_treasure (rgn->treasure, op, GT_ENVIRONMENT, THIS->difficulty);
2035 }
2036 }
2037
2038 op->destroy ();
1971} 2039}
1972 2040
1973void play_sound_map (maptile *map, int x, int y, int sound_num) 2041void play_sound_map (maptile *map, int x, int y, int sound_num)
1974 2042
1975int out_of_map (maptile *map, int x, int y) 2043int out_of_map (maptile *map, int x, int y)
2199 RETVAL = 0; 2267 RETVAL = 0;
2200 while (rgn = rgn->parent) 2268 while (rgn = rgn->parent)
2201 RETVAL++; 2269 RETVAL++;
2202 OUTPUT: RETVAL 2270 OUTPUT: RETVAL
2203 2271
2204INCLUDE: $PERL $srcdir/genacc region ../include/map.h | 2272INCLUDE: $PERL $srcdir/genacc region ../include/region.h |
2205 2273
2206MODULE = cf PACKAGE = cf::living 2274MODULE = cf PACKAGE = cf::living
2207 2275
2208INCLUDE: $PERL $srcdir/genacc living ../include/living.h | 2276INCLUDE: $PERL $srcdir/genacc living ../include/living.h |
2209 2277

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines