Move length calculation to ImageTable.cpp

This commit is contained in:
Ted John 2017-12-05 20:08:47 +00:00 committed by Gymnasiast
parent 32d588d765
commit f6fd79eca4
4 changed files with 9 additions and 5 deletions

View File

@ -379,7 +379,10 @@ bool gfx_load_csg()
{ {
_csg.elements[i].offset += (uintptr_t)_csg.data; _csg.elements[i].offset += (uintptr_t)_csg.data;
// RCT1 used zoomed offsets that counted from the beginning of the file, rather than from the current sprite. // RCT1 used zoomed offsets that counted from the beginning of the file, rather than from the current sprite.
_csg.elements[i].zoomed_offset = i - (SPR_CSG_BEGIN + _csg.elements[i].zoomed_offset); if (_csg.elements[i].zoomed_offset != 0)
{
_csg.elements[i].zoomed_offset = i - (SPR_CSG_BEGIN + _csg.elements[i].zoomed_offset);
}
} }
_csgLoaded = true; _csgLoaded = true;
return true; return true;

View File

@ -98,8 +98,9 @@ void ImageTable::Read(IReadObjectContext * context, IStream * stream)
} }
} }
void ImageTable::AddImage(const rct_g1_element * g1, size_t length) void ImageTable::AddImage(const rct_g1_element * g1)
{ {
auto length = g1_calculate_data_size(g1);
auto dstOffset = _dataSize; auto dstOffset = _dataSize;
_dataSize += length; _dataSize += length;
_data = Memory::Reallocate(_data, _dataSize); _data = Memory::Reallocate(_data, _dataSize);

View File

@ -37,5 +37,5 @@ public:
void Read(IReadObjectContext * context, IStream * stream); void Read(IReadObjectContext * context, IStream * stream);
const rct_g1_element * GetImages() const { return _entries.data(); } const rct_g1_element * GetImages() const { return _entries.data(); }
uint32 GetCount() const { return (uint32)_entries.size(); } uint32 GetCount() const { return (uint32)_entries.size(); }
void AddImage(const rct_g1_element * g1, size_t length); void AddImage(const rct_g1_element * g1);
}; };

View File

@ -587,12 +587,12 @@ void RideObject::ReadJson(IReadObjectContext * context, const json_t * root)
for (size_t i = 0; i < MAX_RIDE_TYPES_PER_RIDE_ENTRY; i++) for (size_t i = 0; i < MAX_RIDE_TYPES_PER_RIDE_ENTRY; i++)
{ {
auto g1 = gfx_get_g1_element(previewImg); auto g1 = gfx_get_g1_element(previewImg);
imageTable->AddImage(g1, g1_calculate_data_size(g1)); imageTable->AddImage(g1);
} }
for (int i = 0; i < 6; i++) for (int i = 0; i < 6; i++)
{ {
auto g1 = gfx_get_g1_element(imageStart + i); auto g1 = gfx_get_g1_element(imageStart + i);
imageTable->AddImage(g1, g1_calculate_data_size(g1)); imageTable->AddImage(g1);
} }
rct_ride_entry_vehicle * vehicle0 = &_legacyType.vehicles[0]; rct_ride_entry_vehicle * vehicle0 = &_legacyType.vehicles[0];
vehicle0->sprite_flags |= VEHICLE_SPRITE_FLAG_FLAT; vehicle0->sprite_flags |= VEHICLE_SPRITE_FLAG_FLAT;