Pass paint session to some vehicle paint functions

This commit is contained in:
Ted John 2017-09-02 23:05:58 +01:00
parent 3b9a86500a
commit 6a9cd63874
11 changed files with 54 additions and 54 deletions

View File

@ -32,16 +32,16 @@
*
* rct2: 0x006D4453
*/
void vehicle_visual_reverser(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
void vehicle_visual_reverser(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
{
rct_vehicle *v1 = GET_VEHICLE(vehicle->prev_vehicle_on_ride);
rct_vehicle *v2 = GET_VEHICLE(vehicle->next_vehicle_on_ride);
x = (v1->x + v2->x) / 2;
y = (v1->y + v2->y) / 2;
z = (v1->z + v2->z) / 2;
gPaintSession.SpritePosition.x = x;
gPaintSession.SpritePosition.y = y;
vehicle_visual_default(x, imageDirection, y, z, vehicle, vehicleEntry);
session->SpritePosition.x = x;
session->SpritePosition.y = y;
vehicle_visual_default(session, x, imageDirection, y, z, vehicle, vehicleEntry);
}
#endif

View File

@ -175,7 +175,7 @@ static const uint32 virginia_reel_track_pieces_flat_quarter_turn_1_tile[4] = {
*
* rct2: 0x006D5B48
*/
void vehicle_visual_virginia_reel(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
void vehicle_visual_virginia_reel(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
{
sint32 image_id;
sint32 baseImage_id = imageDirection;
@ -212,7 +212,7 @@ void vehicle_visual_virginia_reel(sint32 x, sint32 imageDirection, sint32 y, sin
image_id = baseImage_id | SPRITE_ID_PALETTE_COLOUR_2(vehicle->colours.body_colour, vehicle->colours.trim_colour);
sub_98197C(image_id, 0, 0, bb->length_x, bb->length_y, bb->length_z, z, bb->offset_x, bb->offset_y, bb->offset_z + z, rotation);
if (gPaintSession.Unk140E9A8->zoom_level < 2 && vehicle->num_peeps > 0) {
if (session->Unk140E9A8->zoom_level < 2 && vehicle->num_peeps > 0) {
uint8 riding_peep_sprites[4] = {0xFF, 0xFF, 0xFF, 0xFF};
for (sint32 i = 0; i < vehicle->num_peeps; i++) {
riding_peep_sprites[((ecx / 8) + i) & 3] = vehicle->peep_tshirt_colours[i];

View File

@ -1022,13 +1022,13 @@ TRACK_PAINT_FUNCTION get_track_paint_function_mini_golf(sint32 trackType, sint32
/**
* rct2: 0x006D42F0
*/
void vehicle_visual_mini_golf_player(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle)
void vehicle_visual_mini_golf_player(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle)
{
if (vehicle->num_peeps == 0) {
return;
}
rct_drawpixelinfo *edi = gPaintSession.Unk140E9A8;
rct_drawpixelinfo *edi = session->Unk140E9A8;
if (edi->zoom_level >= 2) {
return;
}
@ -1051,13 +1051,13 @@ void vehicle_visual_mini_golf_player(sint32 x, sint32 imageDirection, sint32 y,
/**
* rct2: 0x006D43C6
*/
void vehicle_visual_mini_golf_ball(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle)
void vehicle_visual_mini_golf_ball(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle)
{
if (vehicle->mini_golf_current_animation != 1) {
return;
}
rct_drawpixelinfo *edi = gPaintSession.Unk140E9A8;
rct_drawpixelinfo *edi = session->Unk140E9A8;
if (edi->zoom_level >= 1) {
return;
}

View File

@ -34,7 +34,7 @@ enum
*
* rct2: 0x006D6258
*/
void vehicle_visual_observation_tower(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
void vehicle_visual_observation_tower(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
{
sint32 image_id;
sint32 baseImage_id = (vehicle->restraints_position / 64);

View File

@ -42,7 +42,7 @@ static const uint32 launched_freefall_fence_sprites[] = {
*
* rct2: 0x006D5FAB
*/
void vehicle_visual_launched_freefall(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
void vehicle_visual_launched_freefall(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
{
sint32 image_id;
sint32 baseImage_id = vehicleEntry->base_image_id + ((vehicle->restraints_position / 64) * 2);
@ -57,7 +57,7 @@ void vehicle_visual_launched_freefall(sint32 x, sint32 imageDirection, sint32 y,
sub_98197C(image_id, 0, 0, 16, 16, 41, z, -5, -5, z + 1, rotation);
// Draw peeps:
if (gPaintSession.Unk140E9A8->zoom_level < 2) {
if (session->Unk140E9A8->zoom_level < 2) {
if (vehicle->num_peeps > 0) {
baseImage_id = vehicleEntry->base_image_id + 9;
if ((vehicle->restraints_position / 64) == 3) {

View File

@ -36,7 +36,7 @@ enum
*
* rct2: 0x006D5DA9
*/
void vehicle_visual_roto_drop(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
void vehicle_visual_roto_drop(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
{
sint32 image_id;
sint32 baseImage_id = (vehicleEntry->base_image_id + 4) + ((vehicle->var_C5 / 4) & 0x3);

View File

@ -890,7 +890,7 @@ const vehicle_boundbox VehicleBoundboxes[16][224] = {
};
// 6D5214
static void vehicle_sprite_paint(rct_vehicle *vehicle, sint32 ebx, sint32 ecx, sint32 z, const rct_ride_entry_vehicle *vehicleEntry)
static void vehicle_sprite_paint(paint_session * session, rct_vehicle *vehicle, sint32 ebx, sint32 ecx, sint32 z, const rct_ride_entry_vehicle *vehicleEntry)
{
sint32 baseImage_id = ebx;
@ -907,7 +907,7 @@ static void vehicle_sprite_paint(rct_vehicle *vehicle, sint32 ebx, sint32 ecx, s
if (ps != NULL) {
ps->tertiary_colour = vehicle->colours_extended;
}
rct_drawpixelinfo* dpi = gPaintSession.Unk140E9A8;
rct_drawpixelinfo* dpi = session->Unk140E9A8;
if (dpi->zoom_level < 2 && vehicle->num_peeps > 0 && vehicleEntry->no_seating_rows > 0) {
baseImage_id += vehicleEntry->no_vehicle_images;
for (sint32 i = 0; i < 8; i++){
@ -921,13 +921,13 @@ static void vehicle_sprite_paint(rct_vehicle *vehicle, sint32 ebx, sint32 ecx, s
}
}
}
vehicle_visual_splash_effect(z, vehicle, vehicleEntry);
vehicle_visual_splash_effect(session, z, vehicle, vehicleEntry);
}
// 6D520E
static void vehicle_sprite_paint_6D520E(rct_vehicle *vehicle, sint32 ebx, sint32 ecx, sint32 z, const rct_ride_entry_vehicle *vehicleEntry)
{
vehicle_sprite_paint(vehicle, ebx + vehicle->var_4A, ecx, z, vehicleEntry);
vehicle_sprite_paint(&gPaintSession, vehicle, ebx + vehicle->var_4A, ecx, z, vehicleEntry);
}
// 6D51EB
@ -941,7 +941,7 @@ static void vehicle_sprite_paint_6D51EB(rct_vehicle *vehicle, sint32 ebx, sint32
ebx = ebx / 8;
}
ebx = (ebx * vehicleEntry->var_16) + vehicle->var_4A + vehicleEntry->base_image_id;
vehicle_sprite_paint(vehicle, ebx, ecx, z, vehicleEntry);
vehicle_sprite_paint(&gPaintSession, vehicle, ebx, ecx, z, vehicleEntry);
}
// 6D51DE
@ -964,7 +964,7 @@ static void vehicle_sprite_paint_6D51DE(rct_vehicle *vehicle, sint32 ebx, sint32
ebx += ((vehicle->restraints_position - 64) / 64) * 4;
ebx *= vehicleEntry->var_16;
ebx += vehicleEntry->var_1C;
vehicle_sprite_paint(vehicle, ebx, ecx, z, vehicleEntry);
vehicle_sprite_paint(&gPaintSession, vehicle, ebx, ecx, z, vehicleEntry);
}
// 6D51DE
@ -2304,7 +2304,7 @@ static void vehicle_visual_splash5_effect(sint32 z, rct_vehicle *vehicle, const
sub_98199C(image_id, 0, 0, 1, 1, 0, z, 0, 0, z, get_current_rotation());
}
void vehicle_visual_splash_effect(sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
void vehicle_visual_splash_effect(paint_session * session, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
{
switch (vehicleEntry->effect_visual) {
case 1: /* nullsub */ break;
@ -2321,7 +2321,7 @@ void vehicle_visual_splash_effect(sint32 z, rct_vehicle *vehicle, const rct_ride
*
* rct2: 0x006D45F8
*/
void vehicle_visual_default(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
void vehicle_visual_default(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
{
assert(vehicle->vehicle_sprite_type < countof(vehicle_sprite_funcs));
if (vehicle->vehicle_sprite_type < countof(vehicle_sprite_funcs)) {
@ -2365,16 +2365,16 @@ void vehicle_paint(paint_session * session, rct_vehicle *vehicle, sint32 imageDi
}
switch (vehicleEntry->car_visual) {
case VEHICLE_VISUAL_DEFAULT: vehicle_visual_default(x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_LAUNCHED_FREEFALL: vehicle_visual_launched_freefall(x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_OBSERVATION_TOWER: vehicle_visual_observation_tower(x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_RIVER_RAPIDS: vehicle_visual_river_rapids(x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_MINI_GOLF_PLAYER: vehicle_visual_mini_golf_player(x, imageDirection, y, z, vehicle); break;
case VEHICLE_VISUAL_MINI_GOLF_BALL: vehicle_visual_mini_golf_ball(x, imageDirection, y, z, vehicle); break;
case VEHICLE_VISUAL_REVERSER: vehicle_visual_reverser(x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_SPLASH_BOATS_OR_WATER_COASTER: vehicle_visual_splash_boats_or_water_coaster(x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_ROTO_DROP: vehicle_visual_roto_drop(x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_VIRGINIA_REEL: vehicle_visual_virginia_reel(x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_SUBMARINE: vehicle_visual_submarine(x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_DEFAULT: vehicle_visual_default(session, x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_LAUNCHED_FREEFALL: vehicle_visual_launched_freefall(session, x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_OBSERVATION_TOWER: vehicle_visual_observation_tower(session, x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_RIVER_RAPIDS: vehicle_visual_river_rapids(session, x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_MINI_GOLF_PLAYER: vehicle_visual_mini_golf_player(session, x, imageDirection, y, z, vehicle); break;
case VEHICLE_VISUAL_MINI_GOLF_BALL: vehicle_visual_mini_golf_ball(session, x, imageDirection, y, z, vehicle); break;
case VEHICLE_VISUAL_REVERSER: vehicle_visual_reverser(session, x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_SPLASH_BOATS_OR_WATER_COASTER: vehicle_visual_splash_boats_or_water_coaster(session, x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_ROTO_DROP: vehicle_visual_roto_drop(session, x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_VIRGINIA_REEL: vehicle_visual_virginia_reel(session, x, imageDirection, y, z, vehicle, vehicleEntry); break;
case VEHICLE_VISUAL_SUBMARINE: vehicle_visual_submarine(session, x, imageDirection, y, z, vehicle, vehicleEntry); break;
}
}

View File

@ -32,17 +32,17 @@ extern const vehicle_boundbox VehicleBoundboxes[16][224];
void vehicle_paint(paint_session * session, rct_vehicle *vehicle, sint32 imageDirection);
void vehicle_visual_default(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_roto_drop(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_observation_tower(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_river_rapids(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_reverser(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_splash_boats_or_water_coaster(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_launched_freefall(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_splash_effect(sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_virginia_reel(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_submarine(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_mini_golf_player(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle);
void vehicle_visual_mini_golf_ball(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle);
void vehicle_visual_default(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_roto_drop(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_observation_tower(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_river_rapids(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_reverser(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_splash_boats_or_water_coaster(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_launched_freefall(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_splash_effect(paint_session * session, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_virginia_reel(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_submarine(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry);
void vehicle_visual_mini_golf_player(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle);
void vehicle_visual_mini_golf_ball(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle);
#endif

View File

@ -189,7 +189,7 @@ static const uint32 river_rapids_track_pieces_25_deg_down_to_flat[][2] = {
*
* rct2: 0x006D5889
*/
void vehicle_visual_river_rapids(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
void vehicle_visual_river_rapids(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
{
sint32 image_id;
sint32 baseImage_id = imageDirection;
@ -226,7 +226,7 @@ void vehicle_visual_river_rapids(sint32 x, sint32 imageDirection, sint32 y, sint
image_id = baseImage_id | SPRITE_ID_PALETTE_COLOUR_2(vehicle->colours.body_colour, vehicle->colours.trim_colour);
sub_98197C(image_id, 0, 0, bb->length_x, bb->length_y, bb->length_z, z, bb->offset_x, bb->offset_y, bb->offset_z + z, rotation);
if (gPaintSession.Unk140E9A8->zoom_level < 2 && vehicle->num_peeps > 0) {
if (session->Unk140E9A8->zoom_level < 2 && vehicle->num_peeps > 0) {
// Draw peeps: (this particular vehicle doesn't sort them back to front like others so the back ones sometimes clip, but thats how the original does it...)
sint32 peeps = ((ecx / 8) + 0) & 3;
image_id = (baseImage_id + ((peeps + 1) * 72)) | SPRITE_ID_PALETTE_COLOUR_2(vehicle->peep_tshirt_colours[0], vehicle->peep_tshirt_colours[1]) ;
@ -248,7 +248,7 @@ void vehicle_visual_river_rapids(sint32 x, sint32 imageDirection, sint32 y, sint
}
}
vehicle_visual_splash_effect(z, vehicle, vehicleEntry);
vehicle_visual_splash_effect(session, z, vehicle, vehicleEntry);
}
#endif

View File

@ -1037,17 +1037,17 @@ TRACK_PAINT_FUNCTION get_track_paint_function_splash_boats(sint32 trackType, sin
*
* rct2: 0x006D4295
*/
void vehicle_visual_splash_boats_or_water_coaster(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
void vehicle_visual_splash_boats_or_water_coaster(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
{
if (vehicle->is_child) {
vehicle = GET_VEHICLE(vehicle->prev_vehicle_on_ride);
} else {
vehicle = GET_VEHICLE(vehicle->next_vehicle_on_ride);
}
gPaintSession.CurrentlyDrawnItem = vehicle;
session->CurrentlyDrawnItem = vehicle;
imageDirection = ((get_current_rotation() * 8) + vehicle->sprite_direction) & 0x1F;
gPaintSession.SpritePosition.x = vehicle->x;
gPaintSession.SpritePosition.y = vehicle->y;
vehicle_paint(&gPaintSession, vehicle, imageDirection);
session->SpritePosition.x = vehicle->x;
session->SpritePosition.y = vehicle->y;
vehicle_paint(session, vehicle, imageDirection);
}
#endif

View File

@ -27,7 +27,7 @@
*
* rct2: 0x006D44D5
*/
void vehicle_visual_submarine(sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
void vehicle_visual_submarine(paint_session * session, sint32 x, sint32 imageDirection, sint32 y, sint32 z, rct_vehicle *vehicle, const rct_ride_entry_vehicle *vehicleEntry)
{
sint32 baseImage_id = imageDirection;
sint32 image_id;