dfhack/tools/dfitemdump.cpp

61 lines
1.3 KiB
C++

// Item dump
#include <iostream>
#include <iomanip>
#include <sstream>
#include <climits>
#include <integers.h>
#include <vector>
using namespace std;
#include <DFTypes.h>
#include <DFHackAPI.h>
int main ()
{
DFHack::API DF ("Memory.xml");
if(!DF.Attach())
{
cerr << "DF not found" << endl;
return 1;
}
vector <string> buildingtypes;
uint32_t numBuildings = DF.InitReadBuildings(buildingtypes);
DF.InitViewAndCursor();
cout << "q to quit, anything else to look up items at that location\n";
while(1)
{
string input;
DF.Resume();
getline (cin, input);
DF.Suspend();
uint32_t numItems = DF.InitReadItems();
if(input == "q")
{
break;
}
int32_t x,y,z;
DF.getCursorCoords(x,y,z);
for(uint32_t i = 0; i < numItems; i++)
{
t_item temp;
DF.ReadItem(i, temp);
if(temp.x == x && temp.y == y && temp.z == z)
{
cout << buildingtypes[temp.type] << " 0x" << hex << temp.origin << endl;
}
}
DF.FinishReadItems();
}
DF.FinishReadBuildings();
DF.Detach();
#ifndef LINUX_BUILD
cout << "Done. Press any key to continue" << endl;
cin.ignore();
#endif
return 0;
}