|
|
|
@ -316,8 +316,6 @@ void CopyBuilding(int buildingIndex, RemoteFortressReader::BuildingInstance * re
|
|
|
|
|
material->set_mat_index(local_build->mat_index);
|
|
|
|
|
|
|
|
|
|
remote_build->set_building_flags(local_build->flags.whole);
|
|
|
|
|
//FIXME: Figure out what to replace this with.
|
|
|
|
|
//remote_build->set_is_room(local_build->is_room);
|
|
|
|
|
if (local_build->room.width > 0 && local_build->room.height > 0 && local_build->room.extents != nullptr)
|
|
|
|
|
{
|
|
|
|
|
auto room = remote_build->mutable_room();
|
|
|
|
@ -609,28 +607,29 @@ void CopyBuilding(int buildingIndex, RemoteFortressReader::BuildingInstance * re
|
|
|
|
|
case df::enums::building_type::ArcheryTarget:
|
|
|
|
|
{
|
|
|
|
|
//FIXME: Need to decode archery targets again.
|
|
|
|
|
//auto actual = strict_virtual_cast<df::building_archerytargetst>(local_build);
|
|
|
|
|
//if (actual)
|
|
|
|
|
//{
|
|
|
|
|
// auto facing = actual->archery_direction;
|
|
|
|
|
// switch (facing)
|
|
|
|
|
// {
|
|
|
|
|
// case df::building_archerytargetst::TopToBottom:
|
|
|
|
|
// remote_build->set_direction(NORTH);
|
|
|
|
|
// break;
|
|
|
|
|
// case df::building_archerytargetst::BottomToTop:
|
|
|
|
|
// remote_build->set_direction(SOUTH);
|
|
|
|
|
// break;
|
|
|
|
|
// case df::building_archerytargetst::LeftToRight:
|
|
|
|
|
// remote_build->set_direction(WEST);
|
|
|
|
|
// break;
|
|
|
|
|
// case df::building_archerytargetst::RightToLeft:
|
|
|
|
|
// remote_build->set_direction(EAST);
|
|
|
|
|
// break;
|
|
|
|
|
// default:
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
auto actual = strict_virtual_cast<df::building_archerytargetst>(local_build);
|
|
|
|
|
if (actual)
|
|
|
|
|
{
|
|
|
|
|
for (size_t i = 0; i < actual->relations.size(); i++)
|
|
|
|
|
{
|
|
|
|
|
if (actual->relations[i]->getType() != df::enums::building_type::Civzone)
|
|
|
|
|
continue;
|
|
|
|
|
auto zone = strict_virtual_cast<df::building_civzonest>(actual->relations[i]);
|
|
|
|
|
if (!zone)
|
|
|
|
|
continue;
|
|
|
|
|
if (zone->type != df::civzone_type::ArcheryRange)
|
|
|
|
|
continue;
|
|
|
|
|
if(zone->dir_x < 0)
|
|
|
|
|
remote_build->set_direction(EAST);
|
|
|
|
|
else if(zone->dir_x > 0)
|
|
|
|
|
remote_build->set_direction(WEST);
|
|
|
|
|
else if (zone->dir_y < 0)
|
|
|
|
|
remote_build->set_direction(SOUTH);
|
|
|
|
|
else if (zone->dir_y > 0)
|
|
|
|
|
remote_build->set_direction(NORTH);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case df::enums::building_type::Chain:
|
|
|
|
@ -851,7 +850,6 @@ void CopyBuilding(int buildingIndex, RemoteFortressReader::BuildingInstance * re
|
|
|
|
|
auto actual = strict_virtual_cast<df::building_windmillst>(local_build);
|
|
|
|
|
if (actual)
|
|
|
|
|
{
|
|
|
|
|
#if DF_VERSION_INT > 34011
|
|
|
|
|
if (actual->orient_x < 0)
|
|
|
|
|
remote_build->set_direction(WEST);
|
|
|
|
|
else if (actual->orient_x > 0)
|
|
|
|
@ -861,7 +859,6 @@ void CopyBuilding(int buildingIndex, RemoteFortressReader::BuildingInstance * re
|
|
|
|
|
else if (actual->orient_y > 0)
|
|
|
|
|
remote_build->set_direction(SOUTH);
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
remote_build->set_direction(WEST);
|
|
|
|
|
if (actual->machine.machine_id >= 0)
|
|
|
|
|
{
|
|
|
|
|