From 4db33239739e40ddfe2b0ed6fece042698e3d827 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Wed, 10 Jan 2018 14:26:03 +0100 Subject: [PATCH] Create scenery_group_set_invented() --- src/openrct2/management/Research.cpp | 18 ++++++++++++++---- src/openrct2/management/Research.h | 1 + 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/openrct2/management/Research.cpp b/src/openrct2/management/Research.cpp index 8bcf34f486..c3785a1c33 100644 --- a/src/openrct2/management/Research.cpp +++ b/src/openrct2/management/Research.cpp @@ -293,10 +293,7 @@ void research_finish_item(rct_research_item * researchItem) rct_scenery_group_entry * sceneryGroupEntry = get_scenery_group_entry(researchItem->entryIndex); if (sceneryGroupEntry != nullptr) { - for (sint32 i = 0; i < sceneryGroupEntry->entry_count; i++) - { - scenery_set_invented(sceneryGroupEntry->scenery_entries[i]); - } + scenery_group_set_invented(researchItem->entryIndex); set_format_arg(0, rct_string_id, sceneryGroupEntry->name); @@ -743,6 +740,19 @@ bool scenery_group_is_invented(sint32 sgIndex) return invented; } +void scenery_group_set_invented(sint32 sgIndex) +{ + const auto sgEntry = get_scenery_group_entry(sgIndex); + if (sgEntry != nullptr && sgEntry->entry_count > 0) + { + for (auto i = 0; i < sgEntry->entry_count; i++) + { + auto sceneryEntryIndex = sgEntry->scenery_entries[i]; + scenery_set_invented(sceneryEntryIndex); + } + } +} + void set_all_scenery_items_invented() { Memory::Set(_researchedSceneryItems, true, sizeof(_researchedSceneryItems)); diff --git a/src/openrct2/management/Research.h b/src/openrct2/management/Research.h index 39b40b0887..a30c706340 100644 --- a/src/openrct2/management/Research.h +++ b/src/openrct2/management/Research.h @@ -136,6 +136,7 @@ bool ride_type_is_invented(sint32 rideType); bool ride_entry_is_invented(sint32 rideEntryIndex); bool track_piece_is_available_for_ride_type(uint8 rideType, sint32 trackType); bool scenery_group_is_invented(sint32 sgIndex); +void scenery_group_set_invented(sint32 sgIndex); bool scenery_is_invented(uint16 sceneryItem); void set_all_scenery_items_invented(); void set_all_scenery_items_not_invented();