1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-06 06:32:56 +01:00

Make use of ride preview images clearer and more future-proof

This commit is contained in:
Michael Steenbeek
2017-12-04 14:04:32 +01:00
parent db5b72c360
commit 078c2d22c1
3 changed files with 18 additions and 13 deletions

View File

@@ -863,13 +863,17 @@ static void window_new_ride_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, s
// Draw ride image with feathered border
rideEntry = get_ride_entry(listItem->entry_index);
sint32 image_id = rideEntry->images_offset;
if (listItem->type != rideEntry->ride_type[0]) {
image_id++;
if (listItem->type != rideEntry->ride_type[1])
image_id++;
sint32 imageId = rideEntry->images_offset;
for (size_t i = 0; i < MAX_RIDE_TYPES_PER_RIDE_ENTRY; i++)
{
if (rideEntry->ride_type[i] == listItem->type)
break;
else
imageId++;
}
gfx_draw_sprite_raw_masked(dpi, x + 2, y + 2, SPR_NEW_RIDE_MASK, image_id);
gfx_draw_sprite_raw_masked(dpi, x + 2, y + 2, SPR_NEW_RIDE_MASK, imageId);
// Next position
x += 116;

View File

@@ -134,7 +134,7 @@ void RideObject::Load()
_legacyType.images_offset = gfx_object_allocate_images(GetImageTable()->GetImages(), GetImageTable()->GetCount());
_legacyType.vehicle_preset_list = &_presetColours;
sint32 cur_vehicle_images_offset = _legacyType.images_offset + 3;
sint32 cur_vehicle_images_offset = _legacyType.images_offset + MAX_RIDE_TYPES_PER_RIDE_ENTRY;
for (sint32 i = 0; i < RCT2_MAX_VEHICLES_PER_RIDE_ENTRY; i++)
{
rct_ride_entry_vehicle * vehicleEntry = &_legacyType.vehicles[i];
@@ -324,14 +324,15 @@ void RideObject::Unload()
void RideObject::DrawPreview(rct_drawpixelinfo * dpi, sint32 width, sint32 height) const
{
uint32 imageId = _legacyType.images_offset;
if (_legacyType.ride_type[0] == 0xFF)
for (size_t i = 0; i < MAX_RIDE_TYPES_PER_RIDE_ENTRY; i++)
{
imageId++;
if (_legacyType.ride_type[1] == 0xFF)
{
if (_legacyType.ride_type[i] != RIDE_TYPE_NULL)
break;
else
imageId++;
}
}
gfx_draw_sprite(dpi, imageId, 0, 0, 0);
}

View File

@@ -96,7 +96,7 @@ assert_struct_size(rct_ride_name, 4);
*/
typedef struct rct_ride_entry {
rct_ride_name naming;
uint32 images_offset; // 0x004
uint32 images_offset; // 0x004. The first three images are previews. They correspond to the ride_type[] array.
uint32 flags; // 0x008
uint8 ride_type[RCT2_MAX_RIDE_TYPES_PER_RIDE_ENTRY];// 0x00C
uint8 min_cars_in_train; // 0x00F