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

Function CopyBuildings

plugins/remotefortressreader/remotefortressreader.cpp:1221–1263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1219}
1220
1221void CopyBuildings(DFCoord min, DFCoord max, RemoteFortressReader::MapBlock * NetBlock, MapExtras::MapCache * MC)
1222{
1223
1224 for (size_t i = 0; i < df::global::world->buildings.all.size(); i++)
1225 {
1226 df::building * bld = df::global::world->buildings.all[i];
1227 if (bld->x1 >= max.x || bld->y1 >= max.y || bld->x2 < min.x || bld->y2 < min.y)
1228 {
1229 auto out_bld = NetBlock->add_buildings();
1230 out_bld->set_index(bld->id);
1231 continue;
1232 }
1233
1234 int z2 = bld->z;
1235
1236 if (bld->getType() == building_type::Well)
1237 {
1238 df::building_wellst * well_building = virtual_cast<df::building_wellst>(bld);
1239 if (well_building)
1240 {
1241 z2 = well_building->bucket_z;
1242 }
1243 }
1244 if (bld->z < min.z || z2 >= max.z)
1245 {
1246 auto out_bld = NetBlock->add_buildings();
1247 out_bld->set_index(bld->id);
1248 continue;
1249 }
1250 auto out_bld = NetBlock->add_buildings();
1251 CopyBuilding(i, out_bld);
1252 df::building_actual* actualBuilding = virtual_cast<df::building_actual>(bld);
1253 if (actualBuilding)
1254 {
1255 for (size_t i = 0; i < actualBuilding->contained_items.size(); i++)
1256 {
1257 auto buildingItem = out_bld->add_items();
1258 buildingItem->set_mode(actualBuilding->contained_items[i]->use_mode);
1259 CopyItem(buildingItem->mutable_item(), actualBuilding->contained_items[i]->item);
1260 }
1261 }
1262 }
1263}
1264
1265void Copyspatters(df::map_block * DfBlock, RemoteFortressReader::MapBlock * NetBlock, MapExtras::MapCache * MC, DFCoord pos)
1266{

Callers 1

GetBlockListFunction · 0.85

Calls 5

CopyBuildingFunction · 0.85
CopyItemFunction · 0.85
getTypeMethod · 0.80
set_modeMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected