diff --git a/src/openrct2/management/Research.cpp b/src/openrct2/management/Research.cpp index fefe6bf3a0..8177c9bcd8 100644 --- a/src/openrct2/management/Research.cpp +++ b/src/openrct2/management/Research.cpp @@ -164,17 +164,25 @@ static void ResearchNextDesign() it = gResearchItemsUninvented.begin(); } - const ResearchItem researchItem = *it; - gResearchNextItem = researchItem; + gResearchNextItem = *it; gResearchProgress = 0; gResearchProgressStage = RESEARCH_STAGE_DESIGNING; - gResearchItemsUninvented.erase(it); - gResearchItemsInvented.push_back(researchItem); - ResearchInvalidateRelatedWindows(); } +static void MarkResearchItemInvented(const ResearchItem& researchItem) +{ + gResearchItemsUninvented.erase( + std::remove(gResearchItemsUninvented.begin(), gResearchItemsUninvented.end(), researchItem), + gResearchItemsUninvented.end()); + + if (std::find(gResearchItemsInvented.begin(), gResearchItemsInvented.end(), researchItem) == gResearchItemsInvented.end()) + { + gResearchItemsInvented.push_back(researchItem); + } +} + /** * * rct2: 0x006848D4 @@ -346,6 +354,7 @@ void ResearchUpdate() ResearchInvalidateRelatedWindows(); break; case RESEARCH_STAGE_COMPLETING_DESIGN: + MarkResearchItemInvented(*gResearchNextItem); ResearchFinishItem(*gResearchNextItem); gResearchProgress = 0; gResearchProgressStage = RESEARCH_STAGE_INITIAL_RESEARCH; diff --git a/src/openrct2/management/Research.h b/src/openrct2/management/Research.h index a0fcdbf3f2..6f5b40d7e5 100644 --- a/src/openrct2/management/Research.h +++ b/src/openrct2/management/Research.h @@ -139,7 +139,6 @@ void ResearchInsertRideEntry(ObjectEntryIndex entryIndex, bool researched); bool ResearchInsertSceneryGroupEntry(ObjectEntryIndex entryIndex, bool researched); bool ResearchIsInvented(ObjectType objectType, ObjectEntryIndex index); -bool ResearchSetInvented(ObjectType objectType, ObjectEntryIndex index, bool value); void RideTypeSetInvented(uint32_t rideType); void RideEntrySetInvented(ObjectEntryIndex rideEntryIndex); void ScenerySetInvented(const ScenerySelection& sceneryItem);