// Produces a list of materials available on the map. // Options: // -a : show unrevealed tiles // -p : don't show plants // -s : don't show slade // -t : don't show demon temple //#include #include #include #include #include #include using namespace std; #include #include #include #include #include #include using namespace DFHack; struct matdata { const static int invalid_z = -30000; matdata() { count = 0; lower_z = invalid_z; upper_z = invalid_z; } matdata (const matdata & copyme) { count = copyme.count; lower_z = copyme.lower_z; upper_z = copyme.upper_z; } unsigned int add( int z_level = invalid_z ) { count ++; if(z_level != invalid_z) { if(lower_z == invalid_z || z_level < lower_z) { lower_z = z_level; } if(upper_z == invalid_z || z_level > upper_z) { upper_z = z_level; } } return count; } unsigned int count; int lower_z; int upper_z; }; bool operator>(const matdata & q1, const matdata & q2) { return q1.count > q2.count; } typedef std::map MatMap; typedef std::vector< pair > MatSorter; typedef std::vector FeatureList; typedef std::vector FeatureListPointer; typedef std::map FeatureMap; typedef std::vector PlantList; #define TO_PTR_VEC(obj_vec, ptr_vec) \ ptr_vec.clear(); \ for (size_t i = 0; i < obj_vec.size(); i++) \ ptr_vec.push_back(&obj_vec[i]) template