Added dig designations to remotefortressreader.cpp

develop
Japa 2016-04-19 19:15:33 +05:30
parent 1317792cde
commit 856c3b06f4
2 changed files with 45 additions and 8 deletions

@ -100,6 +100,23 @@ enum BuildingDirection
WEST = 3;
}
enum TileDigDesignation
{
/**
* no designation
*/
NO_DIG = 0;
/**
* dig walls, remove stairs and ramps, gather plants, fell trees
*/
DEFAULT_DIG = 1;
UP_DOWN_STAIR_DIG = 2;
CHANNEL_DIG = 3;
RAMP_DIG = 4;
DOWN_STAIR_DIG = 5;
UP_STAIR_DIG = 6;
}
message Tiletype
{
required int32 id = 1;
@ -168,6 +185,7 @@ message MapBlock
repeated int32 tree_x = 21;
repeated int32 tree_y = 22;
repeated int32 tree_z = 23;
repeated TileDigDesignation tile_dig_designation = 24;
}
message MatPair {

@ -1149,8 +1149,6 @@ void CopyDesignation(df::map_block * DfBlock, RemoteFortressReader::MapBlock * N
NetBlock->set_map_y(DfBlock->map_pos.y);
NetBlock->set_map_z(DfBlock->map_pos.z);
bool hasBuilding = false;
for (int yy = 0; yy < 16; yy++)
for (int xx = 0; xx < 16; xx++)
{
@ -1170,12 +1168,33 @@ void CopyDesignation(df::map_block * DfBlock, RemoteFortressReader::MapBlock * N
NetBlock->add_subterranean(designation.bits.subterranean);
NetBlock->add_water_salt(designation.bits.water_salt);
NetBlock->add_water_stagnant(designation.bits.water_stagnant);
}
if(hasBuilding)
for (int i = 0; i < df::global::world->buildings.all.size(); i++)
{
switch (designation.bits.dig)
{
case df::enums::tile_dig_designation::No:
NetBlock->add_tile_dig_designation(TileDigDesignation::NO_DIG);
break;
case df::enums::tile_dig_designation::Default:
NetBlock->add_tile_dig_designation(TileDigDesignation::DEFAULT_DIG);
break;
case df::enums::tile_dig_designation::UpDownStair:
NetBlock->add_tile_dig_designation(TileDigDesignation::UP_DOWN_STAIR_DIG);
break;
case df::enums::tile_dig_designation::Channel:
NetBlock->add_tile_dig_designation(TileDigDesignation::CHANNEL_DIG);
break;
case df::enums::tile_dig_designation::Ramp:
NetBlock->add_tile_dig_designation(TileDigDesignation::RAMP_DIG);
break;
case df::enums::tile_dig_designation::DownStair:
NetBlock->add_tile_dig_designation(TileDigDesignation::DOWN_STAIR_DIG);
break;
case df::enums::tile_dig_designation::UpStair:
NetBlock->add_tile_dig_designation(TileDigDesignation::UP_STAIR_DIG);
break;
default:
NetBlock->add_tile_dig_designation(TileDigDesignation::NO_DIG);
break;
}
}
}