… | |
… | |
501 | } |
501 | } |
502 | |
502 | |
503 | FREETMPS; |
503 | FREETMPS; |
504 | LEAVE; |
504 | LEAVE; |
505 | } |
505 | } |
|
|
506 | } |
|
|
507 | |
|
|
508 | // compatibility support, should be removed when no longer needed |
|
|
509 | int fprintf (object_freezer &freezer, const char *format, ...) |
|
|
510 | { |
|
|
511 | va_list ap; |
|
|
512 | |
|
|
513 | va_start (ap, format); |
|
|
514 | vfprintf (freezer.fp, format, ap); |
|
|
515 | va_end (ap); |
|
|
516 | } |
|
|
517 | |
|
|
518 | int fputs (const char *s, object_freezer &freezer) |
|
|
519 | { |
|
|
520 | fputs (s, freezer.fp); |
506 | } |
521 | } |
507 | |
522 | |
508 | void object_thawer::get (data_type type, void *obj, attachable_base *ext, int oid) |
523 | void object_thawer::get (data_type type, void *obj, attachable_base *ext, int oid) |
509 | { |
524 | { |
510 | if (!av || oid < 0) // this is actually an error of sorts |
525 | if (!av || oid < 0) // this is actually an error of sorts |
… | |
… | |
2316 | case 7: RETVAL = newSVuv ( GET_MAP_MOVE_OFF (obj, x, y)); break; |
2331 | case 7: RETVAL = newSVuv ( GET_MAP_MOVE_OFF (obj, x, y)); break; |
2317 | } |
2332 | } |
2318 | OUTPUT: |
2333 | OUTPUT: |
2319 | RETVAL |
2334 | RETVAL |
2320 | |
2335 | |
2321 | # "deserialise" perl map data into the map # TODO# compatibility cruft, remove |
|
|
2322 | void |
|
|
2323 | _set_obs (mapstruct *map, SV *sv) |
|
|
2324 | CODE: |
|
|
2325 | { |
|
|
2326 | object *o; |
|
|
2327 | AV *av; |
|
|
2328 | int x, y; |
|
|
2329 | AV *obs = (AV *)SvRV (sv); |
|
|
2330 | |
|
|
2331 | for (y = 0; y < MAP_HEIGHT (map); y++) |
|
|
2332 | for (x = 0; x < MAP_WIDTH (map); x++) |
|
|
2333 | { |
|
|
2334 | sv = *av_fetch (obs, x + y * MAP_HEIGHT (map), 1); |
|
|
2335 | |
|
|
2336 | if (!SvROK (sv)) |
|
|
2337 | continue; |
|
|
2338 | |
|
|
2339 | av = (AV *)SvRV (sv); |
|
|
2340 | |
|
|
2341 | for (o = GET_MAP_OB (map, x, y); o; o = o->above) |
|
|
2342 | { |
|
|
2343 | sv = av_shift (av); |
|
|
2344 | |
|
|
2345 | if (SvROK (sv)) |
|
|
2346 | { |
|
|
2347 | sv_magic ((SV *)SvRV (sv), 0, PERL_MAGIC_ext, (char *)o, 0); |
|
|
2348 | SVptr_cache_set (o, sv); |
|
|
2349 | } |
|
|
2350 | } |
|
|
2351 | } |
|
|
2352 | } |
|
|
2353 | |
|
|
2354 | |
2336 | |
2355 | MODULE = cf PACKAGE = cf::arch |
2337 | MODULE = cf PACKAGE = cf::arch |
2356 | |
2338 | |
2357 | archetype *first() |
2339 | archetype *first() |
2358 | PROTOTYPE: |
2340 | PROTOTYPE: |