Slight research refactor

This commit is contained in:
Gymnasiast 2018-01-28 16:14:00 +01:00 committed by Michael Steenbeek
parent c95702c469
commit e8b2a3df0d
8 changed files with 25 additions and 25 deletions

View File

@ -1255,10 +1255,10 @@ static void editor_load_selected_objects()
if (objectType == OBJECT_TYPE_RIDE) {
rct_ride_entry *rideEntry = get_ride_entry(entryIndex);
uint8 rideType = ride_entry_get_first_non_null_ride_type(rideEntry);
research_insert(1, 0x10000 | (rideType << 8) | entryIndex, rideEntry->category[0]);
research_insert(1, RESEARCH_ENTRY_RIDE_MASK | (rideType << 8) | entryIndex, rideEntry->category[0]);
}
else if (objectType == OBJECT_TYPE_SCENERY_GROUP) {
research_insert(1, entryIndex, RESEARCH_CATEGORY_SCENERYSET);
research_insert(1, entryIndex, RESEARCH_CATEGORY_SCENERY_GROUP);
}
}
}

View File

@ -217,7 +217,7 @@ static constexpr const rct_string_id ResearchCategoryNames[] = {
STR_RESEARCH_CATEGORY_THRILL,
STR_RESEARCH_CATEGORY_WATER,
STR_RESEARCH_CATEGORY_SHOP,
STR_RESEARCH_CATEGORY_SCENERYSET,
STR_RESEARCH_CATEGORY_SCENERY_GROUP,
};
static constexpr const rct_string_id ResearchStageNames[] = {

View File

@ -1164,7 +1164,7 @@ static sint32 cc_load_object(const utf8 **argv, sint32 argc) {
for (sint32 j = 0; j < MAX_RIDE_TYPES_PER_RIDE_ENTRY; j++) {
rideType = rideEntry->ride_type[j];
if (rideType != RIDE_TYPE_NULL)
research_insert(true, 0x10000 | (rideType << 8) | groupIndex, rideEntry->category[0]);
research_insert(true, RESEARCH_ENTRY_RIDE_MASK | (rideType << 8) | groupIndex, rideEntry->category[0]);
}
gSilentResearch = true;
@ -1172,7 +1172,7 @@ static sint32 cc_load_object(const utf8 **argv, sint32 argc) {
gSilentResearch = false;
}
else if (objectType == OBJECT_TYPE_SCENERY_GROUP) {
research_insert(true, groupIndex, RESEARCH_CATEGORY_SCENERYSET);
research_insert(true, groupIndex, RESEARCH_CATEGORY_SCENERY_GROUP);
gSilentResearch = true;
research_reset_current_item();

View File

@ -1713,7 +1713,7 @@ enum {
STR_RESEARCH_CATEGORY_THRILL = 2281,
STR_RESEARCH_CATEGORY_WATER = 2282,
STR_RESEARCH_CATEGORY_SHOP = 2283,
STR_RESEARCH_CATEGORY_SCENERYSET = 2284,
STR_RESEARCH_CATEGORY_SCENERY_GROUP = 2284,
STR_RESEARCH_STAGE_INITIAL_RESEARCH = 2285,
STR_RESEARCH_STAGE_DESIGNING = 2286,
STR_RESEARCH_STAGE_COMPLETING_DESIGN = 2287,

View File

@ -434,7 +434,7 @@ void research_reset_current_item()
*
* rct2: 0x006857FA
*/
static void research_insert_unresearched(sint32 entryIndex, sint32 category)
static void research_insert_unresearched(sint32 rawValue, sint32 category)
{
rct_research_item * researchItem, * researchItem2;
@ -452,19 +452,19 @@ static void research_insert_unresearched(sint32 entryIndex, sint32 category)
memmove(researchItem + 1, researchItem, (researchItem2 - researchItem + 1) * sizeof(rct_research_item));
// Place new item
researchItem->rawValue = entryIndex;
researchItem->category = category;
researchItem->rawValue = rawValue;
researchItem->category = category;
break;
}
}
while (entryIndex != (researchItem++)->rawValue);
while (rawValue != (researchItem++)->rawValue);
}
/**
*
* rct2: 0x00685826
*/
static void research_insert_researched(sint32 entryIndex, sint32 category)
static void research_insert_researched(sint32 rawValue, uint8 category)
{
rct_research_item * researchItem, * researchItem2;
@ -472,7 +472,7 @@ static void research_insert_researched(sint32 entryIndex, sint32 category)
// First check to make sure that entry is not already accounted for
for (; researchItem->rawValue != RESEARCHED_ITEMS_END; researchItem++)
{
if (researchItem->rawValue == entryIndex)
if ((researchItem->rawValue & 0xFFFFFF) == (rawValue & 0xFFFFFF))
{
return;
}
@ -491,12 +491,12 @@ static void research_insert_researched(sint32 entryIndex, sint32 category)
memmove(researchItem + 1, researchItem, (researchItem2 - researchItem + 1) * sizeof(rct_research_item));
// Place new item
researchItem->rawValue = entryIndex;
researchItem->category = category;
researchItem->rawValue = rawValue;
researchItem->category = category;
break;
}
}
while (entryIndex != (researchItem++)->rawValue);
while (rawValue != (researchItem++)->rawValue);
}
/**
@ -520,15 +520,15 @@ void research_remove(rct_research_item * researchItem)
}
}
void research_insert(sint32 researched, sint32 entryIndex, sint32 category)
void research_insert(sint32 researched, sint32 rawValue, uint8 category)
{
if (researched)
{
research_insert_researched(entryIndex, category);
research_insert_researched(rawValue, category);
}
else
{
research_insert_unresearched(entryIndex, category);
research_insert_unresearched(rawValue, category);
}
}
@ -567,7 +567,7 @@ void research_populate_list_random()
}
sint32 researched = (scenario_rand() & 0xFF) > 85;
research_insert(researched, i, RESEARCH_CATEGORY_SCENERYSET);
research_insert(researched, i, RESEARCH_CATEGORY_SCENERY_GROUP);
}
}
@ -600,7 +600,7 @@ void research_populate_list_researched()
continue;
}
research_insert(true, i, RESEARCH_CATEGORY_SCENERYSET);
research_insert(true, i, RESEARCH_CATEGORY_SCENERY_GROUP);
}
}
@ -665,7 +665,7 @@ void research_insert_ride_entry(uint8 entryIndex, bool researched)
void research_insert_scenery_group_entry(uint8 entryIndex, bool researched)
{
research_insert(researched, entryIndex, RESEARCH_CATEGORY_SCENERYSET);
research_insert(researched, entryIndex, RESEARCH_CATEGORY_SCENERY_GROUP);
}
bool ride_type_is_invented(sint32 rideType)

View File

@ -91,7 +91,7 @@ enum {
RESEARCH_CATEGORY_THRILL,
RESEARCH_CATEGORY_WATER,
RESEARCH_CATEGORY_SHOP,
RESEARCH_CATEGORY_SCENERYSET
RESEARCH_CATEGORY_SCENERY_GROUP
};
#ifdef __cplusplus
@ -123,7 +123,7 @@ void research_set_funding(sint32 amount);
void research_set_priority(sint32 activeCategories);
void game_command_set_research_funding(sint32* eax, sint32* ebx, sint32* ecx, sint32* edx, sint32* esi, sint32* edi, sint32* ebp);
void research_finish_item(rct_research_item * researchItem);
void research_insert(sint32 researched, sint32 entryIndex, sint32 category);
void research_insert(sint32 researched, sint32 rawValue, uint8 category);
void research_remove(rct_research_item * researchItem);
void research_insert_ride_entry(uint8 entryIndex, bool researched);

View File

@ -2066,7 +2066,7 @@ private:
}
if (_s4.research_priority & RCT1_RESEARCH_CATEGORY_SCENERY_THEMEING)
{
activeResearchTypes |= (1 << RESEARCH_CATEGORY_SCENERYSET);
activeResearchTypes |= (1 << RESEARCH_CATEGORY_SCENERY_GROUP);
}
gResearchPriorities = activeResearchTypes;
gResearchFundingLevel = _s4.research_level;

View File

@ -123,7 +123,7 @@ void park_init()
(1 << RESEARCH_CATEGORY_THRILL) |
(1 << RESEARCH_CATEGORY_WATER) |
(1 << RESEARCH_CATEGORY_SHOP) |
(1 << RESEARCH_CATEGORY_SCENERYSET);
(1 << RESEARCH_CATEGORY_SCENERY_GROUP);
gResearchFundingLevel = RESEARCH_FUNDING_NORMAL;
gGuestInitialCash = MONEY(50,00); // Cash per guest (average)