diff --git a/library/DFHackAPI.cpp b/library/DFHackAPI.cpp index 455ec024c..3e047d8e9 100644 --- a/library/DFHackAPI.cpp +++ b/library/DFHackAPI.cpp @@ -341,7 +341,7 @@ bool DFHackAPIImpl::ReadMetalMatgloss(vector & metals) int matgloss_address = offset_descriptor->getAddress("matgloss"); int matgloss_offset = offset_descriptor->getHexValue("matgloss_skip"); int matgloss_colors = offset_descriptor->getOffset("matgloss_metal_color"); - DfVector p_matgloss = dm->readVector(matgloss_address + matgloss_offset*2, 4); + DfVector p_matgloss = dm->readVector(matgloss_address + matgloss_offset*3, 4); metals.clear(); @@ -367,7 +367,7 @@ bool DFHackAPIImpl::ReadPlantMatgloss(vector & plants) { int matgloss_address = offset_descriptor->getAddress("matgloss"); int matgloss_offset = offset_descriptor->getHexValue("matgloss_skip"); - DfVector p_matgloss = dm->readVector(matgloss_address + matgloss_offset*3, 4); + DfVector p_matgloss = dm->readVector(matgloss_address + matgloss_offset*2, 4); plants.clear(); diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 74a295e33..2972bd828 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -29,6 +29,11 @@ TARGET_LINK_LIBRARIES(dfcreaturedump dfhack) ADD_EXECUTABLE(dfattachtest attachtest.cpp) TARGET_LINK_LIBRARIES(dfattachtest dfhack) +# materialtest - just list the first material of each type +ADD_EXECUTABLE(dfmaterialtest materialtest.cpp) +TARGET_LINK_LIBRARIES(dfmaterialtest dfhack) + + IF(UNIX) - install(TARGETS dfexpbench dfreveal dfreveal dfprospector dfcleanmap dfcreaturedump dfattachtest RUNTIME DESTINATION bin) +install(TARGETS dfexpbench dfreveal dfreveal dfprospector dfcleanmap dfcreaturedump dfattachtest dfmaterialtest RUNTIME DESTINATION bin) ENDIF(UNIX) \ No newline at end of file diff --git a/tools/materialtest.cpp b/tools/materialtest.cpp new file mode 100644 index 000000000..5b1e52744 --- /dev/null +++ b/tools/materialtest.cpp @@ -0,0 +1,46 @@ +// Attach test +// attachtest - 100x attach/detach, 100x reads, 100x writes + +#include +#include +#include +#include +#include +using namespace std; + +#include +#include + +int main (void) +{ + DFHackAPI *pDF = CreateDFHackAPI("Memory.xml"); + DFHackAPI &DF = *pDF; + if(!DF.Attach()) + { + cerr << "DF not found" << endl; + return 1; + } + vector Plants; + DF.ReadPlantMatgloss(Plants); + + vector Metals; + DF.ReadMetalMatgloss(Metals); + + vector Stones; + DF.ReadStoneMatgloss(Stones); + + vector CreatureTypes; + DF.ReadCreatureMatgloss(CreatureTypes); + + cout << "Plant: " << Plants[0].id << endl; + cout << "Metal: " << Metals[0].id << endl; + cout << "Stone: " << Stones[0].id << endl; + cout << "Creature: " << CreatureTypes[0].id << endl; + + DF.Detach(); + delete pDF; + + cin.ignore(); + + return 0; +} \ No newline at end of file