/* fills the list with Templates that can be manufactured in the Factory - based on size. There is a limit on how many can be manufactured at any one time. */ void fillTemplateList(std::vector<DROID_TEMPLATE *> &pList, STRUCTURE *psFactory) { const int player = psFactory->player; pList.clear(); BODY_SIZE iCapacity = (BODY_SIZE)psFactory->capacity; /* Add the templates to the list*/ for (DROID_TEMPLATE &i : localTemplates) { DROID_TEMPLATE *psCurr = &i; // Must add droids if currently in production. if (!getProduction(psFactory, psCurr).quantity) { //can only have (MAX_CMDDROIDS) in the world at any one time if (psCurr->droidType == DROID_COMMAND) { if (checkProductionForCommand(player) + checkCommandExist(player) >= (MAX_CMDDROIDS)) { continue; } } if (!psCurr->enabled || !validTemplateForFactory(psCurr, psFactory, false) || !researchedTemplate(psCurr, player, includeRedundantDesigns)) { continue; } } //check the factory can cope with this sized body if (((asBodyStats + psCurr->asParts[COMP_BODY])->size <= iCapacity)) { pList.push_back(psCurr); } else if (bMultiPlayer && (iCapacity == SIZE_HEAVY)) { // Special case for Super heavy bodyies (Super Transporter) if ((asBodyStats + psCurr->asParts[COMP_BODY])->size == SIZE_SUPER_HEAVY) { pList.push_back(psCurr); } } } }
/* fills the list with Templates that can be manufactured in the Factory - based on size. There is a limit on how many can be manufactured at any one time. Pass back the number available. */ void fillTemplateList(std::vector<DROID_TEMPLATE *> &pList, STRUCTURE *psFactory) { const int player = psFactory->player; pList.clear(); DROID_TEMPLATE *psCurr; UDWORD iCapacity = psFactory->capacity; /* Add the templates to the list*/ for (std::list<DROID_TEMPLATE>::iterator i = localTemplates.begin(); i != localTemplates.end(); ++i) { psCurr = &*i; // Must add droids if currently in production. if (!getProduction(psFactory, psCurr).quantity) { //can only have (MAX_CMDDROIDS) in the world at any one time if (psCurr->droidType == DROID_COMMAND) { if (checkProductionForCommand(player) + checkCommandExist(player) >= (MAX_CMDDROIDS)) { continue; } } if (!psCurr->enabled || !validTemplateForFactory(psCurr, psFactory, false) || !researchedTemplate(psCurr, player, includeRedundantDesigns)) { continue; } } //check the factory can cope with this sized body if (!((asBodyStats + psCurr->asParts[COMP_BODY])->size > iCapacity) ) { pList.push_back(psCurr); } } }