mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-16 03:23:15 +01:00
Pass paint_session to more functions
This commit is contained in:
@@ -289,7 +289,7 @@ void lightfx_prepare_light_list()
|
||||
gPaintSession.Unk140E9A8 = dpi;
|
||||
painter_setup();
|
||||
viewport_paint_setup();
|
||||
paint_arrange_structs();
|
||||
paint_session_arrange(gPaintSession);
|
||||
sub_68862C();
|
||||
|
||||
// log_warning("[%i, %i]", dpi->x, dpi->y);
|
||||
@@ -325,7 +325,7 @@ void lightfx_prepare_light_list()
|
||||
// RCT2_GLOBAL(0x140E9A8, rct_drawpixelinfo*) = dpi;
|
||||
// painter_setup();
|
||||
// viewport_paint_setup();
|
||||
// paint_arrange_structs();
|
||||
// paint_session_arrange(gPaintSession);
|
||||
// sub_68862C();
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -742,9 +742,13 @@ static void viewport_paint_column(rct_drawpixelinfo * dpi, uint32 viewFlags)
|
||||
}
|
||||
gfx_clear(dpi, colour);
|
||||
}
|
||||
paint_init(dpi);
|
||||
paint_generate_structs(dpi);
|
||||
paint_struct ps = paint_arrange_structs();
|
||||
|
||||
// Allocate a paint session
|
||||
paint_session * session = &gPaintSession;
|
||||
paint_session_init(session, dpi);
|
||||
|
||||
paint_session_generate(session);
|
||||
paint_struct ps = paint_session_arrange(session);
|
||||
paint_draw_structs(dpi, &ps, viewFlags);
|
||||
|
||||
if (gConfigGeneral.render_weather_gloom &&
|
||||
@@ -754,8 +758,8 @@ static void viewport_paint_column(rct_drawpixelinfo * dpi, uint32 viewFlags)
|
||||
viewport_paint_weather_gloom(dpi);
|
||||
}
|
||||
|
||||
if (gPaintSession.PSStringHead != NULL) {
|
||||
paint_draw_money_structs(dpi, gPaintSession.PSStringHead);
|
||||
if (session->PSStringHead != NULL) {
|
||||
paint_draw_money_structs(dpi, session->PSStringHead);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1370,9 +1374,13 @@ void get_map_coordinates_from_pos(sint32 screenX, sint32 screenY, sint32 flags,
|
||||
dpi->zoom_level = _viewportDpi1.zoom_level;
|
||||
dpi->x = _viewportDpi1.x;
|
||||
dpi->width = 1;
|
||||
paint_init(dpi);
|
||||
paint_generate_structs(dpi);
|
||||
paint_struct ps = paint_arrange_structs();
|
||||
|
||||
// Allocate a paint session
|
||||
paint_session * session = &gPaintSession;
|
||||
paint_session_init(session, dpi);
|
||||
|
||||
paint_session_generate(session);
|
||||
paint_struct ps = paint_session_arrange(session);
|
||||
sub_68862C(dpi, &ps);
|
||||
}
|
||||
if (viewport != NULL) *viewport = myviewport;
|
||||
|
||||
@@ -45,7 +45,7 @@ const sint32 SEGMENTS_ALL = SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 |
|
||||
*
|
||||
* rct2: 0x0068B35F
|
||||
*/
|
||||
void map_element_paint_setup(sint32 x, sint32 y)
|
||||
void map_element_paint_setup(paint_session * session, sint32 x, sint32 y)
|
||||
{
|
||||
if (
|
||||
x < gMapSizeUnits &&
|
||||
@@ -55,8 +55,8 @@ void map_element_paint_setup(sint32 x, sint32 y)
|
||||
) {
|
||||
paint_util_set_segment_support_height(SEGMENTS_ALL, 0xFFFF, 0);
|
||||
paint_util_force_set_general_support_height(-1, 0);
|
||||
gPaintSession.Unk141E9DB = 0;
|
||||
gPaintSession.Unk141E9DC = 0xFFFF;
|
||||
session->Unk141E9DB = 0;
|
||||
session->Unk141E9DC = 0xFFFF;
|
||||
|
||||
sub_68B3FB(x, y);
|
||||
} else {
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "../../common.h"
|
||||
#include "../../world/map.h"
|
||||
|
||||
typedef struct paint_session paint_session;
|
||||
|
||||
typedef enum edge_t
|
||||
{
|
||||
EDGE_NE = (1 << 0),
|
||||
@@ -92,7 +94,7 @@ void paint_util_force_set_general_support_height(sint16 height, uint8 slope);
|
||||
void paint_util_set_segment_support_height(sint32 segments, uint16 height, uint8 slope);
|
||||
uint16 paint_util_rotate_segments(uint16 segments, uint8 rotation);
|
||||
|
||||
void map_element_paint_setup(sint32 x, sint32 y);
|
||||
void map_element_paint_setup(paint_session * session, sint32 x, sint32 y);
|
||||
|
||||
void entrance_paint(uint8 direction, sint32 height, rct_map_element* map_element);
|
||||
void banner_paint(uint8 direction, sint32 height, rct_map_element* map_element);
|
||||
|
||||
@@ -63,7 +63,7 @@ static void paint_ps_image_with_bounding_boxes(rct_drawpixelinfo * dpi, paint_st
|
||||
static void paint_ps_image(rct_drawpixelinfo * dpi, paint_struct * ps, uint32 imageId, sint16 x, sint16 y);
|
||||
static uint32 paint_ps_colourify_image(uint32 imageId, uint8 spriteType, uint32 viewFlags);
|
||||
|
||||
static void paint_session_init(paint_session * session, rct_drawpixelinfo * dpi)
|
||||
void paint_session_init(paint_session * session, rct_drawpixelinfo * dpi)
|
||||
{
|
||||
memset(session, 0, sizeof(paint_session));
|
||||
session->Unk140E9A8 = dpi;
|
||||
@@ -81,15 +81,6 @@ static void paint_session_init(paint_session * session, rct_drawpixelinfo * dpi)
|
||||
session->WoodenSupportsPrependTo = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x0068615B
|
||||
*/
|
||||
void paint_init(rct_drawpixelinfo * dpi)
|
||||
{
|
||||
paint_session_init(&gPaintSession, dpi);
|
||||
}
|
||||
|
||||
static void paint_session_add_ps_to_quadrant(paint_session * session, paint_struct * ps, sint32 positionHash)
|
||||
{
|
||||
uint32 paintQuadrantIndex = clamp(0, positionHash / 32, MAX_PAINT_QUADRANTS - 1);
|
||||
@@ -308,7 +299,7 @@ paint_struct * sub_98196C(
|
||||
ps->var_29 = 0;
|
||||
ps->map_x = session->MapPosition.x;
|
||||
ps->map_y = session->MapPosition.y;
|
||||
ps->mapElement = gPaintSession.CurrentlyDrawnItem;
|
||||
ps->mapElement = session->CurrentlyDrawnItem;
|
||||
|
||||
session->UnkF1AD28 = ps;
|
||||
|
||||
@@ -629,8 +620,9 @@ void paint_floating_money_effect(money32 amount, rct_string_id string_id, sint16
|
||||
*
|
||||
* rct2: 0x0068B6C2
|
||||
*/
|
||||
void paint_generate_structs(rct_drawpixelinfo * dpi)
|
||||
void paint_session_generate(paint_session * session)
|
||||
{
|
||||
rct_drawpixelinfo * dpi = session->Unk140E9A8;
|
||||
rct_xy16 mapTile = {
|
||||
.x = dpi->x & 0xFFE0,
|
||||
.y = (dpi->y - 16) & 0xFFE0
|
||||
@@ -649,12 +641,12 @@ void paint_generate_structs(rct_drawpixelinfo * dpi)
|
||||
mapTile.y &= 0xFFE0;
|
||||
|
||||
for (; num_vertical_quadrants > 0; --num_vertical_quadrants){
|
||||
map_element_paint_setup(mapTile.x, mapTile.y);
|
||||
map_element_paint_setup(session, mapTile.x, mapTile.y);
|
||||
sprite_paint_setup(mapTile.x, mapTile.y);
|
||||
|
||||
sprite_paint_setup(mapTile.x - 32, mapTile.y + 32);
|
||||
|
||||
map_element_paint_setup(mapTile.x, mapTile.y + 32);
|
||||
map_element_paint_setup(session, mapTile.x, mapTile.y + 32);
|
||||
sprite_paint_setup(mapTile.x, mapTile.y + 32);
|
||||
|
||||
mapTile.x += 32;
|
||||
@@ -671,12 +663,12 @@ void paint_generate_structs(rct_drawpixelinfo * dpi)
|
||||
mapTile.y &= 0xFFE0;
|
||||
|
||||
for (; num_vertical_quadrants > 0; --num_vertical_quadrants){
|
||||
map_element_paint_setup(mapTile.x, mapTile.y);
|
||||
map_element_paint_setup(session, mapTile.x, mapTile.y);
|
||||
sprite_paint_setup(mapTile.x, mapTile.y);
|
||||
|
||||
sprite_paint_setup(mapTile.x - 32, mapTile.y - 32);
|
||||
|
||||
map_element_paint_setup(mapTile.x - 32, mapTile.y);
|
||||
map_element_paint_setup(session, mapTile.x - 32, mapTile.y);
|
||||
sprite_paint_setup(mapTile.x - 32, mapTile.y);
|
||||
|
||||
mapTile.y += 32;
|
||||
@@ -693,12 +685,12 @@ void paint_generate_structs(rct_drawpixelinfo * dpi)
|
||||
mapTile.y &= 0xFFE0;
|
||||
|
||||
for (; num_vertical_quadrants > 0; --num_vertical_quadrants){
|
||||
map_element_paint_setup(mapTile.x, mapTile.y);
|
||||
map_element_paint_setup(session, mapTile.x, mapTile.y);
|
||||
sprite_paint_setup(mapTile.x, mapTile.y);
|
||||
|
||||
sprite_paint_setup(mapTile.x + 32, mapTile.y - 32);
|
||||
|
||||
map_element_paint_setup(mapTile.x, mapTile.y - 32);
|
||||
map_element_paint_setup(session, mapTile.x, mapTile.y - 32);
|
||||
sprite_paint_setup(mapTile.x, mapTile.y - 32);
|
||||
|
||||
mapTile.x -= 32;
|
||||
@@ -716,12 +708,12 @@ void paint_generate_structs(rct_drawpixelinfo * dpi)
|
||||
mapTile.y &= 0xFFE0;
|
||||
|
||||
for (; num_vertical_quadrants > 0; --num_vertical_quadrants){
|
||||
map_element_paint_setup(mapTile.x, mapTile.y);
|
||||
map_element_paint_setup(session, mapTile.x, mapTile.y);
|
||||
sprite_paint_setup(mapTile.x, mapTile.y);
|
||||
|
||||
sprite_paint_setup(mapTile.x + 32, mapTile.y + 32);
|
||||
|
||||
map_element_paint_setup(mapTile.x + 32, mapTile.y);
|
||||
map_element_paint_setup(session, mapTile.x + 32, mapTile.y);
|
||||
sprite_paint_setup(mapTile.x + 32, mapTile.y);
|
||||
|
||||
mapTile.y -= 32;
|
||||
@@ -850,7 +842,7 @@ paint_struct * paint_arrange_structs_helper(paint_struct * ps_next, uint16 quadr
|
||||
*
|
||||
* rct2: 0x00688217
|
||||
*/
|
||||
static paint_struct paint_session_arrange_structs(paint_session * session)
|
||||
paint_struct paint_session_arrange(paint_session * session)
|
||||
{
|
||||
paint_struct psHead = { 0 };
|
||||
paint_struct * ps = &psHead;
|
||||
@@ -878,11 +870,6 @@ static paint_struct paint_session_arrange_structs(paint_session * session)
|
||||
return psHead;
|
||||
}
|
||||
|
||||
paint_struct paint_arrange_structs()
|
||||
{
|
||||
return paint_session_arrange_structs(&gPaintSession);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x00688485
|
||||
|
||||
@@ -226,9 +226,9 @@ bool paint_attach_to_previous_attach(uint32 image_id, uint16 x, uint16 y);
|
||||
bool paint_attach_to_previous_ps(uint32 image_id, uint16 x, uint16 y);
|
||||
void paint_floating_money_effect(money32 amount, rct_string_id string_id, sint16 y, sint16 z, sint8 y_offsets[], sint16 offset_x, uint32 rotation);
|
||||
|
||||
void paint_init(rct_drawpixelinfo * dpi);
|
||||
void paint_generate_structs(rct_drawpixelinfo * dpi);
|
||||
paint_struct paint_arrange_structs();
|
||||
void paint_session_init(paint_session * session, rct_drawpixelinfo * dpi);
|
||||
void paint_session_generate(paint_session * session);
|
||||
paint_struct paint_session_arrange(paint_session * session);
|
||||
paint_struct * paint_arrange_structs_helper(paint_struct * ps_next, uint16 quadrantIndex, uint8 flag);
|
||||
void paint_draw_structs(rct_drawpixelinfo * dpi, paint_struct * ps, uint32 viewFlags);
|
||||
void paint_draw_money_structs(rct_drawpixelinfo * dpi, paint_string_struct * ps);
|
||||
|
||||
@@ -2347,7 +2347,7 @@ static void sub_6CBCE2(
|
||||
gCurrentViewportFlags = 0;
|
||||
trackDirection &= 3;
|
||||
|
||||
paint_init(gPaintSession.Unk140E9A8);
|
||||
paint_session_init(&gPaintSession, gPaintSession.Unk140E9A8);
|
||||
|
||||
ride = get_ride(rideIndex);
|
||||
|
||||
@@ -2450,7 +2450,7 @@ static void sub_6CBCE2(
|
||||
gMapSize = preserveMapSize;
|
||||
gMapSizeMaxXY = preserveMapSizeMaxXY;
|
||||
|
||||
paint_struct ps = paint_arrange_structs();
|
||||
paint_struct ps = paint_session_arrange(&gPaintSession);
|
||||
paint_draw_structs(gPaintSession.Unk140E9A8, &ps, gCurrentViewportFlags);
|
||||
|
||||
gCurrentViewportFlags = preserve_current_viewport_flags;
|
||||
|
||||
Reference in New Issue
Block a user