… | |
… | |
2331 | 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; |
2332 | } |
2332 | } |
2333 | OUTPUT: |
2333 | OUTPUT: |
2334 | RETVAL |
2334 | RETVAL |
2335 | |
2335 | |
2336 | # "deserialise" perl map data into the map # TODO# compatibility cruft, remove |
|
|
2337 | void |
|
|
2338 | _set_obs (mapstruct *map, SV *sv) |
|
|
2339 | CODE: |
|
|
2340 | { |
|
|
2341 | object *o; |
|
|
2342 | AV *av; |
|
|
2343 | int x, y; |
|
|
2344 | AV *obs = (AV *)SvRV (sv); |
|
|
2345 | |
|
|
2346 | for (y = 0; y < MAP_HEIGHT (map); y++) |
|
|
2347 | for (x = 0; x < MAP_WIDTH (map); x++) |
|
|
2348 | { |
|
|
2349 | sv = *av_fetch (obs, x + y * MAP_HEIGHT (map), 1); |
|
|
2350 | |
|
|
2351 | if (!SvROK (sv)) |
|
|
2352 | continue; |
|
|
2353 | |
|
|
2354 | av = (AV *)SvRV (sv); |
|
|
2355 | |
|
|
2356 | for (o = GET_MAP_OB (map, x, y); o; o = o->above) |
|
|
2357 | { |
|
|
2358 | sv = av_shift (av); |
|
|
2359 | |
|
|
2360 | if (SvROK (sv)) |
|
|
2361 | { |
|
|
2362 | sv_magic ((SV *)SvRV (sv), 0, PERL_MAGIC_ext, (char *)o, 0); |
|
|
2363 | SVptr_cache_set (o, sv); |
|
|
2364 | } |
|
|
2365 | } |
|
|
2366 | } |
|
|
2367 | } |
|
|
2368 | |
|
|
2369 | |
2336 | |
2370 | MODULE = cf PACKAGE = cf::arch |
2337 | MODULE = cf PACKAGE = cf::arch |
2371 | |
2338 | |
2372 | archetype *first() |
2339 | archetype *first() |
2373 | PROTOTYPE: |
2340 | PROTOTYPE: |