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; 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 message Tiletype
{ {
required int32 id = 1; required int32 id = 1;
@ -168,6 +185,7 @@ message MapBlock
repeated int32 tree_x = 21; repeated int32 tree_x = 21;
repeated int32 tree_y = 22; repeated int32 tree_y = 22;
repeated int32 tree_z = 23; repeated int32 tree_z = 23;
repeated TileDigDesignation tile_dig_designation = 24;
} }
message MatPair { 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_y(DfBlock->map_pos.y);
NetBlock->set_map_z(DfBlock->map_pos.z); NetBlock->set_map_z(DfBlock->map_pos.z);
bool hasBuilding = false;
for (int yy = 0; yy < 16; yy++) for (int yy = 0; yy < 16; yy++)
for (int xx = 0; xx < 16; xx++) 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_subterranean(designation.bits.subterranean);
NetBlock->add_water_salt(designation.bits.water_salt); NetBlock->add_water_salt(designation.bits.water_salt);
NetBlock->add_water_stagnant(designation.bits.water_stagnant); NetBlock->add_water_stagnant(designation.bits.water_stagnant);
} switch (designation.bits.dig)
{
if(hasBuilding) case df::enums::tile_dig_designation::No:
for (int i = 0; i < df::global::world->buildings.all.size(); i++) 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;
}
} }
} }