… | |
… | |
2525 | for (object *o = nmap->at (nx, ny).bot; o; o = o->above) |
2525 | for (object *o = nmap->at (nx, ny).bot; o; o = o->above) |
2526 | XPUSHs (sv_2mortal (to_sv (o))); |
2526 | XPUSHs (sv_2mortal (to_sv (o))); |
2527 | } |
2527 | } |
2528 | |
2528 | |
2529 | SV * |
2529 | SV * |
2530 | bot_at (maptile *obj, unsigned int x, unsigned int y) |
2530 | bot_at (maptile *map, unsigned int x, unsigned int y) |
2531 | PROTOTYPE: $$$ |
2531 | PROTOTYPE: $$$ |
2532 | ALIAS: |
2532 | ALIAS: |
2533 | top_at = 1 |
2533 | top_at = 1 |
2534 | flags_at = 2 |
2534 | flags_at = 2 |
2535 | light_at = 3 |
2535 | light_at = 3 |
2536 | move_block_at = 4 |
2536 | move_block_at = 4 |
2537 | move_slow_at = 5 |
2537 | move_slow_at = 5 |
2538 | move_on_at = 6 |
2538 | move_on_at = 6 |
2539 | move_off_at = 7 |
2539 | move_off_at = 7 |
2540 | INIT: |
|
|
2541 | if (x >= obj->width || y >= obj->height) XSRETURN_UNDEF; |
|
|
2542 | CODE: |
2540 | CODE: |
|
|
2541 | { |
|
|
2542 | sint16 nx = x; |
|
|
2543 | sint16 ny = y; |
|
|
2544 | |
|
|
2545 | if (!xy_normalise (map, nx, ny)) |
|
|
2546 | XSRETURN_UNDEF; |
|
|
2547 | |
|
|
2548 | mapspace &ms = map->at (nx, ny); |
|
|
2549 | |
|
|
2550 | ms.update (); |
|
|
2551 | |
2543 | switch (ix) |
2552 | switch (ix) |
2544 | { |
2553 | { |
2545 | case 0: RETVAL = to_sv (GET_MAP_OB (obj, x, y)); break; |
2554 | case 0: RETVAL = to_sv (ms.bot ); break; |
2546 | case 1: RETVAL = to_sv (GET_MAP_TOP (obj, x, y)); break; |
2555 | case 1: RETVAL = to_sv (ms.top ); break; |
2547 | case 2: RETVAL = newSVuv (GET_MAP_FLAGS (obj, x, y)); break; |
2556 | case 2: RETVAL = newSVuv (ms.flags_ ); break; |
2548 | case 3: RETVAL = newSViv (GET_MAP_LIGHT (obj, x, y)); break; |
2557 | case 3: RETVAL = newSViv (ms.light ); break; |
2549 | case 4: RETVAL = newSVuv (GET_MAP_MOVE_BLOCK (obj, x, y)); break; |
2558 | case 4: RETVAL = newSVuv (ms.move_block); break; |
2550 | case 5: RETVAL = newSVuv (GET_MAP_MOVE_SLOW (obj, x, y)); break; |
2559 | case 5: RETVAL = newSVuv (ms.move_slow ); break; |
2551 | case 6: RETVAL = newSVuv (GET_MAP_MOVE_ON (obj, x, y)); break; |
2560 | case 6: RETVAL = newSVuv (ms.move_on ); break; |
2552 | case 7: RETVAL = newSVuv (GET_MAP_MOVE_OFF (obj, x, y)); break; |
2561 | case 7: RETVAL = newSVuv (ms.move_off ); break; |
2553 | } |
2562 | } |
|
|
2563 | } |
2554 | OUTPUT: RETVAL |
2564 | OUTPUT: RETVAL |
2555 | |
2565 | |
2556 | void fix_walls (maptile *map, int x, int y) |
2566 | void fix_walls (maptile *map, int x, int y) |
2557 | |
2567 | |
2558 | void fix_walls_around (maptile *map, int x, int y) |
2568 | void fix_walls_around (maptile *map, int x, int y) |