1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

Extract PossibilityVisitor

This commit is contained in:
Piotr Wójcik
2016-09-12 22:28:11 +02:00
parent 40003460ca
commit e1a1bc89c0
2 changed files with 81 additions and 79 deletions

View File

@@ -520,10 +520,12 @@ EBuildingState::EBuildingState CGameInfoCallback::canBuildStructure( const CGTow
if(vstd::contains(t->forbiddenBuildings, ID))
return EBuildingState::FORBIDDEN; //forbidden
std::function<bool(BuildingID id)> allowedTest;
std::function<bool(BuildingID id)> possiblyNotBuiltTest;
auto possiblyNotBuiltTest = [&](BuildingID id) -> bool
{
return ((id == BuildingID::CAPITOL) ? true : !t->hasBuilt(id));
};
allowedTest = [&](BuildingID id) -> bool
std::function<bool(BuildingID id)> allowedTest = [&](BuildingID id) -> bool
{
if (vstd::contains(t->forbiddenBuildings, id))
{
@@ -533,12 +535,6 @@ EBuildingState::EBuildingState CGameInfoCallback::canBuildStructure( const CGTow
return t->genBuildingRequirements(id, true).satisfiable(allowedTest, possiblyNotBuiltTest);
};
possiblyNotBuiltTest = [&](BuildingID id) -> bool
{
//TODO consider destroing
return !t->hasBuilt(id);
};
if (!t->genBuildingRequirements(ID, true).satisfiable(allowedTest, possiblyNotBuiltTest))
return EBuildingState::FORBIDDEN;