Small refactor of research_get_current_item()

This commit is contained in:
Gymnasiast 2018-01-28 18:27:23 +01:00 committed by Michael Steenbeek
parent f2792688ea
commit 566f3d901f
2 changed files with 32 additions and 20 deletions

View File

@ -365,11 +365,7 @@ void research_update()
}
}
/**
*
* rct2: 0x00684AC3
*/
void research_reset_current_item()
void research_process_random_items()
{
rct_research_item * research = gResearchItems;
for (; research->rawValue != RESEARCHED_ITEMS_END; research++) { }
@ -406,28 +402,25 @@ void research_reset_current_item()
edx->category = ebp->category;
ebp->category = cat;
}
}
/**
*
* rct2: 0x00684AC3
*/
void research_reset_current_item()
{
research_process_random_items();
set_every_ride_type_not_invented();
set_every_ride_entry_not_invented();
// The following two instructions together make all items not tied to a scenery group available.
set_all_scenery_items_invented();
for (sint32 i = 0; i < MAX_SCENERY_GROUP_OBJECTS; ++i)
{
rct_scenery_group_entry * scenery_set = get_scenery_group_entry(i);
if (scenery_set == nullptr)
{
continue;
}
for (sint32 j = 0; j < scenery_set->entry_count; ++j)
{
scenery_set_not_invented(scenery_set->scenery_entries[j]);
}
}
set_all_scenery_groups_not_invented();
for (research = gResearchItems; research->rawValue != RESEARCHED_ITEMS_SEPARATOR; research++)
for (rct_research_item * research = gResearchItems; research->rawValue != RESEARCHED_ITEMS_SEPARATOR; research++)
{
research_finish_item(research);
}
@ -754,6 +747,23 @@ void scenery_group_set_invented(sint32 sgIndex)
}
}
void set_all_scenery_groups_not_invented()
{
for (sint32 i = 0; i < MAX_SCENERY_GROUP_OBJECTS; ++i)
{
rct_scenery_group_entry * scenery_set = get_scenery_group_entry(i);
if (scenery_set == nullptr)
{
continue;
}
for (sint32 j = 0; j < scenery_set->entry_count; ++j)
{
scenery_set_not_invented(scenery_set->scenery_entries[j]);
}
}
}
void set_all_scenery_items_invented()
{
Memory::Set(_researchedSceneryItems, true, sizeof(_researchedSceneryItems));

View File

@ -117,6 +117,7 @@ void research_update();
void research_reset_current_item();
void research_populate_list_random();
void research_populate_list_researched();
void research_process_random_items();
void research_set_funding(sint32 amount);
void research_set_priority(sint32 activeCategories);
@ -140,6 +141,7 @@ 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();
void set_all_scenery_groups_not_invented();
void set_every_ride_type_invented();
void set_every_ride_type_not_invented();
void set_every_ride_entry_invented();