1
0
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:
Ted John
2016-05-11 19:18:59 +01:00
parent e45578771e
commit 0f1028c92c
9 changed files with 20 additions and 14 deletions

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;
}
}
/**

View File

@@ -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;

View File

@@ -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;