Abstract access to gResearchedRide{Types,Entries}

This commit is contained in:
Michael Steenbeek 2018-01-10 12:40:50 +01:00
parent ea4eb7775a
commit d2de1a4a95
6 changed files with 37 additions and 25 deletions

View File

@ -227,6 +227,7 @@ void window_editor_bottom_toolbar_jump_forward_from_object_selection()
return;
if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER) {
set_every_ride_type_invented();
set_every_ride_entry_invented();
context_open_window(WC_CONSTRUCT_RIDE);
gS6Info.editor_step = EDITOR_STEP_ROLLERCOASTER_DESIGNER;

View File

@ -1233,6 +1233,7 @@ static sint32 get_object_from_object_selection(uint8 object_type, sint32 y)
*/
static void window_editor_object_selection_manage_tracks()
{
set_every_ride_type_invented();
set_every_ride_entry_invented();
gS6Info.editor_step = EDITOR_STEP_TRACK_DESIGNS_MANAGER;

View File

@ -54,16 +54,13 @@ rct_research_item gResearchItems[MAX_RESEARCH_ITEMS];
// 0x00EE787C
uint8 gResearchUncompletedCategories;
bool gResearchedRideTypes[RIDE_TYPE_COUNT];
bool gResearchedRideEntries[MAX_RIDE_OBJECTS];
static bool _researchedRideTypes[RIDE_TYPE_COUNT];
static bool _researchedRideEntries[MAX_RIDE_OBJECTS];
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);
/**
*
@ -414,6 +411,7 @@ void research_reset_current_item()
ebp->category = cat;
}
set_every_ride_type_not_invented();
set_every_ride_entry_not_invented();
set_all_scenery_items_invented();
@ -683,12 +681,12 @@ void research_insert_scenery_group_entry(uint8 entryIndex, bool researched)
bool ride_type_is_invented(sint32 rideType)
{
return gResearchedRideTypes[rideType];
return _researchedRideTypes[rideType];
}
bool ride_entry_is_invented(sint32 rideEntryIndex)
{
return gResearchedRideEntries[rideEntryIndex];
return _researchedRideEntries[rideEntryIndex];
}
bool track_piece_is_available_for_ride_type(uint8 rideType, sint32 trackType)
@ -696,14 +694,14 @@ bool track_piece_is_available_for_ride_type(uint8 rideType, sint32 trackType)
return RideTypePossibleTrackConfigurations[rideType] & (1ULL << trackType);
}
static void ride_type_set_invented(sint32 rideType)
void ride_type_set_invented(sint32 rideType)
{
gResearchedRideTypes[rideType] = true;
_researchedRideTypes[rideType] = true;
}
static void ride_entry_set_invented(sint32 rideEntryIndex)
void ride_entry_set_invented(sint32 rideEntryIndex)
{
gResearchedRideEntries[rideEntryIndex] = true;
_researchedRideEntries[rideEntryIndex] = true;
}
bool scenery_is_invented(uint16 sceneryItem)
@ -714,14 +712,14 @@ bool scenery_is_invented(uint16 sceneryItem)
return invented;
}
static void scenery_set_invented(uint16 sceneryItem)
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)
void scenery_set_not_invented(uint16 sceneryItem)
{
sint32 quadIndex = sceneryItem >> 5;
sint32 bitIndex = sceneryItem & 0x1F;
@ -762,16 +760,24 @@ void set_all_scenery_items_invented()
}
}
void set_every_ride_type_invented()
{
Memory::Set(_researchedRideTypes, true, sizeof(_researchedRideTypes));
}
void set_every_ride_type_not_invented()
{
Memory::Set(_researchedRideTypes, false, sizeof(_researchedRideTypes));
}
void set_every_ride_entry_invented()
{
Memory::Set(gResearchedRideTypes, true, sizeof(gResearchedRideTypes));
Memory::Set(gResearchedRideEntries, true, sizeof(gResearchedRideEntries));
Memory::Set(_researchedRideEntries, true, sizeof(_researchedRideEntries));
}
void set_every_ride_entry_not_invented()
{
Memory::Set(gResearchedRideTypes, false, sizeof(gResearchedRideTypes));
Memory::Set(gResearchedRideEntries, false, sizeof(gResearchedRideEntries));
Memory::Set(_researchedRideEntries, false, sizeof(_researchedRideEntries));
}
/**

View File

@ -110,8 +110,6 @@ extern rct_research_item gResearchNextItem;
extern rct_research_item gResearchItems[MAX_RESEARCH_ITEMS];
extern uint8 gResearchUncompletedCategories;
extern bool gResearchedRideTypes[RIDE_TYPE_COUNT];
extern bool gResearchedRideEntries[MAX_RIDE_OBJECTS];
extern uint32 gResearchedSceneryItems[MAX_RESEARCHED_SCENERY_ITEMS];
extern bool gSilentResearch;
@ -132,12 +130,18 @@ void research_remove(rct_research_item * researchItem);
void research_insert_ride_entry(uint8 entryIndex, bool researched);
void research_insert_scenery_group_entry(uint8 entryIndex, bool researched);
void ride_type_set_invented(sint32 rideType);
void ride_entry_set_invented(sint32 rideEntryIndex);
void scenery_set_invented(uint16 sceneryItem);
void scenery_set_not_invented(uint16 sceneryItem);
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);
bool scenery_is_invented(uint16 sceneryItem);
void set_all_scenery_items_invented();
void set_every_ride_type_invented();
void set_every_ride_type_not_invented();
void set_every_ride_entry_invented();
void set_every_ride_entry_not_invented();
rct_string_id research_item_get_name(rct_research_item * researchItem);

View File

@ -700,7 +700,7 @@ public:
void ImportResearchedRideTypes()
{
Memory::Set(gResearchedRideTypes, false, sizeof(gResearchedRideTypes));
set_every_ride_type_not_invented();
for (sint32 rideType = 0; rideType < RIDE_TYPE_COUNT; rideType++)
{
@ -708,13 +708,13 @@ public:
sint32 bitIndex = rideType & 0x1F;
bool invented = (_s6.researched_ride_types[quadIndex] & ((uint32) 1 << bitIndex));
gResearchedRideTypes[rideType] = invented;
ride_type_set_invented(rideType);
}
}
void ImportResearchedRideEntries()
{
Memory::Set(gResearchedRideEntries, false, sizeof(gResearchedRideEntries));
set_every_ride_entry_not_invented();
for (sint32 rideEntryIndex = 0; rideEntryIndex < MAX_RIDE_OBJECTS; rideEntryIndex++)
{
@ -722,7 +722,7 @@ public:
sint32 bitIndex = rideEntryIndex & 0x1F;
bool invented = (_s6.researched_ride_entries[quadIndex] & ((uint32) 1 << bitIndex));
gResearchedRideEntries[rideEntryIndex] = invented;
ride_entry_set_invented(rideEntryIndex);
}
}

View File

@ -109,7 +109,7 @@ void park_init()
research_reset_items();
finance_init();
Memory::Set(gResearchedRideTypes, false, sizeof(gResearchedRideTypes));
set_every_ride_type_not_invented();
set_all_scenery_items_invented();