mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #6699 from IntelOrca/refactor/available-entertainers
Refactor entertainer invented logic
This commit is contained in:
commit
38024bbd0d
|
@ -33,6 +33,7 @@
|
|||
#define WINDOW_SCENERY_HEIGHT 180
|
||||
#define SCENERY_BUTTON_WIDTH 66
|
||||
#define SCENERY_BUTTON_HEIGHT 80
|
||||
#define SCENERY_WINDOW_TABS (MAX_SCENERY_GROUP_OBJECTS + 1) // The + 1 is for the 'Miscellaneous' tab
|
||||
|
||||
enum {
|
||||
WINDOW_SCENERY_TAB_1,
|
||||
|
@ -180,6 +181,9 @@ static rct_widget window_scenery_widgets[] = {
|
|||
|
||||
void window_scenery_update_scroll(rct_window *w);
|
||||
|
||||
// rct2: 0x00F64F2C
|
||||
static sint16 window_scenery_tab_entries[SCENERY_WINDOW_TABS][SCENERY_ENTRIES_BY_TAB + 1];
|
||||
|
||||
/**
|
||||
* Was part of 0x006DFA00
|
||||
* The same code repeated five times for every scenery entry type
|
||||
|
|
|
@ -817,6 +817,32 @@ bool scenery_is_invented(uint16 sceneryItem)
|
|||
return invented;
|
||||
}
|
||||
|
||||
bool scenery_group_is_invented(sint32 sgIndex)
|
||||
{
|
||||
auto invented = false;
|
||||
const auto sgEntry = get_scenery_group_entry(sgIndex);
|
||||
if (sgEntry != nullptr && sgEntry->entry_count > 0)
|
||||
{
|
||||
if (gCheatsIgnoreResearchStatus)
|
||||
{
|
||||
invented = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (auto i = 0; i < sgEntry->entry_count; i++)
|
||||
{
|
||||
auto sceneryEntryIndex = sgEntry->scenery_entries[i];
|
||||
if (scenery_is_invented(sceneryEntryIndex))
|
||||
{
|
||||
invented = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return invented;
|
||||
}
|
||||
|
||||
void reset_researched_scenery_items()
|
||||
{
|
||||
for (sint32 i = 0; i < MAX_RESEARCHED_SCENERY_ITEMS; i++)
|
||||
|
|
|
@ -118,6 +118,7 @@ void research_insert_scenery_group_entry(uint8 entryIndex, bool researched);
|
|||
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 reset_researched_scenery_items();
|
||||
void reset_researched_ride_types_and_entries();
|
||||
|
|
|
@ -1656,15 +1656,13 @@ bool staff_set_colour(uint8 staffType, colour_t value)
|
|||
|
||||
uint32 staff_get_available_entertainer_costumes()
|
||||
{
|
||||
init_scenery();
|
||||
|
||||
uint32 entertainerCostumes = 0;
|
||||
for (sint32 i = 0; i < MAX_SCENERY_GROUP_OBJECTS; i++)
|
||||
{
|
||||
if (window_scenery_tab_entries[i][0] != -1)
|
||||
if (scenery_group_is_invented(i))
|
||||
{
|
||||
rct_scenery_set_entry * scenery_entry = get_scenery_group_entry(i);
|
||||
entertainerCostumes |= scenery_entry->entertainer_costumes;
|
||||
const auto sgEntry = get_scenery_group_entry(i);
|
||||
entertainerCostumes |= sgEntry->entertainer_costumes;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -77,9 +77,6 @@ const rct_object_entry DefaultSelectedObjects[26] = {
|
|||
{ 0x00000087, { "SCGWATER" }, 0 } // Water Feature Theming
|
||||
};
|
||||
|
||||
// rct2: 0x00F64F2C
|
||||
sint16 window_scenery_tab_entries[SCENERY_WINDOW_TABS][SCENERY_ENTRIES_BY_TAB + 1];
|
||||
|
||||
void game_command_callback_pickup_guest(sint32 eax, sint32 ebx, sint32 ecx, sint32 edx, sint32 esi, sint32 edi, sint32 ebp)
|
||||
{
|
||||
switch (ecx)
|
||||
|
|
|
@ -32,8 +32,6 @@
|
|||
#define SCENERY_PATH_SCENERY_ID_MIN 0x100
|
||||
#define SCENERY_PATH_SCENERY_ID_MAX 0x10F
|
||||
|
||||
#define SCENERY_WINDOW_TABS 20 // (MAX_SCENERY_GROUP_OBJECTS + 1). The + 1 is for the 'Miscellaneous' tab
|
||||
|
||||
#pragma pack(push, 1)
|
||||
typedef struct rct_small_scenery_entry {
|
||||
uint32 flags; // 0x06
|
||||
|
@ -297,8 +295,6 @@ extern uint8 gSceneryGroundFlags;
|
|||
|
||||
extern const LocationXY8 ScenerySubTileOffsets[];
|
||||
|
||||
extern sint16 window_scenery_tab_entries[SCENERY_WINDOW_TABS][SCENERY_ENTRIES_BY_TAB + 1];
|
||||
|
||||
extern money32 gClearSceneryCost;
|
||||
|
||||
void init_scenery();
|
||||
|
|
Loading…
Reference in New Issue