mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-06 06:32:56 +01:00
fix severe regression from #2787, use object entry array instead of ride entry array
This commit is contained in:
@@ -51,6 +51,9 @@ typedef enum{
|
||||
OBJECT_SELECTION_FLAG_8 = (1 << 7),
|
||||
}OBJECT_SELECTION_FLAGS;
|
||||
|
||||
#define OBJECT_ENTRY_GROUP_COUNT 11
|
||||
#define OBJECT_ENTRY_COUNT 721
|
||||
|
||||
/**
|
||||
* Object entry structure.
|
||||
* size: 0x10
|
||||
@@ -92,6 +95,7 @@ typedef struct {
|
||||
} rct_object_filters;
|
||||
|
||||
extern rct_object_entry_group object_entry_groups[];
|
||||
extern void** gObjectList;
|
||||
extern char gTempObjectLoadName[9];
|
||||
|
||||
extern uint32 gInstalledObjectsCount;
|
||||
|
||||
@@ -32,8 +32,6 @@
|
||||
#include "world/scenery.h"
|
||||
#include "world/water.h"
|
||||
|
||||
#define OBJECT_ENTRY_GROUP_COUNT 11
|
||||
#define OBJECT_ENTRY_COUNT 721
|
||||
#define FILTER_VERSION 1
|
||||
|
||||
typedef struct {
|
||||
@@ -89,6 +87,8 @@ rct_object_entry_group object_entry_groups[] = {
|
||||
(uint8**)(RCT2_ADDRESS_SCENARIO_TEXT_ENTRIES ), (rct_object_entry_extended*)(0x00F3F03C + (720 * 20)) // scenario text 0x009ADAE4, 0xF4287C
|
||||
};
|
||||
|
||||
void **gObjectList = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_ENTRIES, void*);
|
||||
|
||||
static int object_list_cache_load(int totalFiles, uint64 totalFileSize, int fileDateModifiedChecksum);
|
||||
static int object_list_cache_save(int fileCount, uint64 totalFileSize, int fileDateModifiedChecksum, int currentItemOffset);
|
||||
|
||||
|
||||
@@ -786,8 +786,8 @@ int scenario_get_num_packed_objects_to_write()
|
||||
int i, count = 0;
|
||||
rct_object_entry_extended *entry = (rct_object_entry_extended*)0x00F3F03C;
|
||||
|
||||
for (i = 0; i < 721; i++, entry++) {
|
||||
if (get_ride_entry(i) == (void *)0xFFFFFFFF || (entry->flags & 0xF0))
|
||||
for (i = 0; i < OBJECT_ENTRY_COUNT; i++, entry++) {
|
||||
if (gObjectList[i] == (void *)0xFFFFFFFF || (entry->flags & 0xF0))
|
||||
continue;
|
||||
|
||||
count++;
|
||||
@@ -804,8 +804,8 @@ int scenario_write_packed_objects(SDL_RWops* rw)
|
||||
{
|
||||
int i;
|
||||
rct_object_entry_extended *entry = (rct_object_entry_extended*)0x00F3F03C;
|
||||
for (i = 0; i < 721; i++, entry++) {
|
||||
if (get_ride_entry(i) == (void *)0xFFFFFFFF || (entry->flags & 0xF0))
|
||||
for (i = 0; i < OBJECT_ENTRY_COUNT; i++, entry++) {
|
||||
if (gObjectList[i] == (void *)0xFFFFFFFF || (entry->flags & 0xF0))
|
||||
continue;
|
||||
|
||||
if (!write_object_file(rw, (rct_object_entry*)entry))
|
||||
@@ -844,8 +844,8 @@ int scenario_write_available_objects(FILE *file)
|
||||
// Write entries
|
||||
rct_object_entry_extended *srcEntry = (rct_object_entry_extended*)0x00F3F03C;
|
||||
rct_object_entry *dstEntry = (rct_object_entry*)buffer;
|
||||
for (i = 0; i < 721; i++) {
|
||||
if (get_ride_entry(i) == (void *)0xFFFFFFFF)
|
||||
for (i = 0; i < OBJECT_ENTRY_COUNT; i++) {
|
||||
if (gObjectList[i] == (void *)0xFFFFFFFF)
|
||||
memset(dstEntry, 0xFF, sizeof(rct_object_entry));
|
||||
else
|
||||
*dstEntry = *((rct_object_entry*)srcEntry);
|
||||
@@ -990,10 +990,10 @@ int scenario_save(SDL_RWops* rw, int flags)
|
||||
|
||||
memcpy(&s6->info, (rct_s6_info*)0x0141F570, sizeof(rct_s6_info));
|
||||
|
||||
for (int i = 0; i < 721; i++) {
|
||||
for (int i = 0; i < OBJECT_ENTRY_COUNT; i++) {
|
||||
rct_object_entry_extended *entry = &(RCT2_ADDRESS(0x00F3F03C, rct_object_entry_extended)[i]);
|
||||
|
||||
if (get_ride_entry(i) == (void *)0xFFFFFFFF) {
|
||||
if (gObjectList[i] == (void *)0xFFFFFFFF) {
|
||||
memset(&s6->objects[i], 0xFF, sizeof(rct_object_entry));
|
||||
} else {
|
||||
s6->objects[i] = *((rct_object_entry*)entry);
|
||||
@@ -1066,7 +1066,7 @@ int scenario_save_network(SDL_RWops* rw)
|
||||
for (int i = 0; i < 721; i++) {
|
||||
rct_object_entry_extended *entry = &(RCT2_ADDRESS(0x00F3F03C, rct_object_entry_extended)[i]);
|
||||
|
||||
if (get_ride_entry(i) == (void *)0xFFFFFFFF) {
|
||||
if (gObjectList[i] == (void *)0xFFFFFFFF) {
|
||||
memset(&s6->objects[i], 0xFF, sizeof(rct_object_entry));
|
||||
} else {
|
||||
s6->objects[i] = *((rct_object_entry*)entry);
|
||||
|
||||
@@ -1635,7 +1635,7 @@ static money32 map_set_land_height(int flags, int x, int y, int height, int styl
|
||||
if(map_element_get_type(mapElement) != MAP_ELEMENT_TYPE_TRACK)
|
||||
continue;
|
||||
int rideIndex = mapElement->properties.track.ride_index;
|
||||
int maxHeight = get_ride_entry(get_ride(rideIndex)->subtype)->max_height;
|
||||
int maxHeight = ride_get_entry(get_ride(rideIndex))->max_height;
|
||||
if(maxHeight == 0)
|
||||
maxHeight = RCT2_GLOBAL(0x97D218 + 8 * get_ride(rideIndex)->type, uint8);
|
||||
int zDelta = mapElement->clearance_height - height;
|
||||
|
||||
Reference in New Issue
Block a user