bool UpgradeManager::upgrade(BWAPI::UpgradeType type) { int level=BWAPI::Broodwar->self()->getUpgradeLevel(type)+1; if (level>type.maxRepeats()) return false; Upgrade newUpgrade; newUpgrade.type=type; newUpgrade.level=level; upgradeQueues[*type.whatUpgrades()].push_back(newUpgrade); plannedLevel[type]=level; return true; }
bool UpgradeManager::upgrade(BWAPI::UpgradeType type, int level) { if (level<=0) level=this->getPlannedLevel(type)+1; if (level>type.maxRepeats()) return false; Upgrade newUpgrade; newUpgrade.type=type; newUpgrade.level=level; upgradeQueues[type.whatUpgrades()].push_back(newUpgrade); plannedLevel[type]=level; return true; }
/*** * Researches the UpgradeType t */ void Producer::researchUpgrade(BWAPI::UpgradeType t) { if (Broodwar->self()->getUpgradeLevel(t) >= t.maxRepeats()) return; checkCanUpgrade(t); for (list<UpgradeType>::const_iterator it = _upgradesQueue.begin(); it != _upgradesQueue.end(); ++it) { if (*it == t) return; } _upgradesQueue.push_back(t); }