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

Function GetMaterialList

plugins/remotefortressreader/remotefortressreader.cpp:807–884  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

805}
806
807static command_result GetMaterialList(color_ostream &stream, const EmptyMessage *in, MaterialList *out)
808{
809 if (!Core::getInstance().isWorldLoaded()) {
810 //out->set_available(false);
811 return CR_OK;
812 }
813
814 auto *raws = &world->raws;
815 // df::world_history *history = &world->history;
816 MaterialInfo mat;
817 for (size_t i = 0; i < raws->inorganics.all.size(); i++)
818 {
819 mat.decode(0, i);
820 MaterialDefinition *mat_def = out->add_material_list();
821 mat_def->mutable_mat_pair()->set_mat_type(0);
822 mat_def->mutable_mat_pair()->set_mat_index(i);
823 mat_def->set_id(mat.getToken());
824 mat_def->set_name(DF2UTF(mat.toString())); //find the name at cave temperature;
825 if (size_t(raws->inorganics.all[i]->material.state_color[GetState(&raws->inorganics.all[i]->material)]) < raws->descriptors.colors.size())
826 {
827 ConvertDFColorDescriptor(raws->inorganics.all[i]->material.state_color[GetState(&raws->inorganics.all[i]->material)], mat_def->mutable_state_color());
828 }
829 }
830 for (int i = 0; i < 19; i++)
831 {
832 int k = -1;
833 if (i == 7)
834 k = 1;// for coal.
835 for (int j = -1; j <= k; j++)
836 {
837 mat.decode(i, j);
838 MaterialDefinition *mat_def = out->add_material_list();
839 mat_def->mutable_mat_pair()->set_mat_type(i);
840 mat_def->mutable_mat_pair()->set_mat_index(j);
841 mat_def->set_id(mat.getToken());
842 mat_def->set_name(DF2UTF(mat.toString())); //find the name at cave temperature;
843 if (size_t(raws->mat_table.builtin[i]->state_color[GetState(raws->mat_table.builtin[i])]) < raws->descriptors.colors.size())
844 {
845 ConvertDFColorDescriptor(raws->mat_table.builtin[i]->state_color[GetState(raws->mat_table.builtin[i])], mat_def->mutable_state_color());
846 }
847 }
848 }
849 for (size_t i = 0; i < raws->creatures.all.size(); i++)
850 {
851 df::creature_raw * creature = raws->creatures.all[i];
852 for (size_t j = 0; j < creature->material.size(); j++)
853 {
854 mat.decode(j + MaterialInfo::CREATURE_BASE, i);
855 MaterialDefinition *mat_def = out->add_material_list();
856 mat_def->mutable_mat_pair()->set_mat_type(j + 19);
857 mat_def->mutable_mat_pair()->set_mat_index(i);
858 mat_def->set_id(mat.getToken());
859 mat_def->set_name(DF2UTF(mat.toString())); //find the name at cave temperature;
860 if (size_t(creature->material[j]->state_color[GetState(creature->material[j])]) < raws->descriptors.colors.size())
861 {
862 ConvertDFColorDescriptor(creature->material[j]->state_color[GetState(creature->material[j])], mat_def->mutable_state_color());
863 }
864 }

Callers

nothing calls this directly

Calls 8

DF2UTFFunction · 0.85
GetStateFunction · 0.85
ConvertDFColorDescriptorFunction · 0.85
sizeMethod · 0.45
decodeMethod · 0.45
getTokenMethod · 0.45
set_nameMethod · 0.45
toStringMethod · 0.45

Tested by

no test coverage detected