mirror of https://github.com/OpenRCT2/OpenRCT2.git
Refactor ResearchItem Type to an enum class (#12346)
* Change type of ResearchItem.type to enum class This is to prevent any future issues caused by confusion as to what the type is and further improves the codebase. * Specifiy a size for the type Also remove the static cast where not required * Apply review comments
This commit is contained in:
parent
4416565e47
commit
4a235e3bb6
|
@ -581,7 +581,7 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo
|
|||
|
||||
// Preview image
|
||||
int32_t objectEntryType = OBJECT_TYPE_SCENERY_GROUP;
|
||||
if (researchItem->type == RESEARCH_ENTRY_TYPE_RIDE)
|
||||
if (researchItem->type == Research::EntryType::Ride)
|
||||
objectEntryType = OBJECT_TYPE_RIDE;
|
||||
|
||||
auto chunk = object_entry_get_chunk(objectEntryType, researchItem->entryIndex);
|
||||
|
@ -688,7 +688,7 @@ static void window_editor_inventions_list_scrollpaint(rct_window* w, rct_drawpix
|
|||
|
||||
rct_string_id itemNameId = researchItem.GetName();
|
||||
|
||||
if (researchItem.type == RESEARCH_ENTRY_TYPE_RIDE
|
||||
if (researchItem.type == Research::EntryType::Ride
|
||||
&& !RideTypeDescriptors[researchItem.baseRideType].HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY))
|
||||
{
|
||||
const auto rideEntry = get_ride_entry(researchItem.entryIndex);
|
||||
|
@ -734,7 +734,7 @@ static void window_editor_inventions_list_drag_open(ResearchItem* researchItem)
|
|||
rct_string_id stringId = researchItem->GetName();
|
||||
|
||||
ptr = buffer;
|
||||
if (researchItem->type == RESEARCH_ENTRY_TYPE_RIDE
|
||||
if (researchItem->type == Research::EntryType::Ride
|
||||
&& !RideTypeDescriptors[researchItem->baseRideType].HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY))
|
||||
{
|
||||
const auto rideEntry = get_ride_entry(researchItem->entryIndex);
|
||||
|
@ -829,7 +829,7 @@ static rct_string_id window_editor_inventions_list_prepare_name(const ResearchIt
|
|||
rct_string_id stringId = researchItem->GetName();
|
||||
auto ft = Formatter::Common();
|
||||
|
||||
if (researchItem->type == RESEARCH_ENTRY_TYPE_RIDE
|
||||
if (researchItem->type == Research::EntryType::Ride
|
||||
&& !RideTypeDescriptors[researchItem->baseRideType].HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY))
|
||||
{
|
||||
drawString = withGap ? STR_INVENTIONS_LIST_RIDE_AND_VEHICLE_NAME_DRAG : STR_WINDOW_COLOUR_2_STRINGID_STRINGID;
|
||||
|
|
|
@ -773,10 +773,10 @@ static void window_new_ride_invalidate(rct_window* w)
|
|||
window_new_ride_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].type = WWT_EMPTY;
|
||||
if (gResearchLastItem.has_value())
|
||||
{
|
||||
uint8_t type = gResearchLastItem->type;
|
||||
auto type = gResearchLastItem->type;
|
||||
window_new_ride_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].type = WWT_FLATBTN;
|
||||
window_new_ride_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].image = (type == RESEARCH_ENTRY_TYPE_RIDE) ? SPR_NEW_RIDE
|
||||
: SPR_NEW_SCENERY;
|
||||
window_new_ride_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].image = (type == Research::EntryType::Ride) ? SPR_NEW_RIDE
|
||||
: SPR_NEW_SCENERY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -316,9 +316,9 @@ static void window_research_development_invalidate(rct_window* w)
|
|||
window_research_development_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].type = WWT_EMPTY;
|
||||
if (gResearchLastItem.has_value())
|
||||
{
|
||||
uint8_t type = gResearchLastItem->type;
|
||||
auto type = gResearchLastItem->type;
|
||||
window_research_development_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].type = WWT_FLATBTN;
|
||||
window_research_development_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].image = type == RESEARCH_ENTRY_TYPE_RIDE
|
||||
window_research_development_widgets[WIDX_LAST_DEVELOPMENT_BUTTON].image = type == Research::EntryType::Ride
|
||||
? SPR_NEW_RIDE
|
||||
: SPR_NEW_SCENERY;
|
||||
}
|
||||
|
@ -370,7 +370,7 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp
|
|||
if (gResearchProgressStage != RESEARCH_STAGE_DESIGNING)
|
||||
{
|
||||
strings[0] = gResearchNextItem->GetName();
|
||||
if (gResearchNextItem->type == RESEARCH_ENTRY_TYPE_RIDE)
|
||||
if (gResearchNextItem->type == Research::EntryType::Ride)
|
||||
{
|
||||
auto rtd = RideTypeDescriptors[gResearchNextItem->baseRideType];
|
||||
if (!rtd.HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY))
|
||||
|
@ -419,8 +419,8 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp
|
|||
{
|
||||
rct_string_id lastDevelopmentFormat = STR_EMPTY;
|
||||
std::array<rct_string_id, 2> strings = { gResearchLastItem->GetName(), 0 };
|
||||
uint8_t type = gResearchLastItem->type;
|
||||
if (type == RESEARCH_ENTRY_TYPE_SCENERY)
|
||||
auto type = gResearchLastItem->type;
|
||||
if (type == Research::EntryType::Scenery)
|
||||
{
|
||||
lastDevelopmentFormat = STR_RESEARCH_SCENERY_LABEL;
|
||||
}
|
||||
|
|
|
@ -296,7 +296,7 @@ static void remove_selected_objects_from_research(const rct_object_entry* instal
|
|||
for (auto rideType : rideEntry->ride_type)
|
||||
{
|
||||
ResearchItem tmp = {};
|
||||
tmp.type = RESEARCH_ENTRY_TYPE_RIDE;
|
||||
tmp.type = Research::EntryType::Ride;
|
||||
tmp.entryIndex = entry_index;
|
||||
tmp.baseRideType = rideType;
|
||||
research_remove(&tmp);
|
||||
|
@ -305,7 +305,7 @@ static void remove_selected_objects_from_research(const rct_object_entry* instal
|
|||
else if (entry_type == OBJECT_TYPE_SCENERY_GROUP)
|
||||
{
|
||||
ResearchItem tmp = {};
|
||||
tmp.type = RESEARCH_ENTRY_TYPE_SCENERY;
|
||||
tmp.type = Research::EntryType::Scenery;
|
||||
tmp.entryIndex = entry_index;
|
||||
research_remove(&tmp);
|
||||
}
|
||||
|
|
|
@ -374,7 +374,7 @@ void news_item_open_subject(int32_t type, int32_t subject)
|
|||
case NEWS_ITEM_RESEARCH:
|
||||
{
|
||||
auto item = ResearchItem(subject, 0, 0);
|
||||
if (item.type == RESEARCH_ENTRY_TYPE_RIDE)
|
||||
if (item.type == Research::EntryType::Ride)
|
||||
{
|
||||
auto intent = Intent(INTENT_ACTION_NEW_RIDE_OF_TYPE);
|
||||
intent.putExtra(INTENT_EXTRA_RIDE_TYPE, item.baseRideType);
|
||||
|
|
|
@ -191,7 +191,7 @@ void research_finish_item(ResearchItem* researchItem)
|
|||
gResearchLastItem = *researchItem;
|
||||
research_invalidate_related_windows();
|
||||
|
||||
if (researchItem->type == RESEARCH_ENTRY_TYPE_RIDE)
|
||||
if (researchItem->type == Research::EntryType::Ride)
|
||||
{
|
||||
// Ride
|
||||
uint32_t base_ride_type = researchItem->baseRideType;
|
||||
|
@ -493,7 +493,7 @@ bool research_insert_ride_entry(uint8_t rideType, ObjectEntryIndex entryIndex, u
|
|||
{
|
||||
if (rideType != RIDE_TYPE_NULL && entryIndex != OBJECT_ENTRY_INDEX_NULL)
|
||||
{
|
||||
auto tmpItem = ResearchItem(RESEARCH_ENTRY_TYPE_RIDE, entryIndex, rideType, category, 0);
|
||||
auto tmpItem = ResearchItem(Research::EntryType::Ride, entryIndex, rideType, category, 0);
|
||||
research_insert(tmpItem, researched);
|
||||
return true;
|
||||
}
|
||||
|
@ -519,7 +519,7 @@ bool research_insert_scenery_group_entry(ObjectEntryIndex entryIndex, bool resea
|
|||
if (entryIndex != OBJECT_ENTRY_INDEX_NULL)
|
||||
{
|
||||
auto tmpItem = ResearchItem(
|
||||
RESEARCH_ENTRY_TYPE_SCENERY, entryIndex, RIDE_TYPE_NULL, RESEARCH_CATEGORY_SCENERY_GROUP, 0);
|
||||
Research::EntryType::Scenery, entryIndex, RIDE_TYPE_NULL, RESEARCH_CATEGORY_SCENERY_GROUP, 0);
|
||||
research_insert(tmpItem, researched);
|
||||
return true;
|
||||
}
|
||||
|
@ -683,7 +683,7 @@ void set_every_ride_entry_not_invented()
|
|||
*/
|
||||
rct_string_id ResearchItem::GetName() const
|
||||
{
|
||||
if (type == RESEARCH_ENTRY_TYPE_RIDE)
|
||||
if (type == Research::EntryType::Ride)
|
||||
{
|
||||
rct_ride_entry* rideEntry = get_ride_entry(entryIndex);
|
||||
if (rideEntry == nullptr)
|
||||
|
@ -733,7 +733,7 @@ void research_fix()
|
|||
for (auto it = gResearchItemsInvented.begin(); it != gResearchItemsInvented.end();)
|
||||
{
|
||||
auto& researchItem = *it;
|
||||
if (researchItem.type == RESEARCH_ENTRY_TYPE_RIDE)
|
||||
if (researchItem.type == Research::EntryType::Ride)
|
||||
{
|
||||
rct_ride_entry* rideEntry = get_ride_entry(researchItem.entryIndex);
|
||||
if (rideEntry == nullptr)
|
||||
|
@ -761,7 +761,7 @@ void research_fix()
|
|||
for (auto it = gResearchItemsUninvented.begin(); it != gResearchItemsUninvented.end();)
|
||||
{
|
||||
auto& researchItem = *it;
|
||||
if (researchItem.type == RESEARCH_ENTRY_TYPE_RIDE)
|
||||
if (researchItem.type == Research::EntryType::Ride)
|
||||
{
|
||||
rct_ride_entry* rideEntry = get_ride_entry(researchItem.entryIndex);
|
||||
if (rideEntry == nullptr)
|
||||
|
@ -897,7 +897,7 @@ static void research_update_first_of_type(ResearchItem* researchItem)
|
|||
if (researchItem->IsNull())
|
||||
return;
|
||||
|
||||
if (researchItem->type != RESEARCH_ENTRY_TYPE_RIDE)
|
||||
if (researchItem->type != Research::EntryType::Ride)
|
||||
return;
|
||||
|
||||
auto rideType = researchItem->baseRideType;
|
||||
|
@ -935,7 +935,7 @@ void research_determine_first_of_type()
|
|||
|
||||
for (const auto& researchItem : gResearchItemsInvented)
|
||||
{
|
||||
if (researchItem.type != RESEARCH_ENTRY_TYPE_RIDE)
|
||||
if (researchItem.type != Research::EntryType::Ride)
|
||||
continue;
|
||||
|
||||
auto rideType = researchItem.baseRideType;
|
||||
|
|
|
@ -17,11 +17,14 @@
|
|||
|
||||
struct rct_ride_entry;
|
||||
|
||||
enum
|
||||
namespace Research
|
||||
{
|
||||
RESEARCH_ENTRY_TYPE_SCENERY = 0,
|
||||
RESEARCH_ENTRY_TYPE_RIDE = 1,
|
||||
};
|
||||
enum class EntryType : uint8_t
|
||||
{
|
||||
Scenery = 0,
|
||||
Ride = 1,
|
||||
};
|
||||
}
|
||||
|
||||
enum
|
||||
{
|
||||
|
@ -39,7 +42,7 @@ struct ResearchItem
|
|||
{
|
||||
ObjectEntryIndex entryIndex;
|
||||
uint8_t baseRideType;
|
||||
uint8_t type; // 0: scenery entry, 1: ride entry
|
||||
Research::EntryType type; // 0: scenery entry, 1: ride entry
|
||||
};
|
||||
};
|
||||
uint8_t flags;
|
||||
|
@ -59,7 +62,8 @@ struct ResearchItem
|
|||
, category(_category)
|
||||
{
|
||||
}
|
||||
ResearchItem(uint8_t _type, ObjectEntryIndex _entryIndex, uint8_t _baseRideType, uint8_t _category, uint8_t _flags)
|
||||
ResearchItem(
|
||||
Research::EntryType _type, ObjectEntryIndex _entryIndex, uint8_t _baseRideType, uint8_t _category, uint8_t _flags)
|
||||
: entryIndex(_entryIndex)
|
||||
, baseRideType(_baseRideType)
|
||||
, type(_type)
|
||||
|
@ -79,7 +83,7 @@ struct ResearchItem
|
|||
{
|
||||
retItem.entryIndex = OpenRCT2EntryIndexToRCTEntryIndex(entryIndex);
|
||||
retItem.baseRideType = OpenRCT2RideTypeToRCT2RideType(baseRideType);
|
||||
retItem.type = type;
|
||||
retItem.type = static_cast<uint8_t>(type);
|
||||
retItem.flags = (flags & ~RESEARCH_ENTRY_FLAG_FIRST_OF_TYPE);
|
||||
retItem.category = category;
|
||||
}
|
||||
|
@ -103,7 +107,7 @@ struct ResearchItem
|
|||
auto* rideEntry = get_ride_entry(entryIndex);
|
||||
baseRideType = rideEntry != nullptr ? RCT2RideTypeToOpenRCT2RideType(oldResearchItem.type, rideEntry)
|
||||
: oldResearchItem.baseRideType;
|
||||
type = oldResearchItem.type;
|
||||
type = Research::EntryType{ oldResearchItem.type };
|
||||
flags = oldResearchItem.flags;
|
||||
category = oldResearchItem.category;
|
||||
}
|
||||
|
|
|
@ -2604,7 +2604,7 @@ private:
|
|||
auto rideType = ride_entry_get_first_non_null_ride_type(rideEntry);
|
||||
dst->entryIndex = entryIndex;
|
||||
dst->baseRideType = rideType;
|
||||
dst->type = RESEARCH_ENTRY_TYPE_RIDE;
|
||||
dst->type = Research::EntryType::Ride;
|
||||
dst->flags = 0;
|
||||
dst->category = RideTypeDescriptors[rideType].Category;
|
||||
}
|
||||
|
@ -2623,7 +2623,7 @@ private:
|
|||
auto rideType = ride_entry_get_first_non_null_ride_type(rideEntry);
|
||||
dst->entryIndex = entryIndex;
|
||||
dst->baseRideType = rideType;
|
||||
dst->type = RESEARCH_ENTRY_TYPE_RIDE;
|
||||
dst->type = Research::EntryType::Ride;
|
||||
dst->flags = 0;
|
||||
dst->category = RideTypeDescriptors[rideType].Category;
|
||||
}
|
||||
|
@ -2636,7 +2636,7 @@ private:
|
|||
if (entryIndex != OBJECT_ENTRY_INDEX_IGNORE && entryIndex != OBJECT_ENTRY_INDEX_NULL)
|
||||
{
|
||||
dst->entryIndex = entryIndex;
|
||||
dst->type = RESEARCH_ENTRY_TYPE_SCENERY;
|
||||
dst->type = Research::EntryType::Scenery;
|
||||
dst->category = RESEARCH_CATEGORY_SCENERY_GROUP;
|
||||
dst->flags = 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue