MCPcopy Create free account
hub / github.com/OpenXcom/OpenXcom / addFinishedResearch

Method addFinishedResearch

src/Savegame/SavedGame.cpp:901–937  ·  view source on GitHub ↗

* Add a ResearchProject to the list of already discovered ResearchProject * @param r The newly found ResearchProject * @param ruleset the game Ruleset */

Source from the content-addressed store, hash-verified

899 * @param ruleset the game Ruleset
900 */
901void SavedGame::addFinishedResearch (const RuleResearch * r, const Ruleset * ruleset)
902{
903 std::vector<const RuleResearch *>::const_iterator itDiscovered = std::find(_discovered.begin (), _discovered.end (), r);
904 if(itDiscovered == _discovered.end())
905 {
906 _discovered.push_back(r);
907 removePoppedResearch(r);
908 addResearchScore(r->getPoints());
909 }
910 if(ruleset)
911 {
912 std::vector<RuleResearch*> availableResearch;
913 for(std::vector<Base*>::const_iterator it = _bases.begin (); it != _bases.end (); ++it)
914 {
915 getDependableResearchBasic(availableResearch, r, ruleset, *it);
916 }
917 for(std::vector<RuleResearch*>::iterator it = availableResearch.begin (); it != availableResearch.end (); ++it)
918 {
919 if((*it)->getCost() == 0 && (*it)->getRequirements().empty())
920 {
921 addFinishedResearch(*it, ruleset);
922 }
923 else if((*it)->getCost() == 0)
924 {
925 int entry(0);
926 for(std::vector<std::string>::const_iterator iter = (*it)->getRequirements().begin (); iter != (*it)->getRequirements().end (); ++iter)
927 {
928 if((*it)->getRequirements().at(entry) == (*iter))
929 {
930 addFinishedResearch(*it, ruleset);
931 }
932 entry++;
933 }
934 }
935 }
936 }
937}
938
939/**
940 * Returns the list of already discovered ResearchProject

Callers 3

loadMethod · 0.80
initSaveMethod · 0.80
time1DayMethod · 0.80

Calls 3

getPointsMethod · 0.45
getCostMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected