Create scenery_set_(not_)invented()

This commit is contained in:
Michael Steenbeek 2018-01-10 11:03:48 +01:00
parent 3d9466a2f6
commit ea4eb7775a
2 changed files with 20 additions and 10 deletions

View File

@ -61,8 +61,9 @@ uint32 gResearchedSceneryItems[MAX_RESEARCHED_SCENERY_ITEMS];
bool gSilentResearch = false;
static void ride_type_set_invented(sint32 rideType);
static void ride_entry_set_invented(sint32 rideEntryIndex);
static void scenery_set_invented(uint16 sceneryItem);
static void scenery_set_not_invented(uint16 sceneryItem);
/**
*
@ -299,8 +300,7 @@ void research_finish_item(rct_research_item * researchItem)
{
for (sint32 i = 0; i < sceneryGroupEntry->entry_count; i++)
{
sint32 subSceneryEntryIndex = sceneryGroupEntry->scenery_entries[i];
gResearchedSceneryItems[subSceneryEntryIndex >> 5] |= 1UL << (subSceneryEntryIndex & 0x1F);
scenery_set_invented(sceneryGroupEntry->scenery_entries[i]);
}
set_format_arg(0, rct_string_id, sceneryGroupEntry->name);
@ -416,10 +416,7 @@ void research_reset_current_item()
set_every_ride_entry_not_invented();
for (auto &researchedSceneryItem : gResearchedSceneryItems)
{
researchedSceneryItem = 0xFFFFFFFF;
}
set_all_scenery_items_invented();
for (sint32 i = 0; i < MAX_SCENERY_GROUP_OBJECTS; ++i)
{
@ -431,8 +428,7 @@ void research_reset_current_item()
for (sint32 j = 0; j < scenery_set->entry_count; ++j)
{
uint8 value = scenery_set->scenery_entries[j] & 0x1F;
gResearchedSceneryItems[scenery_set->scenery_entries[j] >> 5] &= ~(1UL << value);
scenery_set_not_invented(scenery_set->scenery_entries[j]);
}
}
@ -718,6 +714,20 @@ bool scenery_is_invented(uint16 sceneryItem)
return invented;
}
static void scenery_set_invented(uint16 sceneryItem)
{
sint32 quadIndex = sceneryItem >> 5;
sint32 bitIndex = sceneryItem & 0x1F;
gResearchedSceneryItems[quadIndex] |= (uint32) 1 << bitIndex;
}
static void scenery_set_not_invented(uint16 sceneryItem)
{
sint32 quadIndex = sceneryItem >> 5;
sint32 bitIndex = sceneryItem & 0x1F;
gResearchedSceneryItems[quadIndex] &= ~((uint32) 1 << bitIndex);
}
bool scenery_group_is_invented(sint32 sgIndex)
{
auto invented = false;

View File

@ -62,7 +62,7 @@ enum
#define RESEARCHED_ITEMS_END_2 -3
#define MAX_RESEARCH_ITEMS 500
#define MAX_RESEARCHED_SCENERY_ITEMS 56
#define MAX_RESEARCHED_SCENERY_ITEMS 56 // Actually 56 * 32 = 1792
#define MAX_RESEARCHED_TRACK_TYPES 128
#define RESEARCH_ENTRY_RIDE_MASK 0x10000