| 686 | } |
| 687 | |
| 688 | static void unserialize_list_creature(color_ostream& out, const char* subcat, bool all, char val, const vector<string>& filters, |
| 689 | FuncReadImport read_value, int32_t list_size, vector<char>& pile_list) { |
| 690 | size_t num_elems = world->raws.creatures.all.size(); |
| 691 | pile_list.resize(num_elems, '\0'); |
| 692 | if (all) { |
| 693 | for (size_t idx = 0; idx < num_elems; ++idx) { |
| 694 | auto r = find_creature(idx); |
| 695 | set_filter_elem(out, subcat, filters, val, get_filter_string(r), r->creature_id, pile_list.at(idx)); |
| 696 | } |
| 697 | return; |
| 698 | } |
| 699 | |
| 700 | for (auto i = 0; i < list_size; ++i) { |
| 701 | string id = read_value(i); |
| 702 | int idx = find_creature(id); |
| 703 | if (idx < 0 || size_t(idx) >= num_elems) { |
| 704 | WARN(log, out).print("animal index invalid: {}\n", idx); |
| 705 | continue; |
| 706 | } |
| 707 | auto r = find_creature(idx); |
| 708 | set_filter_elem(out, subcat, filters, val, get_filter_string(r), r->creature_id, pile_list.at(idx)); |
| 709 | } |
| 710 | } |
| 711 | |
| 712 | template<typename T_cat_set> |
| 713 | static void write_cat(color_ostream& out, const char* name, bool include_types, uint32_t cat_flags, |
no test coverage detected