MCPcopy Create free account
hub / github.com/DFHack/dfhack / unserialize_list_material

Function unserialize_list_material

plugins/stockpiles/StockpileSerializer.cpp:627–660  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

625}
626
627static void unserialize_list_material(color_ostream& out, const char* subcat, bool all, char val, const vector<string>& filters,
628 FuncMaterialAllowed is_allowed, FuncReadImport read_value, int32_t list_size,
629 vector<char>& pile_list) {
630 // we initialize all disallowed values to 1
631 // why? because that's how the memory is in DF before we muck with it.
632 size_t num_elems = world->raws.inorganics.all.size();
633 pile_list.resize(num_elems, 0);
634 for (size_t i = 0; i < pile_list.size(); ++i) {
635 MaterialInfo mi(0, i);
636 if (!is_allowed(mi))
637 pile_list.at(i) = 1;
638 }
639
640 if (all) {
641 for (size_t idx = 0; idx < num_elems; ++idx) {
642 MaterialInfo mi;
643 mi.decode(0, idx);
644 set_filter_elem(out, subcat, filters, val, mi.toString(), idx, pile_list.at(idx));
645 }
646 return;
647 }
648
649 for (auto i = 0; i < list_size; ++i) {
650 string id = read_value(i);
651 MaterialInfo mi;
652 if (!mi.find(id) || !is_allowed(mi))
653 continue;
654 if (mi.index < 0 || size_t(mi.index) >= pile_list.size()) {
655 WARN(log, out).print("material type index invalid: {}\n", mi.index);
656 continue;
657 }
658 set_filter_elem(out, subcat, filters, val, id, mi.index, pile_list.at(mi.index));
659 }
660}
661
662static bool serialize_list_creature(color_ostream& out, FuncWriteExport add_value, const vector<char>& list) {
663 bool all = true;

Callers 9

read_ammoMethod · 0.85
read_armorMethod · 0.85
read_bars_blocksMethod · 0.85
read_coinsMethod · 0.85
read_finished_goodsMethod · 0.85
read_furnitureMethod · 0.85
read_gemsMethod · 0.85
read_stoneMethod · 0.85
read_weaponsMethod · 0.85

Calls 7

set_filter_elemFunction · 0.85
sizeMethod · 0.45
resizeMethod · 0.45
decodeMethod · 0.45
toStringMethod · 0.45
findMethod · 0.45
printMethod · 0.45

Tested by

no test coverage detected