/** rct2: 0x00770BEC */ static void paint_ghost_train_track_flat( paint_session * session, uint8 rideIndex, uint8 trackSequence, uint8 direction, sint32 height, const rct_tile_element * tileElement) { LocationXY16 position = session->MapPosition; uint32 imageId = ghost_train_track_pieces_flat[direction] | session->TrackColours[SCHEME_TRACK]; if (direction == 0 || direction == 2) { sub_98197C(session, imageId, 0, 0, 32, 20, 3, height, 0, 6, height); } else { sub_98197C(session, imageId, 0, 0, 20, 32, 3, height, 6, 0, height); } if (direction == 0 || direction == 2) { paint_util_push_tunnel_left(session, height, TUNNEL_0); } else { paint_util_push_tunnel_right(session, height, TUNNEL_0); } if (track_paint_util_should_paint_supports(position)) { metal_a_supports_paint_setup(session, METAL_SUPPORTS_BOXED, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); } paint_util_set_segment_support_height(session, paint_util_rotate_segments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0); paint_util_set_general_support_height(session, height + 32, 0x20); }
/** rct2: 0x008B04A0 */ static void inverted_impulse_rc_track_25_deg_up( paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, const TileElement* tileElement) { switch (direction) { case 0: sub_98197C_rotated( session, direction, session->TrackColours[SCHEME_TRACK] | 19672, 0, 0, 32, 20, 3, height + 29, 0, 6, height + 45); break; case 1: sub_98197C_rotated( session, direction, session->TrackColours[SCHEME_TRACK] | 19673, 0, 0, 32, 20, 3, height + 29, 0, 6, height + 45); break; case 2: sub_98197C_rotated( session, direction, session->TrackColours[SCHEME_TRACK] | 19674, 0, 0, 32, 20, 3, height + 29, 0, 6, height + 45); break; case 3: sub_98197C_rotated( session, direction, session->TrackColours[SCHEME_TRACK] | 19675, 0, 0, 32, 20, 3, height + 29, 0, 6, height + 45); break; } paint_util_set_segment_support_height( session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); if (track_paint_util_should_paint_supports(session->MapPosition)) { switch (direction) { case 0: metal_a_supports_paint_setup( session, METAL_SUPPORTS_TUBES_INVERTED, 6, 0, height + 62, session->TrackColours[SCHEME_SUPPORTS]); break; case 1: metal_a_supports_paint_setup( session, METAL_SUPPORTS_TUBES_INVERTED, 8, 0, height + 62, session->TrackColours[SCHEME_SUPPORTS]); break; case 2: metal_a_supports_paint_setup( session, METAL_SUPPORTS_TUBES_INVERTED, 7, 0, height + 62, session->TrackColours[SCHEME_SUPPORTS]); break; case 3: metal_a_supports_paint_setup( session, METAL_SUPPORTS_TUBES_INVERTED, 5, 0, height + 62, session->TrackColours[SCHEME_SUPPORTS]); break; } } if (direction == 0 || direction == 3) { paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_4); } else { paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_5); } paint_util_set_general_support_height(session, height + 72, 0x20); }