|
|
|
@ -61,6 +61,7 @@
|
|
|
|
|
#include "df/caste_raw.h"
|
|
|
|
|
|
|
|
|
|
#include "df/enabler.h"
|
|
|
|
|
#include "df/graphic.h"
|
|
|
|
|
|
|
|
|
|
//DFhack specific headers
|
|
|
|
|
#include "modules/Maps.h"
|
|
|
|
@ -92,6 +93,7 @@ DFHACK_PLUGIN("RemoteFortressReader");
|
|
|
|
|
using namespace df::global;
|
|
|
|
|
#else
|
|
|
|
|
REQUIRE_GLOBAL(world);
|
|
|
|
|
REQUIRE_GLOBAL(gps);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// Here go all the command declarations...
|
|
|
|
@ -114,6 +116,7 @@ static command_result GetWorldMapCenter(color_ostream &stream, const EmptyMessag
|
|
|
|
|
static command_result GetRegionMaps(color_ostream &stream, const EmptyMessage *in, RegionMaps *out);
|
|
|
|
|
static command_result GetCreatureRaws(color_ostream &stream, const EmptyMessage *in, CreatureRawList *out);
|
|
|
|
|
static command_result GetPlantRaws(color_ostream &stream, const EmptyMessage *in, PlantRawList *out);
|
|
|
|
|
static command_result CopyScreen(color_ostream &stream, const EmptyMessage *in, ScreenCapture *out);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CopyBlock(df::map_block * DfBlock, RemoteFortressReader::MapBlock * NetBlock, MapExtras::MapCache * MC, DFCoord pos);
|
|
|
|
@ -167,6 +170,7 @@ DFhackCExport RPCService *plugin_rpcconnect(color_ostream &)
|
|
|
|
|
svc->addFunction("GetCreatureRaws", GetCreatureRaws);
|
|
|
|
|
svc->addFunction("GetWorldMapCenter", GetWorldMapCenter);
|
|
|
|
|
svc->addFunction("GetPlantRaws", GetPlantRaws);
|
|
|
|
|
svc->addFunction("CopyScreen", CopyScreen);
|
|
|
|
|
return svc;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2033,3 +2037,18 @@ static command_result GetPlantRaws(color_ostream &stream, const EmptyMessage *in
|
|
|
|
|
}
|
|
|
|
|
return CR_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static command_result CopyScreen(color_ostream &stream, const EmptyMessage *in, ScreenCapture *out)
|
|
|
|
|
{
|
|
|
|
|
df::graphic * gps = df::global::gps;
|
|
|
|
|
out->set_width(gps->dimx);
|
|
|
|
|
out->set_height(gps->dimy);
|
|
|
|
|
for (int i = 0; i < (gps->dimx * gps->dimy); i++)
|
|
|
|
|
{
|
|
|
|
|
int index = i * 4;
|
|
|
|
|
auto tile = out->add_tiles();
|
|
|
|
|
tile->set_character(gps->screen[index]);
|
|
|
|
|
tile->set_foreground(gps->screen[index + 1] | (gps->screen[index + 3] * 8));
|
|
|
|
|
tile->set_background(gps->screen[index]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|