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

Unify checks for creature limiter

This commit is contained in:
Ivan Savenko
2025-05-07 15:55:48 +03:00
parent 4b77140f4a
commit 92c4bcbf68
5 changed files with 41 additions and 46 deletions

View File

@@ -101,29 +101,7 @@ const std::string & CQuest::missionState(int state)
bool CQuest::checkMissionArmy(const CQuest * q, const CCreatureSet * army)
{
std::vector<CStackBasicDescriptor>::const_iterator cre;
TSlots::const_iterator it;
ui32 count = 0;
ui32 slotsCount = 0;
bool hasExtraCreatures = false;
for(cre = q->mission.creatures.begin(); cre != q->mission.creatures.end(); ++cre)
{
for(count = 0, it = army->Slots().begin(); it != army->Slots().end(); ++it)
{
if(it->second->getType() == cre->getType())
{
count += it->second->getCount();
slotsCount++;
}
}
if(static_cast<TQuantity>(count) < cre->getCount()) //not enough creatures of this kind
return false;
hasExtraCreatures |= static_cast<TQuantity>(count) > cre->getCount();
}
return hasExtraCreatures || slotsCount < army->Slots().size();
return army->hasUnits(q->mission.creatures, true);
}
bool CQuest::checkQuest(const CGHeroInstance * h) const