mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-29 09:44:52 +01:00
clean up init_scenery a bit
This commit is contained in:
@@ -643,3 +643,11 @@ static void ride_entry_set_invented(int rideEntryIndex)
|
||||
int bitIndex = rideEntryIndex & 0x1F;
|
||||
gResearchedRideEntries[quadIndex] |= 1 << bitIndex;
|
||||
}
|
||||
|
||||
bool scenery_is_invented(uint16 sceneryItem)
|
||||
{
|
||||
int quadIndex = sceneryItem >> 5;
|
||||
int bitIndex = sceneryItem & 0x1F;
|
||||
bool invented = (gResearchedSceneryItems[quadIndex] & ((uint32)1 << bitIndex));
|
||||
return invented;
|
||||
}
|
||||
|
||||
@@ -105,5 +105,6 @@ void research_insert_scenery_group_entry(uint8 entryIndex, bool researched);
|
||||
bool ride_type_is_invented(int rideType);
|
||||
bool ride_entry_is_invented(int rideEntryIndex);
|
||||
bool track_type_is_invented(uint8 rideType, int trackType);
|
||||
bool scenery_is_invented(uint16 sceneryItem);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -187,7 +187,7 @@ void window_scenery_update_scroll(rct_window *w);
|
||||
*/
|
||||
void init_scenery_entry(rct_scenery_entry *sceneryEntry, int index, uint8 sceneryTabId)
|
||||
{
|
||||
if (gResearchedSceneryItems[index >> 5] & (1UL << (index & 0x1F))) {
|
||||
if (scenery_is_invented(index)) {
|
||||
if (sceneryTabId != 0xFF) {
|
||||
for (int i = 0; i < SCENERY_ENTRIES_BY_TAB; i++) {
|
||||
if (window_scenery_tab_entries[sceneryTabId][i] == -1)
|
||||
@@ -199,7 +199,7 @@ void init_scenery_entry(rct_scenery_entry *sceneryEntry, int index, uint8 scener
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 0x13; i++) {
|
||||
for (int i = 0; i < 19; i++) {
|
||||
int counter = 0;
|
||||
|
||||
while (window_scenery_tab_entries[i][counter] != -1)
|
||||
@@ -213,10 +213,10 @@ void init_scenery_entry(rct_scenery_entry *sceneryEntry, int index, uint8 scener
|
||||
}
|
||||
|
||||
for (int i = 0; i < SCENERY_ENTRIES_BY_TAB; i++) {
|
||||
if (window_scenery_tab_entries[0x13][i] == -1)
|
||||
if (window_scenery_tab_entries[19][i] == -1)
|
||||
{
|
||||
window_scenery_tab_entries[0x13][i] = index;
|
||||
window_scenery_tab_entries[0x13][i + 1] = -1;
|
||||
window_scenery_tab_entries[19][i] = index;
|
||||
window_scenery_tab_entries[19][i + 1] = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -229,24 +229,21 @@ void init_scenery_entry(rct_scenery_entry *sceneryEntry, int index, uint8 scener
|
||||
*/
|
||||
void init_scenery()
|
||||
{
|
||||
bool enabledScenerySets[0x14] = { false };
|
||||
bool enabledScenerySets[20] = { false };
|
||||
|
||||
for (int scenerySetIndex = 0; scenerySetIndex < 0x14; scenerySetIndex++) {
|
||||
for (int scenerySetIndex = 0; scenerySetIndex < 20; scenerySetIndex++) {
|
||||
window_scenery_tab_entries[scenerySetIndex][0] = -1;
|
||||
if (scenerySetIndex == 0x13)
|
||||
if (scenerySetIndex == 19)
|
||||
continue;
|
||||
|
||||
rct_scenery_set_entry* scenerySetEntry = get_scenery_group_entry(scenerySetIndex);
|
||||
if ((uint32)scenerySetEntry == 0xFFFFFFFF)
|
||||
if (scenerySetEntry == (rct_scenery_set_entry *)-1)
|
||||
continue;
|
||||
|
||||
int sceneryTabEntryCount = 0;
|
||||
|
||||
for (int i = 0; i < scenerySetEntry->entry_count; i++) {
|
||||
uint16 sceneryEntryId = scenerySetEntry->scenery_entries[i];
|
||||
uint32 ecx = gResearchedSceneryItems[sceneryEntryId >> 5];
|
||||
uint32 edx = 1u << (sceneryEntryId & 0x1F);
|
||||
if (ecx & edx) {
|
||||
if (scenery_is_invented(sceneryEntryId)) {
|
||||
window_scenery_tab_entries[scenerySetIndex][sceneryTabEntryCount] = sceneryEntryId;
|
||||
window_scenery_tab_entries[scenerySetIndex][++sceneryTabEntryCount] = -1;
|
||||
} else {
|
||||
@@ -257,7 +254,7 @@ void init_scenery()
|
||||
|
||||
// small scenery
|
||||
for (uint16 sceneryId = 0; sceneryId < 0xFC; sceneryId++) {
|
||||
if ((uint32)get_small_scenery_entry(sceneryId) == 0xFFFFFFFF)
|
||||
if (get_small_scenery_entry(sceneryId) == (rct_scenery_entry *)-1)
|
||||
continue;
|
||||
|
||||
rct_scenery_entry* sceneryEntry = get_small_scenery_entry(sceneryId);
|
||||
@@ -268,7 +265,7 @@ void init_scenery()
|
||||
for (int sceneryId = 0x300; sceneryId < 0x380; sceneryId++) {
|
||||
int largeSceneryIndex = sceneryId - 0x300;
|
||||
|
||||
if ((uint32)get_large_scenery_entry(largeSceneryIndex) == 0xFFFFFFFF)
|
||||
if (get_large_scenery_entry(largeSceneryIndex) == (rct_scenery_entry *)-1)
|
||||
continue;
|
||||
|
||||
rct_scenery_entry* sceneryEntry = get_large_scenery_entry(largeSceneryIndex);
|
||||
@@ -279,7 +276,7 @@ void init_scenery()
|
||||
for (int sceneryId = 0x200; sceneryId < 0x280; sceneryId++) {
|
||||
int wallSceneryIndex = sceneryId - 0x200;
|
||||
|
||||
if ((uint32)get_wall_entry(wallSceneryIndex) == 0xFFFFFFFF)
|
||||
if (get_wall_entry(wallSceneryIndex) == (rct_scenery_entry *)-1)
|
||||
continue;
|
||||
|
||||
rct_scenery_entry* sceneryEntry = get_wall_entry(wallSceneryIndex);
|
||||
@@ -290,7 +287,7 @@ void init_scenery()
|
||||
for (int sceneryId = 0x400; sceneryId < 0x420; sceneryId++) {
|
||||
int bannerIndex = sceneryId - 0x400;
|
||||
|
||||
if ((uint32)get_banner_entry(bannerIndex) == 0xFFFFFFFF)
|
||||
if (get_banner_entry(bannerIndex) == (rct_scenery_entry *)-1)
|
||||
continue;
|
||||
|
||||
rct_scenery_entry* sceneryEntry = get_banner_entry(bannerIndex);
|
||||
@@ -301,7 +298,7 @@ void init_scenery()
|
||||
for (int sceneryId = 0x100; sceneryId < 0x10F; sceneryId++) {
|
||||
int pathBitIndex = sceneryId - 0x100;
|
||||
|
||||
if ((uint32)get_footpath_item_entry(pathBitIndex) == 0xFFFFFFFF)
|
||||
if (get_footpath_item_entry(pathBitIndex) == (rct_scenery_entry *)-1)
|
||||
continue;
|
||||
|
||||
rct_scenery_entry* sceneryEntry = get_footpath_item_entry(pathBitIndex);
|
||||
@@ -317,7 +314,7 @@ void init_scenery()
|
||||
|
||||
for (int scenerySetId = 0; scenerySetId < 19; scenerySetId++) {
|
||||
rct_scenery_set_entry* sceneryEntry = get_scenery_group_entry(scenerySetId);
|
||||
if ((uint32)sceneryEntry == 0xFFFFFFFF)
|
||||
if (sceneryEntry == (rct_scenery_set_entry *)-1)
|
||||
continue;
|
||||
|
||||
tabIndexes[usedValues] = scenerySetId;
|
||||
|
||||
Reference in New Issue
Block a user