| 1219 | } |
| 1220 | |
| 1221 | void 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 | |
| 1265 | void Copyspatters(df::map_block * DfBlock, RemoteFortressReader::MapBlock * NetBlock, MapExtras::MapCache * MC, DFCoord pos) |
| 1266 | { |
no test coverage detected