… | |
… | |
792 | case KW_sky: thawer.get (sky); break; |
792 | case KW_sky: thawer.get (sky); break; |
793 | |
793 | |
794 | case KW_per_player: thawer.get (per_player); break; |
794 | case KW_per_player: thawer.get (per_player); break; |
795 | case KW_per_party: thawer.get (per_party); break; |
795 | case KW_per_party: thawer.get (per_party); break; |
796 | |
796 | |
797 | case KW_region: get_region_by_name (thawer.get_str ()); break; |
797 | case KW_region: default_region = region::find (thawer.get_str ()); break; |
798 | case KW_shopitems: shopitems = parse_shop_string (thawer.get_str ()); break; |
798 | case KW_shopitems: shopitems = parse_shop_string (thawer.get_str ()); break; |
799 | |
799 | |
800 | // old names new names |
800 | // old names new names |
801 | case KW_hp: case KW_enter_x: thawer.get (enter_x); break; |
801 | case KW_hp: case KW_enter_x: thawer.get (enter_x); break; |
802 | case KW_sp: case KW_enter_y: thawer.get (enter_y); break; |
802 | case KW_sp: case KW_enter_y: thawer.get (enter_y); break; |
… | |
… | |
871 | MAP_OUT (reset_time); |
871 | MAP_OUT (reset_time); |
872 | MAP_OUT (reset_timeout); |
872 | MAP_OUT (reset_timeout); |
873 | MAP_OUT (fixed_resettime); |
873 | MAP_OUT (fixed_resettime); |
874 | MAP_OUT (difficulty); |
874 | MAP_OUT (difficulty); |
875 | |
875 | |
876 | if (region) MAP_OUT2 (region, region->name); |
876 | if (default_region) MAP_OUT2 (region, default_region->name); |
877 | |
877 | |
878 | if (shopitems) |
878 | if (shopitems) |
879 | { |
879 | { |
880 | char shop[MAX_BUF]; |
880 | char shop[MAX_BUF]; |
881 | print_shop_string (this, shop); |
881 | print_shop_string (this, shop); |
… | |
… | |
932 | * Remove and free all objects in the given map. |
932 | * Remove and free all objects in the given map. |
933 | */ |
933 | */ |
934 | void |
934 | void |
935 | maptile::clear () |
935 | maptile::clear () |
936 | { |
936 | { |
|
|
937 | sfree (regions, size ()), regions = 0; |
|
|
938 | free (regionmap), regionmap = 0; |
|
|
939 | |
937 | if (!spaces) |
940 | if (spaces) |
938 | return; |
941 | { |
939 | |
|
|
940 | for (mapspace *ms = spaces + size (); ms-- > spaces; ) |
942 | for (mapspace *ms = spaces + size (); ms-- > spaces; ) |
941 | while (object *op = ms->bot) |
943 | while (object *op = ms->bot) |
942 | { |
944 | { |
943 | if (op->head) |
945 | if (op->head) |
944 | op = op->head; |
946 | op = op->head; |
945 | |
947 | |
946 | op->destroy_inv (false); |
948 | op->destroy_inv (false); |
947 | op->destroy (); |
949 | op->destroy (); |
948 | } |
950 | } |
949 | |
951 | |
950 | sfree (spaces, size ()), spaces = 0; |
952 | sfree (spaces, size ()), spaces = 0; |
|
|
953 | } |
951 | |
954 | |
952 | if (buttons) |
955 | if (buttons) |
953 | free_objectlinkpt (buttons), buttons = 0; |
956 | free_objectlinkpt (buttons), buttons = 0; |
954 | } |
957 | } |
955 | |
958 | |
… | |
… | |
1680 | op->remove (); |
1683 | op->remove (); |
1681 | |
1684 | |
1682 | return insert_ob_in_map_at (op, this, originator, flags, x, y); |
1685 | return insert_ob_in_map_at (op, this, originator, flags, x, y); |
1683 | } |
1686 | } |
1684 | |
1687 | |
|
|
1688 | region * |
|
|
1689 | maptile::region (int x, int y) const |
|
|
1690 | { |
|
|
1691 | if (regions |
|
|
1692 | && regionmap |
|
|
1693 | && !OUT_OF_REAL_MAP (this, x, y)) |
|
|
1694 | if (struct region *reg = regionmap [regions [y * width + x]]) |
|
|
1695 | return reg; |
|
|
1696 | |
|
|
1697 | if (default_region) |
|
|
1698 | return default_region; |
|
|
1699 | |
|
|
1700 | return ::region::default_region (); |
|
|
1701 | } |
|
|
1702 | |