… | |
… | |
1004 | li->count = count; |
1004 | li->count = count; |
1005 | |
1005 | |
1006 | freelist = li; |
1006 | freelist = li; |
1007 | ++free_count; |
1007 | ++free_count; |
1008 | } |
1008 | } |
1009 | |
|
|
1010 | // special "grave" map used to store all removed objects |
|
|
1011 | // till they can be destroyed - saves a lot of checks in the rest |
|
|
1012 | // of the code |
|
|
1013 | static struct freed_map |
|
|
1014 | : maptile |
|
|
1015 | { |
|
|
1016 | freed_map () |
|
|
1017 | : maptile (3, 3) |
|
|
1018 | { |
|
|
1019 | path = "<freed objects map>"; |
|
|
1020 | name = "/internal/freed_objects_map"; |
|
|
1021 | no_drop = 1; |
|
|
1022 | no_reset = 1; |
|
|
1023 | |
|
|
1024 | state = MAP_ACTIVE; |
|
|
1025 | } |
|
|
1026 | |
|
|
1027 | ~freed_map () |
|
|
1028 | { |
|
|
1029 | destroy (); |
|
|
1030 | } |
|
|
1031 | } freed_map; // freed objects are moved here to avoid crashes |
|
|
1032 | |
1009 | |
1033 | void |
1010 | void |
1034 | object::do_destroy () |
1011 | object::do_destroy () |
1035 | { |
1012 | { |
1036 | if (flag [FLAG_IS_LINKED]) |
1013 | if (flag [FLAG_IS_LINKED]) |