From 3b9a86500a215a5962cd90c371b3200b0379d9ff Mon Sep 17 00:00:00 2001 From: Ted John Date: Sat, 2 Sep 2017 22:56:15 +0100 Subject: [PATCH] Pass paint session to sprite_paint_setup --- src/openrct2/paint/paint.c | 32 +++++++++++++------------- src/openrct2/paint/sprite/litter.c | 4 ++-- src/openrct2/paint/sprite/misc.c | 4 ++-- src/openrct2/paint/sprite/peep.c | 4 ++-- src/openrct2/paint/sprite/sprite.c | 23 +++++++++--------- src/openrct2/paint/sprite/sprite.h | 10 ++++---- src/openrct2/ride/vehicle_paint.c | 2 +- src/openrct2/ride/vehicle_paint.h | 2 +- src/openrct2/ride/water/splash_boats.c | 2 +- 9 files changed, 43 insertions(+), 40 deletions(-) diff --git a/src/openrct2/paint/paint.c b/src/openrct2/paint/paint.c index 722793fcd6..700c932eb1 100644 --- a/src/openrct2/paint/paint.c +++ b/src/openrct2/paint/paint.c @@ -660,15 +660,15 @@ void paint_session_generate(paint_session * session) for (; num_vertical_quadrants > 0; --num_vertical_quadrants){ map_element_paint_setup(session, mapTile.x, mapTile.y); - sprite_paint_setup(mapTile.x, mapTile.y); + sprite_paint_setup(session, mapTile.x, mapTile.y); - sprite_paint_setup(mapTile.x - 32, mapTile.y + 32); + sprite_paint_setup(session, mapTile.x - 32, mapTile.y + 32); map_element_paint_setup(session, mapTile.x, mapTile.y + 32); - sprite_paint_setup(mapTile.x, mapTile.y + 32); + sprite_paint_setup(session, mapTile.x, mapTile.y + 32); mapTile.x += 32; - sprite_paint_setup(mapTile.x, mapTile.y); + sprite_paint_setup(session, mapTile.x, mapTile.y); mapTile.y += 32; } @@ -682,15 +682,15 @@ void paint_session_generate(paint_session * session) for (; num_vertical_quadrants > 0; --num_vertical_quadrants){ map_element_paint_setup(session, mapTile.x, mapTile.y); - sprite_paint_setup(mapTile.x, mapTile.y); + sprite_paint_setup(session, mapTile.x, mapTile.y); - sprite_paint_setup(mapTile.x - 32, mapTile.y - 32); + sprite_paint_setup(session, mapTile.x - 32, mapTile.y - 32); map_element_paint_setup(session, mapTile.x - 32, mapTile.y); - sprite_paint_setup(mapTile.x - 32, mapTile.y); + sprite_paint_setup(session, mapTile.x - 32, mapTile.y); mapTile.y += 32; - sprite_paint_setup(mapTile.x, mapTile.y); + sprite_paint_setup(session, mapTile.x, mapTile.y); mapTile.x -= 32; } @@ -704,16 +704,16 @@ void paint_session_generate(paint_session * session) for (; num_vertical_quadrants > 0; --num_vertical_quadrants){ map_element_paint_setup(session, mapTile.x, mapTile.y); - sprite_paint_setup(mapTile.x, mapTile.y); + sprite_paint_setup(session, mapTile.x, mapTile.y); - sprite_paint_setup(mapTile.x + 32, mapTile.y - 32); + sprite_paint_setup(session, mapTile.x + 32, mapTile.y - 32); map_element_paint_setup(session, mapTile.x, mapTile.y - 32); - sprite_paint_setup(mapTile.x, mapTile.y - 32); + sprite_paint_setup(session, mapTile.x, mapTile.y - 32); mapTile.x -= 32; - sprite_paint_setup(mapTile.x, mapTile.y); + sprite_paint_setup(session, mapTile.x, mapTile.y); mapTile.y -= 32; } @@ -727,16 +727,16 @@ void paint_session_generate(paint_session * session) for (; num_vertical_quadrants > 0; --num_vertical_quadrants){ map_element_paint_setup(session, mapTile.x, mapTile.y); - sprite_paint_setup(mapTile.x, mapTile.y); + sprite_paint_setup(session, mapTile.x, mapTile.y); - sprite_paint_setup(mapTile.x + 32, mapTile.y + 32); + sprite_paint_setup(session, mapTile.x + 32, mapTile.y + 32); map_element_paint_setup(session, mapTile.x + 32, mapTile.y); - sprite_paint_setup(mapTile.x + 32, mapTile.y); + sprite_paint_setup(session, mapTile.x + 32, mapTile.y); mapTile.y -= 32; - sprite_paint_setup(mapTile.x, mapTile.y); + sprite_paint_setup(session, mapTile.x, mapTile.y); mapTile.x += 32; } diff --git a/src/openrct2/paint/sprite/litter.c b/src/openrct2/paint/sprite/litter.c index 1bdb5293a2..7fca2580e6 100644 --- a/src/openrct2/paint/sprite/litter.c +++ b/src/openrct2/paint/sprite/litter.c @@ -70,11 +70,11 @@ static const litter_sprite litter_sprites[] = { * Litter Paint Setup * rct2: 0x006736FC */ -void litter_paint(rct_litter *litter, sint32 imageDirection) +void litter_paint(paint_session * session, rct_litter *litter, sint32 imageDirection) { rct_drawpixelinfo *dpi; - dpi = gPaintSession.Unk140E9A8; + dpi = session->Unk140E9A8; if (dpi->zoom_level != 0) return; // If zoomed at all no litter drawn // litter has no sprite direction so remove that diff --git a/src/openrct2/paint/sprite/misc.c b/src/openrct2/paint/sprite/misc.c index 7e6d4d0e2b..5998997af8 100644 --- a/src/openrct2/paint/sprite/misc.c +++ b/src/openrct2/paint/sprite/misc.c @@ -37,9 +37,9 @@ extern const uint8 * DuckAnimations[]; /** * rct2: 0x00672AC9 */ -void misc_paint(rct_sprite *misc, sint32 imageDirection) +void misc_paint(paint_session * session, rct_sprite *misc, sint32 imageDirection) { - rct_drawpixelinfo * dpi = gPaintSession.Unk140E9A8; + rct_drawpixelinfo * dpi = session->Unk140E9A8; switch (misc->steam_particle.misc_identifier) { case SPRITE_MISC_STEAM_PARTICLE: // 0 diff --git a/src/openrct2/paint/sprite/peep.c b/src/openrct2/paint/sprite/peep.c index a268208292..f47313bee5 100644 --- a/src/openrct2/paint/sprite/peep.c +++ b/src/openrct2/paint/sprite/peep.c @@ -26,7 +26,7 @@ * * rct2: 0x0068F0FB */ -void peep_paint(rct_peep * peep, sint32 imageDirection) +void peep_paint(paint_session * session, rct_peep * peep, sint32 imageDirection) { #ifdef __ENABLE_LIGHTFX__ if (gConfigGeneral.enable_light_fx) { @@ -59,7 +59,7 @@ void peep_paint(rct_peep * peep, sint32 imageDirection) } #endif - rct_drawpixelinfo * dpi = gPaintSession.Unk140E9A8; + rct_drawpixelinfo * dpi = session->Unk140E9A8; if (dpi->zoom_level > 2) { return; } diff --git a/src/openrct2/paint/sprite/sprite.c b/src/openrct2/paint/sprite/sprite.c index b16da89903..283a0ea545 100644 --- a/src/openrct2/paint/sprite/sprite.c +++ b/src/openrct2/paint/sprite/sprite.c @@ -26,7 +26,8 @@ * Paint Quadrant * rct2: 0x0069E8B0 */ -void sprite_paint_setup(const uint16 eax, const uint16 ecx) { +void sprite_paint_setup(paint_session * session, const uint16 eax, const uint16 ecx) +{ rct_drawpixelinfo* dpi; if ((eax & 0xe000) | (ecx & 0xe000)) return; @@ -38,7 +39,7 @@ void sprite_paint_setup(const uint16 eax, const uint16 ecx) { if (gCurrentViewportFlags & VIEWPORT_FLAG_INVISIBLE_SPRITES) return; - dpi = gPaintSession.Unk140E9A8; + dpi = session->Unk140E9A8; if (dpi->zoom_level > 2) return; @@ -51,7 +52,7 @@ void sprite_paint_setup(const uint16 eax, const uint16 ecx) { // height of the slope element, and consequently clipped. if ((gCurrentViewportFlags & VIEWPORT_FLAG_PAINT_CLIP_TO_HEIGHT) && (spr->unknown.z > (gClipHeight * 8) )) continue; - dpi = gPaintSession.Unk140E9A8; + dpi = session->Unk140E9A8; if (dpi->y + dpi->height <= spr->unknown.sprite_top) continue; if (spr->unknown.sprite_bottom <= dpi->y)continue; @@ -63,23 +64,23 @@ void sprite_paint_setup(const uint16 eax, const uint16 ecx) { image_direction += spr->unknown.sprite_direction; image_direction &= 0x1F; - gPaintSession.CurrentlyDrawnItem = spr; - gPaintSession.SpritePosition.x = spr->unknown.x; - gPaintSession.SpritePosition.y = spr->unknown.y; - gPaintSession.InteractionType = VIEWPORT_INTERACTION_ITEM_SPRITE; + session->CurrentlyDrawnItem = spr; + session->SpritePosition.x = spr->unknown.x; + session->SpritePosition.y = spr->unknown.y; + session->InteractionType = VIEWPORT_INTERACTION_ITEM_SPRITE; switch (spr->unknown.sprite_identifier) { case SPRITE_IDENTIFIER_VEHICLE: - vehicle_paint((rct_vehicle*)spr, image_direction); + vehicle_paint(session, (rct_vehicle*)spr, image_direction); break; case SPRITE_IDENTIFIER_PEEP: - peep_paint((rct_peep*)spr, image_direction); + peep_paint(session, (rct_peep*)spr, image_direction); break; case SPRITE_IDENTIFIER_MISC: - misc_paint(spr, image_direction); + misc_paint(session, spr, image_direction); break; case SPRITE_IDENTIFIER_LITTER: - litter_paint((rct_litter*)spr, image_direction); + litter_paint(session, (rct_litter*)spr, image_direction); break; default: assert(false); diff --git a/src/openrct2/paint/sprite/sprite.h b/src/openrct2/paint/sprite/sprite.h index d0135c0df0..5f063459d3 100644 --- a/src/openrct2/paint/sprite/sprite.h +++ b/src/openrct2/paint/sprite/sprite.h @@ -20,10 +20,12 @@ #include "../../common.h" #include "../../world/sprite.h" -void sprite_paint_setup(const uint16 eax, const uint16 ecx); +typedef struct paint_session paint_session; -void misc_paint(rct_sprite *misc, sint32 imageDirection); -void litter_paint(rct_litter *litter, sint32 imageDirection); -void peep_paint(rct_peep *peep, sint32 imageDirection); +void sprite_paint_setup(paint_session * session, const uint16 eax, const uint16 ecx); + +void misc_paint(paint_session * session, rct_sprite *misc, sint32 imageDirection); +void litter_paint(paint_session * session, rct_litter *litter, sint32 imageDirection); +void peep_paint(paint_session * session, rct_peep *peep, sint32 imageDirection); #endif diff --git a/src/openrct2/ride/vehicle_paint.c b/src/openrct2/ride/vehicle_paint.c index 56801517f2..94f2b18e32 100644 --- a/src/openrct2/ride/vehicle_paint.c +++ b/src/openrct2/ride/vehicle_paint.c @@ -2333,7 +2333,7 @@ void vehicle_visual_default(sint32 x, sint32 imageDirection, sint32 y, sint32 z, * * rct2: 0x006D4244 */ -void vehicle_paint(rct_vehicle *vehicle, sint32 imageDirection) +void vehicle_paint(paint_session * session, rct_vehicle *vehicle, sint32 imageDirection) { rct_ride_entry *rideEntry = 0; const rct_ride_entry_vehicle *vehicleEntry; diff --git a/src/openrct2/ride/vehicle_paint.h b/src/openrct2/ride/vehicle_paint.h index 92545a1fbd..eea214c000 100644 --- a/src/openrct2/ride/vehicle_paint.h +++ b/src/openrct2/ride/vehicle_paint.h @@ -30,7 +30,7 @@ typedef struct vehicle_boundbox { extern const vehicle_boundbox VehicleBoundboxes[16][224]; -void vehicle_paint(rct_vehicle *vehicle, sint32 imageDirection); +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); diff --git a/src/openrct2/ride/water/splash_boats.c b/src/openrct2/ride/water/splash_boats.c index e31db1e603..584799fffc 100644 --- a/src/openrct2/ride/water/splash_boats.c +++ b/src/openrct2/ride/water/splash_boats.c @@ -1048,6 +1048,6 @@ void vehicle_visual_splash_boats_or_water_coaster(sint32 x, sint32 imageDirectio imageDirection = ((get_current_rotation() * 8) + vehicle->sprite_direction) & 0x1F; gPaintSession.SpritePosition.x = vehicle->x; gPaintSession.SpritePosition.y = vehicle->y; - vehicle_paint(vehicle, imageDirection); + vehicle_paint(&gPaintSession, vehicle, imageDirection); } #endif