diff --git a/src/openrct2/ride/coaster/VirginiaReel.cpp b/src/openrct2/ride/coaster/VirginiaReel.cpp index 336a887593..6622a08c9b 100644 --- a/src/openrct2/ride/coaster/VirginiaReel.cpp +++ b/src/openrct2/ride/coaster/VirginiaReel.cpp @@ -154,48 +154,28 @@ void vehicle_visual_virginia_reel( paint_session* session, int32_t x, int32_t imageDirection, int32_t y, int32_t z, const rct_vehicle* vehicle, const rct_ride_entry_vehicle* vehicleEntry) { - int32_t image_id; - int32_t baseImage_id = imageDirection; const uint8_t rotation = session->CurrentRotation; int32_t ecx = ((vehicle->spin_sprite / 8) + (rotation * 8)) & 31; - int32_t j = 0; - if (vehicle->vehicle_sprite_type == 0) - { - baseImage_id = ecx & 7; - } - else - { - if (vehicle->vehicle_sprite_type == 1 || vehicle->vehicle_sprite_type == 5) + int32_t baseImage_id = [&] { + switch (vehicle->vehicle_sprite_type) { - if (vehicle->vehicle_sprite_type == 5) - { - baseImage_id = imageDirection ^ 16; - } - baseImage_id &= 24; - j = (baseImage_id / 8) + 1; - baseImage_id += (ecx & 7); - baseImage_id += 8; + case 1: + return (imageDirection & 24) + 8; + case 2: + return (imageDirection & 24) + 40; + case 5: + return ((imageDirection ^ 16) & 24) + 8; + case 6: + return ((imageDirection ^ 16) & 24) + 40; + default: + return 0; } - else if (vehicle->vehicle_sprite_type == 2 || vehicle->vehicle_sprite_type == 6) - { - if (vehicle->vehicle_sprite_type == 6) - { - baseImage_id = imageDirection ^ 16; - } - baseImage_id &= 24; - j = (baseImage_id / 8) + 5; - baseImage_id += (ecx & 7); - baseImage_id += 40; - } - else - { - baseImage_id = ecx & 7; - } - } - baseImage_id += vehicleEntry->base_image_id; + }(); + baseImage_id += ecx & 7; + const vehicle_boundbox* bb = &_virginiaReelBoundbox[baseImage_id >> 3]; - const vehicle_boundbox* bb = &_virginiaReelBoundbox[j]; - image_id = baseImage_id | SPRITE_ID_PALETTE_COLOUR_2(vehicle->colours.body_colour, vehicle->colours.trim_colour); + baseImage_id += vehicleEntry->base_image_id; + int32_t image_id = baseImage_id | SPRITE_ID_PALETTE_COLOUR_2(vehicle->colours.body_colour, vehicle->colours.trim_colour); if (vehicle->IsGhost()) { image_id = (image_id & 0x7FFFF) | CONSTRUCTION_MARKER;