1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-27 00:34:46 +01:00

Use constants for max sprites and spatial index (#10983)

This commit is contained in:
Michael Steenbeek
2020-03-20 20:16:38 +01:00
committed by GitHub
parent c519512cfe
commit ef1906d452
4 changed files with 12 additions and 12 deletions

View File

@@ -2726,7 +2726,7 @@ bool Network::LoadMap(IStream* stream)
[[maybe_unused]] uint32_t checksum = stream->ReadValue<uint32_t>();
// Read other data not in normal save files
stream->Read(gSpriteSpatialIndex, 0x10001 * sizeof(uint16_t));
stream->Read(gSpriteSpatialIndex, SPATIAL_INDEX_SIZE * sizeof(uint16_t));
gGamePaused = stream->ReadValue<uint32_t>();
_guestGenerationProbability = stream->ReadValue<uint32_t>();
_suggestedGuestMaximum = stream->ReadValue<uint32_t>();
@@ -2775,7 +2775,7 @@ bool Network::SaveMap(IStream* stream, const std::vector<const ObjectRepositoryI
s6exporter->SaveGame(stream);
// Write other data not in normal save files
stream->Write(gSpriteSpatialIndex, 0x10001 * sizeof(uint16_t));
stream->Write(gSpriteSpatialIndex, SPATIAL_INDEX_SIZE * sizeof(uint16_t));
stream->WriteValue<uint32_t>(gGamePaused);
stream->WriteValue<uint32_t>(_guestGenerationProbability);
stream->WriteValue<uint32_t>(_suggestedGuestMaximum);

View File

@@ -112,8 +112,8 @@ struct rct_s6_data
// SC6[6]
uint32_t next_free_tile_element_pointer_index;
RCT2Sprite sprites[RCT2_MAX_SPRITES];
uint16_t sprite_lists_head[6];
uint16_t sprite_lists_count[6];
uint16_t sprite_lists_head[SPRITE_LIST_COUNT];
uint16_t sprite_lists_count[SPRITE_LIST_COUNT];
rct_string_id park_name;
uint8_t pad_013573D6[2];
uint32_t park_name_args;

View File

@@ -31,9 +31,7 @@ static rct_sprite _spriteList[MAX_SPRITES];
static bool _spriteFlashingList[MAX_SPRITES];
#define SPATIAL_INDEX_LOCATION_NULL 0x10000
uint16_t gSpriteSpatialIndex[0x10001];
uint16_t gSpriteSpatialIndex[SPATIAL_INDEX_SIZE];
const rct_string_id litterNames[12] = { STR_LITTER_VOMIT,
STR_LITTER_VOMIT,
@@ -202,7 +200,7 @@ void reset_sprite_spatial_index()
if (spr->generic.sprite_identifier != SPRITE_IDENTIFIER_NULL)
{
size_t index = GetSpatialIndexOffset(spr->generic.x, spr->generic.y);
uint16_t nextSpriteId = gSpriteSpatialIndex[index];
uint32_t nextSpriteId = gSpriteSpatialIndex[index];
gSpriteSpatialIndex[index] = spr->generic.sprite_index;
spr->generic.next_in_quadrant = nextSpriteId;
}
@@ -1121,7 +1119,7 @@ int32_t fix_disjoint_sprites()
int32_t check_for_spatial_index_cycles(bool fix)
{
for (int32_t i = 0; i < SPATIAL_INDEX_LOCATION_NULL; i++)
for (uint32_t i = 0; i < SPATIAL_INDEX_LOCATION_NULL; i++)
{
rct_sprite* cycle_start = find_sprite_quadrant_cycle(gSpriteSpatialIndex[i]);
if (cycle_start != nullptr)

View File

@@ -195,9 +195,11 @@ enum
rct_sprite* try_get_sprite(size_t spriteIndex);
rct_sprite* get_sprite(size_t sprite_idx);
extern uint16_t gSpriteListHead[6];
extern uint16_t gSpriteListCount[6];
extern uint16_t gSpriteSpatialIndex[0x10001];
extern uint16_t gSpriteListHead[SPRITE_LIST_COUNT];
extern uint16_t gSpriteListCount[SPRITE_LIST_COUNT];
constexpr const uint32_t SPATIAL_INDEX_SIZE = (MAXIMUM_MAP_SIZE_TECHNICAL * MAXIMUM_MAP_SIZE_TECHNICAL) + 1;
constexpr const uint32_t SPATIAL_INDEX_LOCATION_NULL = SPATIAL_INDEX_SIZE - 1;
extern uint16_t gSpriteSpatialIndex[SPATIAL_INDEX_SIZE];
extern const rct_string_id litterNames[12];