MCPcopy Create free account
hub / github.com/Phobos-developers/Phobos / GetUpgradesAmount

Method GetUpgradesAmount

src/Ext/BuildingType/Body.cpp:64–99  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

62}
63
64int BuildingTypeExt::GetUpgradesAmount(BuildingTypeClass* pBuilding, HouseClass* pHouse) // not including producing upgrades
65{
66 int result = 0;
67 bool isUpgrade = false;
68 auto pPowersUp = pBuilding->PowersUpBuilding;
69
70 auto checkUpgrade = [pHouse, pBuilding, &result, &isUpgrade](BuildingTypeClass* pTPowersUp)
71 {
72 isUpgrade = true;
73 for (auto const& pBld : pHouse->Buildings)
74 {
75 if (pBld->Type == pTPowersUp)
76 {
77 for (auto const& pUpgrade : pBld->Upgrades)
78 {
79 if (pUpgrade == pBuilding)
80 ++result;
81 }
82 }
83 }
84 };
85
86 if (pPowersUp[0])
87 {
88 if (auto const pTPowersUp = BuildingTypeClass::Find(pPowersUp))
89 checkUpgrade(pTPowersUp);
90 }
91
92 if (auto pBuildingExt = BuildingTypeExt::ExtMap.Find(pBuilding))
93 {
94 for (auto pTPowersUp : pBuildingExt->PowersUp_Buildings)
95 checkUpgrade(pTPowersUp);
96 }
97
98 return isUpgrade ? result : -1;
99}
100
101void BuildingTypeExt::ExtData::Initialize()
102{ }

Callers

nothing calls this directly

Calls 1

FindMethod · 0.45

Tested by

no test coverage detected