* Takes care of any game logic that has to * run every game day, like constructions. */
| 1463 | * run every game day, like constructions. |
| 1464 | */ |
| 1465 | void GeoscapeState::time1Day() |
| 1466 | { |
| 1467 | for (std::vector<Base*>::iterator i = _game->getSavedGame()->getBases()->begin(); i != _game->getSavedGame()->getBases()->end(); ++i) |
| 1468 | { |
| 1469 | // Handle facility construction |
| 1470 | for (std::vector<BaseFacility*>::iterator j = (*i)->getFacilities()->begin(); j != (*i)->getFacilities()->end(); ++j) |
| 1471 | { |
| 1472 | if ((*j)->getBuildTime() > 0) |
| 1473 | { |
| 1474 | (*j)->build(); |
| 1475 | if ((*j)->getBuildTime() == 0) |
| 1476 | { |
| 1477 | popup(new ProductionCompleteState(_game, (*i), tr((*j)->getRules()->getType()), this, PROGRESS_CONSTRUCTION)); |
| 1478 | } |
| 1479 | } |
| 1480 | } |
| 1481 | // Handle science project |
| 1482 | std::vector<ResearchProject*> finished; |
| 1483 | for(std::vector<ResearchProject*>::const_iterator iter = (*i)->getResearch().begin (); iter != (*i)->getResearch().end (); ++iter) |
| 1484 | { |
| 1485 | if ((*iter)->step()) |
| 1486 | { |
| 1487 | finished.push_back(*iter); |
| 1488 | } |
| 1489 | } |
| 1490 | for(std::vector<ResearchProject*>::const_iterator iter = finished.begin (); iter != finished.end (); ++iter) |
| 1491 | { |
| 1492 | (*i)->removeResearch(*iter); |
| 1493 | RuleResearch * bonus = 0; |
| 1494 | const RuleResearch * research = (*iter)->getRules (); |
| 1495 | // If "researched" the live alien, his body sent to the stores. |
| 1496 | if (Options::spendResearchedItems && research->needItem() && _game->getRuleset()->getUnit(research->getName())) |
| 1497 | { |
| 1498 | (*i)->getItems()->addItem( |
| 1499 | _game->getRuleset()->getArmor( |
| 1500 | _game->getRuleset()->getUnit( |
| 1501 | research->getName() |
| 1502 | )->getArmor() |
| 1503 | )->getCorpseGeoscape() |
| 1504 | ); // ;) |
| 1505 | } |
| 1506 | if ((*iter)->getRules()->getGetOneFree().size() != 0) |
| 1507 | { |
| 1508 | std::vector<std::string> possibilities; |
| 1509 | for(std::vector<std::string>::const_iterator f = (*iter)->getRules()->getGetOneFree().begin(); f != (*iter)->getRules()->getGetOneFree().end(); ++f) |
| 1510 | { |
| 1511 | bool newFound = true; |
| 1512 | for(std::vector<const RuleResearch*>::const_iterator discovered = _game->getSavedGame()->getDiscoveredResearch().begin(); discovered != _game->getSavedGame()->getDiscoveredResearch().end(); ++discovered) |
| 1513 | { |
| 1514 | if (*f == (*discovered)->getName()) |
| 1515 | { |
| 1516 | newFound = false; |
| 1517 | } |
| 1518 | } |
| 1519 | if (newFound) |
| 1520 | { |
| 1521 | possibilities.push_back(*f); |
| 1522 | } |
nothing calls this directly
no test coverage detected