mirror of https://github.com/OpenRCT2/OpenRCT2.git
Use ResearchCategory Enum for ResearchItem
This commit is contained in:
parent
438b197b80
commit
19ab8f1211
|
@ -576,7 +576,7 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo
|
|||
|
||||
// Item category
|
||||
screenPos.x = w->windowPos.x + w->widgets[WIDX_RESEARCH_ORDER_SCROLL].right + 4;
|
||||
stringId = EditorInventionsResearchCategories[researchItem->category];
|
||||
stringId = EditorInventionsResearchCategories[EnumValue(researchItem->category)];
|
||||
gfx_draw_string_left(dpi, STR_INVENTION_RESEARCH_GROUP, &stringId, COLOUR_BLACK, screenPos);
|
||||
}
|
||||
|
||||
|
|
|
@ -1319,7 +1319,7 @@ static void editor_load_selected_objects()
|
|||
{
|
||||
rct_ride_entry* rideEntry = get_ride_entry(entryIndex);
|
||||
uint8_t rideType = ride_entry_get_first_non_null_ride_type(rideEntry);
|
||||
uint8_t category = RideTypeDescriptors[rideType].Category;
|
||||
ResearchCategory category = static_cast<ResearchCategory>(RideTypeDescriptors[rideType].Category);
|
||||
research_insert_ride_entry(rideType, entryIndex, category, true);
|
||||
}
|
||||
else if (objectType == OBJECT_TYPE_SCENERY_GROUP)
|
||||
|
|
|
@ -329,7 +329,7 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp
|
|||
rct_string_id label = STR_RESEARCH_TYPE_LABEL;
|
||||
if (gResearchProgressStage != RESEARCH_STAGE_INITIAL_RESEARCH)
|
||||
{
|
||||
strings[0] = ResearchCategoryNames[gResearchNextItem->category];
|
||||
strings[0] = ResearchCategoryNames[EnumValue(gResearchNextItem->category)];
|
||||
if (gResearchProgressStage != RESEARCH_STAGE_DESIGNING)
|
||||
{
|
||||
strings[0] = gResearchNextItem->GetName();
|
||||
|
|
|
@ -1087,7 +1087,7 @@ static int32_t cc_load_object(InteractiveConsole& console, const arguments_t& ar
|
|||
rideType = rideEntry->ride_type[j];
|
||||
if (rideType != RIDE_TYPE_NULL)
|
||||
{
|
||||
uint8_t category = RideTypeDescriptors[rideType].Category;
|
||||
ResearchCategory category = static_cast<ResearchCategory>(RideTypeDescriptors[rideType].Category);
|
||||
research_insert_ride_entry(rideType, groupIndex, category, true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -377,7 +377,7 @@ void News::OpenSubject(News::ItemType type, int32_t subject)
|
|||
break;
|
||||
case News::ItemType::Research:
|
||||
{
|
||||
auto item = ResearchItem(subject, 0, 0);
|
||||
auto item = ResearchItem(subject, ResearchCategory::Transport, 0);
|
||||
if (item.type == Research::EntryType::Ride)
|
||||
{
|
||||
auto intent = Intent(INTENT_ACTION_NEW_RIDE_OF_TYPE);
|
||||
|
|
|
@ -82,7 +82,7 @@ void research_update_uncompleted_types()
|
|||
|
||||
for (auto const& researchItem : gResearchItemsUninvented)
|
||||
{
|
||||
uncompletedResearchTypes |= (1 << researchItem.category);
|
||||
uncompletedResearchTypes |= EnumToFlag(researchItem.category);
|
||||
}
|
||||
|
||||
gResearchUncompletedCategories = uncompletedResearchTypes;
|
||||
|
@ -165,7 +165,7 @@ static void research_next_design()
|
|||
return;
|
||||
}
|
||||
}
|
||||
else if (ignoreActiveResearchTypes || (gResearchPriorities & (1 << researchItem.category)))
|
||||
else if (ignoreActiveResearchTypes || (gResearchPriorities & EnumToFlag(researchItem.category)))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -469,7 +469,7 @@ void research_populate_list_random()
|
|||
{
|
||||
if (rideType != RIDE_TYPE_NULL)
|
||||
{
|
||||
uint8_t category = RideTypeDescriptors[rideType].Category;
|
||||
ResearchCategory category = static_cast<ResearchCategory>(RideTypeDescriptors[rideType].Category);
|
||||
research_insert_ride_entry(rideType, i, category, researched);
|
||||
}
|
||||
}
|
||||
|
@ -489,7 +489,7 @@ void research_populate_list_random()
|
|||
}
|
||||
}
|
||||
|
||||
bool research_insert_ride_entry(uint8_t rideType, ObjectEntryIndex entryIndex, uint8_t category, bool researched)
|
||||
bool research_insert_ride_entry(uint8_t rideType, ObjectEntryIndex entryIndex, ResearchCategory category, bool researched)
|
||||
{
|
||||
if (rideType != RIDE_TYPE_NULL && entryIndex != OBJECT_ENTRY_INDEX_NULL)
|
||||
{
|
||||
|
@ -508,7 +508,7 @@ void research_insert_ride_entry(ObjectEntryIndex entryIndex, bool researched)
|
|||
{
|
||||
if (rideType != RIDE_TYPE_NULL)
|
||||
{
|
||||
uint8_t category = RideTypeDescriptors[rideType].Category;
|
||||
ResearchCategory category = static_cast<ResearchCategory>(RideTypeDescriptors[rideType].Category);
|
||||
research_insert_ride_entry(rideType, entryIndex, category, researched);
|
||||
}
|
||||
}
|
||||
|
@ -519,7 +519,7 @@ bool research_insert_scenery_group_entry(ObjectEntryIndex entryIndex, bool resea
|
|||
if (entryIndex != OBJECT_ENTRY_INDEX_NULL)
|
||||
{
|
||||
auto tmpItem = ResearchItem(
|
||||
Research::EntryType::Scenery, entryIndex, RIDE_TYPE_NULL, EnumValue(ResearchCategory::SceneryGroup), 0);
|
||||
Research::EntryType::Scenery, entryIndex, RIDE_TYPE_NULL, ResearchCategory::SceneryGroup, 0);
|
||||
research_insert(tmpItem, researched);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "../common.h"
|
||||
#include "../object/ObjectLimits.h"
|
||||
#include "../ride/Ride.h"
|
||||
#include "../util/Util.h"
|
||||
|
||||
#include <optional>
|
||||
|
||||
|
@ -33,6 +34,17 @@ enum
|
|||
RESEARCH_ENTRY_FLAG_RIDE_ALWAYS_RESEARCHED = (1 << 6),
|
||||
};
|
||||
|
||||
enum class ResearchCategory : uint8_t
|
||||
{
|
||||
Transport,
|
||||
Gentle,
|
||||
Rollercoaster,
|
||||
Thrill,
|
||||
Water,
|
||||
Shop,
|
||||
SceneryGroup
|
||||
};
|
||||
|
||||
struct ResearchItem
|
||||
{
|
||||
union
|
||||
|
@ -46,7 +58,7 @@ struct ResearchItem
|
|||
};
|
||||
};
|
||||
uint8_t flags;
|
||||
uint8_t category;
|
||||
ResearchCategory category;
|
||||
|
||||
bool IsNull() const;
|
||||
void SetNull();
|
||||
|
@ -56,14 +68,15 @@ struct ResearchItem
|
|||
rct_string_id GetName() const;
|
||||
|
||||
ResearchItem() = default;
|
||||
constexpr ResearchItem(uint32_t _rawValue, uint8_t _category, uint8_t _flags)
|
||||
constexpr ResearchItem(uint32_t _rawValue, ResearchCategory _category, uint8_t _flags)
|
||||
: rawValue(_rawValue)
|
||||
, flags(_flags)
|
||||
, category(_category)
|
||||
{
|
||||
}
|
||||
ResearchItem(
|
||||
Research::EntryType _type, ObjectEntryIndex _entryIndex, uint8_t _baseRideType, uint8_t _category, uint8_t _flags)
|
||||
Research::EntryType _type, ObjectEntryIndex _entryIndex, uint8_t _baseRideType, ResearchCategory _category,
|
||||
uint8_t _flags)
|
||||
: entryIndex(_entryIndex)
|
||||
, baseRideType(_baseRideType)
|
||||
, type(_type)
|
||||
|
@ -85,7 +98,7 @@ struct ResearchItem
|
|||
retItem.baseRideType = OpenRCT2RideTypeToRCT2RideType(baseRideType);
|
||||
retItem.type = static_cast<uint8_t>(type);
|
||||
retItem.flags = (flags & ~RESEARCH_ENTRY_FLAG_FIRST_OF_TYPE);
|
||||
retItem.category = category;
|
||||
retItem.category = EnumValue(category);
|
||||
}
|
||||
|
||||
return retItem;
|
||||
|
@ -98,7 +111,7 @@ struct ResearchItem
|
|||
{
|
||||
rawValue = 0;
|
||||
flags = 0;
|
||||
category = 0;
|
||||
category = ResearchCategory::Transport;
|
||||
SetNull();
|
||||
}
|
||||
else
|
||||
|
@ -109,7 +122,7 @@ struct ResearchItem
|
|||
: oldResearchItem.baseRideType;
|
||||
type = Research::EntryType{ oldResearchItem.type };
|
||||
flags = oldResearchItem.flags;
|
||||
category = oldResearchItem.category;
|
||||
category = static_cast<ResearchCategory>(oldResearchItem.category);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -138,17 +151,6 @@ enum
|
|||
RESEARCH_STAGE_FINISHED_ALL
|
||||
};
|
||||
|
||||
enum class ResearchCategory : uint8_t
|
||||
{
|
||||
Transport,
|
||||
Gentle,
|
||||
Rollercoaster,
|
||||
Thrill,
|
||||
Water,
|
||||
Shop,
|
||||
SceneryGroup
|
||||
};
|
||||
|
||||
extern uint8_t gResearchFundingLevel;
|
||||
extern uint8_t gResearchPriorities;
|
||||
extern uint16_t gResearchProgress;
|
||||
|
@ -173,7 +175,7 @@ void research_finish_item(ResearchItem* researchItem);
|
|||
void research_insert(ResearchItem item, bool researched);
|
||||
void research_remove(ResearchItem* researchItem);
|
||||
|
||||
bool research_insert_ride_entry(uint8_t rideType, ObjectEntryIndex entryIndex, uint8_t category, bool researched);
|
||||
bool research_insert_ride_entry(uint8_t rideType, ObjectEntryIndex entryIndex, ResearchCategory category, bool researched);
|
||||
void research_insert_ride_entry(ObjectEntryIndex entryIndex, bool researched);
|
||||
bool research_insert_scenery_group_entry(ObjectEntryIndex entryIndex, bool researched);
|
||||
|
||||
|
|
|
@ -2632,7 +2632,7 @@ private:
|
|||
dst->baseRideType = rideType;
|
||||
dst->type = Research::EntryType::Ride;
|
||||
dst->flags = 0;
|
||||
dst->category = RideTypeDescriptors[rideType].Category;
|
||||
dst->category = static_cast<ResearchCategory>(RideTypeDescriptors[rideType].Category);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2651,7 +2651,7 @@ private:
|
|||
dst->baseRideType = rideType;
|
||||
dst->type = Research::EntryType::Ride;
|
||||
dst->flags = 0;
|
||||
dst->category = RideTypeDescriptors[rideType].Category;
|
||||
dst->category = static_cast<ResearchCategory>(RideTypeDescriptors[rideType].Category);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2663,7 +2663,7 @@ private:
|
|||
{
|
||||
dst->entryIndex = entryIndex;
|
||||
dst->type = Research::EntryType::Scenery;
|
||||
dst->category = EnumValue(ResearchCategory::SceneryGroup);
|
||||
dst->category = ResearchCategory::SceneryGroup;
|
||||
dst->flags = 0;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue