mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-17 12:03:07 +01:00
add global for gResearchedSceneryItems
This commit is contained in:
@@ -330,6 +330,7 @@
|
||||
#define RCT2_ADDRESS_HANDYMAN_COLOUR 0x01357BCD
|
||||
#define RCT2_ADDRESS_MECHANIC_COLOUR 0x01357BCE
|
||||
#define RCT2_ADDRESS_SECURITY_COLOUR 0x01357BCF
|
||||
#define RCT2_ADDRESS_RESEARCHED_SCENERY_ITEMS 0x01357BD0
|
||||
|
||||
#define RCT2_ADDRESS_ACTIVE_RESEARCH_TYPES 0x01357CF2
|
||||
#define RCT2_ADDRESS_RESEARH_PROGRESS_STAGE 0x01357CF3
|
||||
|
||||
@@ -42,6 +42,7 @@ uint32 *gResearchedRideTypes = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_RIDE_TYPES,
|
||||
uint32 *gResearchedRideEntries = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_RIDE_ENTRIES, uint32);
|
||||
uint32 *gResearchedTrackTypesA = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_TRACK_TYPES_A, uint32);
|
||||
uint32 *gResearchedTrackTypesB = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_TRACK_TYPES_B, uint32);
|
||||
uint32 *gResearchedSceneryItems = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_SCENERY_ITEMS, uint32);
|
||||
|
||||
bool gSilentResearch = false;
|
||||
|
||||
@@ -223,7 +224,7 @@ void research_finish_item(sint32 entryIndex)
|
||||
scenerySetEntry = g_scenerySetEntries[entryIndex & 0xFFFF];
|
||||
for (i = 0; i < scenerySetEntry->entry_count; i++) {
|
||||
subSceneryEntryIndex = scenerySetEntry->scenery_entries[i];
|
||||
RCT2_ADDRESS(0x01357BD0, sint32)[subSceneryEntryIndex >> 5] |= 1u << (subSceneryEntryIndex & 0x1F);
|
||||
gResearchedSceneryItems[subSceneryEntryIndex >> 5] |= 1UL << (subSceneryEntryIndex & 0x1F);
|
||||
}
|
||||
|
||||
// I don't think 0x009AC06C is ever not 0, so probably redundant
|
||||
@@ -324,8 +325,8 @@ void sub_684AC3(){
|
||||
gResearchedRideEntries[i] = 0;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 56; i++){
|
||||
RCT2_ADDRESS(0x01357BD0, uint32)[i] = -1;
|
||||
for (int i = 0; i < 56; i++) {
|
||||
gResearchedSceneryItems[i] = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 19; ++i){
|
||||
@@ -334,7 +335,7 @@ void sub_684AC3(){
|
||||
|
||||
for (int j = 0; j < scenery_set->entry_count; ++j){
|
||||
uint8 value = scenery_set->scenery_entries[j] & 0x1F;
|
||||
RCT2_ADDRESS(0x01357BD0, uint32)[scenery_set->scenery_entries[j] >> 5] &= ~(1u << value);
|
||||
gResearchedSceneryItems[scenery_set->scenery_entries[j] >> 5] &= ~(1UL << value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -78,6 +78,7 @@ extern uint32 *gResearchedRideTypes;
|
||||
extern uint32 *gResearchedRideEntries;
|
||||
extern uint32 *gResearchedTrackTypesA;
|
||||
extern uint32 *gResearchedTrackTypesB;
|
||||
extern uint32 *gResearchedSceneryItems;
|
||||
extern bool gSilentResearch;
|
||||
|
||||
void research_reset_items();
|
||||
|
||||
@@ -289,7 +289,7 @@ void S6Exporter::Export()
|
||||
_s6.mechanic_colour = gStaffMechanicColour;
|
||||
_s6.security_colour = gStaffSecurityColour;
|
||||
|
||||
memcpy(_s6.dword_01357BD0, RCT2_ADDRESS(0x01357BD0, uint32), sizeof(_s6.dword_01357BD0));
|
||||
memcpy(_s6.researched_scenery_items, gResearchedSceneryItems, sizeof(_s6.researched_scenery_items));
|
||||
|
||||
_s6.park_rating = gParkRating;
|
||||
|
||||
|
||||
@@ -221,7 +221,7 @@ void S6Importer::Import()
|
||||
gStaffMechanicColour = _s6.mechanic_colour;
|
||||
gStaffSecurityColour = _s6.security_colour;
|
||||
|
||||
memcpy(RCT2_ADDRESS(0x01357BD0, uint32), _s6.dword_01357BD0, sizeof(_s6.dword_01357BD0));
|
||||
memcpy(gResearchedSceneryItems, _s6.researched_scenery_items, sizeof(_s6.researched_scenery_items));
|
||||
|
||||
gParkRating = _s6.park_rating;
|
||||
|
||||
|
||||
@@ -176,7 +176,7 @@ typedef struct {
|
||||
uint8 security_colour;
|
||||
|
||||
// Ignored in scenario
|
||||
uint32 dword_01357BD0[56];
|
||||
uint32 researched_scenery_items[56];
|
||||
|
||||
// SC6[9]
|
||||
uint16 park_rating;
|
||||
|
||||
@@ -160,8 +160,9 @@ void window_editor_bottom_toolbar_jump_back_to_object_selection() {
|
||||
*/
|
||||
static void sub_6DFED0()
|
||||
{
|
||||
for (int i = 0; i < 56; i++)
|
||||
RCT2_ADDRESS(0x01357BD0, sint32)[i] = -1;
|
||||
for (int i = 0; i < 56; i++) {
|
||||
gResearchedSceneryItems[i] = 0xFFFFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -185,8 +185,9 @@ void window_scenery_update_scroll(rct_window *w);
|
||||
* Was part of 0x006DFA00
|
||||
* The same code repeated five times for every scenery entry type
|
||||
*/
|
||||
void init_scenery_entry(rct_scenery_entry *sceneryEntry, int index, uint8 sceneryTabId) {
|
||||
if (RCT2_ADDRESS(0x01357BD0, sint32)[index >> 5] & (1u << (index & 0x1F))) {
|
||||
void init_scenery_entry(rct_scenery_entry *sceneryEntry, int index, uint8 sceneryTabId)
|
||||
{
|
||||
if (gResearchedSceneryItems[index >> 5] & (1UL << (index & 0x1F))) {
|
||||
if (sceneryTabId != 0xFF) {
|
||||
for (int i = 0; i < SCENERY_ENTRIES_BY_TAB; i++) {
|
||||
if (window_scenery_tab_entries[sceneryTabId][i] == -1)
|
||||
@@ -243,7 +244,7 @@ void init_scenery()
|
||||
|
||||
for (int i = 0; i < scenerySetEntry->entry_count; i++) {
|
||||
uint16 sceneryEntryId = scenerySetEntry->scenery_entries[i];
|
||||
uint32 ecx = RCT2_ADDRESS(0x01357BD0, uint32)[sceneryEntryId >> 5];
|
||||
uint32 ecx = gResearchedSceneryItems[sceneryEntryId >> 5];
|
||||
uint32 edx = 1u << (sceneryEntryId & 0x1F);
|
||||
if (ecx & edx) {
|
||||
window_scenery_tab_entries[scenerySetIndex][sceneryTabEntryCount] = sceneryEntryId;
|
||||
|
||||
@@ -100,8 +100,9 @@ void park_init()
|
||||
for (i = 0; i < 2; i++)
|
||||
gResearchedRideTypes[i] = 0;
|
||||
|
||||
for (i = 0; i < 56; i++)
|
||||
RCT2_ADDRESS(0x01357BD0, sint32)[i] = -1;
|
||||
for (i = 0; i < 56; i++) {
|
||||
gResearchedSceneryItems[i] = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
gParkEntranceFee = MONEY(10, 00);
|
||||
gPeepSpawns[0].x = UINT16_MAX;
|
||||
|
||||
Reference in New Issue
Block a user