OpenRCT2/src/ride/water/water_coaster.c

373 lines
18 KiB
C

#pragma region Copyright (c) 2014-2016 OpenRCT2 Developers
/*****************************************************************************
* OpenRCT2, an open source clone of Roller Coaster Tycoon 2.
*
* OpenRCT2 is the work of many authors, a full list can be found in contributors.md
* For more information, visit https://github.com/OpenRCT2/OpenRCT2
*
* OpenRCT2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* A full copy of the GNU General Public License can be found in licence.txt
*****************************************************************************/
#pragma endregion
#include "../../common.h"
#include "../coaster/junior_roller_coaster.h"
#include "../track.h"
#include "../track_paint.h"
static void water_rc_track_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
bool isChained = track_element_is_lift_hill(mapElement);
junior_rc_paint_track_flat(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_CHAIN_LIFT : JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
bool isChained = track_element_is_lift_hill(mapElement);
junior_rc_paint_track_25_deg_up(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_CHAIN_LIFT : JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement)
{
bool isChained = track_element_is_lift_hill(mapElement);
junior_rc_paint_track_flat_to_25_deg_up(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_CHAIN_LIFT : JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement)
{
bool isChained = track_element_is_lift_hill(mapElement);
junior_rc_paint_track_25_deg_up_to_flat(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_CHAIN_LIFT : JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement)
{
water_rc_track_25_deg_up(rideIndex, trackSequence, (direction + 2) & 3, height, mapElement);
}
static void water_rc_track_flat_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement)
{
water_rc_track_25_deg_up_to_flat(rideIndex, trackSequence, (direction + 2) & 3, height, mapElement);
}
static void water_rc_track_25_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement)
{
water_rc_track_flat_to_25_deg_up(rideIndex, trackSequence, (direction + 2) & 3, height, mapElement);
}
static void water_rc_track_diag_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement)
{
bool isChained = track_element_is_lift_hill(mapElement);
junior_rc_paint_track_diag_flat(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_CHAIN_LIFT : JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_diag_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
bool isChained = track_element_is_lift_hill(mapElement);
junior_rc_paint_track_diag_25_deg_up(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_CHAIN_LIFT : JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_diag_flat_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
bool isChained = track_element_is_lift_hill(mapElement);
junior_rc_paint_track_diag_flat_to_25_deg_up(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_CHAIN_LIFT : JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_diag_25_deg_up_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
bool isChained = track_element_is_lift_hill(mapElement);
junior_rc_paint_track_diag_25_deg_up_to_flat(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_CHAIN_LIFT : JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_diag_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
bool isChained = track_element_is_lift_hill(mapElement);
junior_rc_paint_track_diag_25_deg_down(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_CHAIN_LIFT : JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_diag_flat_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
bool isChained = track_element_is_lift_hill(mapElement);
junior_rc_paint_track_diag_flat_to_25_deg_down(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_CHAIN_LIFT : JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_diag_25_deg_down_to_flat(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
bool isChained = track_element_is_lift_hill(mapElement);
junior_rc_paint_track_diag_25_deg_down_to_flat(rideIndex, trackSequence, direction, height, mapElement, isChained ? JUNIOR_RC_CHAIN_CHAIN_LIFT : JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_station(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_station(rideIndex, trackSequence, direction, height, mapElement, RIDE_TYPE_WATER_COASTER);
}
static void water_rc_track_60_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_60_deg_up(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_25_deg_up_to_60_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_25_deg_up_to_60_deg_up(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_60_deg_up_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_60_deg_up_to_25_deg_up(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_60_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
water_rc_track_60_deg_up(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement);
}
static void water_rc_track_25_deg_down_to_60_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
water_rc_track_60_deg_up_to_25_deg_up(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement);
}
static void water_rc_track_60_deg_down_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
water_rc_track_25_deg_up_to_60_deg_up(rideIndex, trackSequence, (direction + 2) % 4, height, mapElement);
}
// 5 tile turns
static void water_rc_track_left_quarter_turn_5_tiles_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_left_quarter_turn_5_tiles_25_deg_up(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_right_quarter_turn_5_tiles_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_right_quarter_turn_5_tiles_25_deg_up(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
static const uint8 left_quarter_turn_5_tiles_to_right_turn_map[] = {6, 4, 5, 3, 1, 2, 0};
static void water_rc_track_left_quarter_turn_5_tiles_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
water_rc_track_right_quarter_turn_5_tiles_25_deg_up(rideIndex, left_quarter_turn_5_tiles_to_right_turn_map[trackSequence], (direction + 1) % 4, height, mapElement);}
static void water_rc_track_right_quarter_turn_5_tiles_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
water_rc_track_left_quarter_turn_5_tiles_25_deg_up(rideIndex, left_quarter_turn_5_tiles_to_right_turn_map[trackSequence], (direction + 3) % 4, height, mapElement);
}
// 3 tile turns
static void water_rc_track_right_quarter_turn_3_tiles_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_right_quarter_turn_3_tiles_25_deg_up(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_right_quarter_turn_3_tiles_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_right_quarter_turn_3_tiles_25_deg_down(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
static const uint8 left_quarter_turn_3_tiles_to_right_turn_map[] = {3, 1, 2, 0};
static void water_rc_track_left_quarter_turn_3_tiles_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
trackSequence = left_quarter_turn_3_tiles_to_right_turn_map[trackSequence];
water_rc_track_right_quarter_turn_3_tiles_25_deg_down(rideIndex, trackSequence, (direction + 1) % 4, height, mapElement);
}
static void water_rc_track_left_quarter_turn_3_tiles_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
trackSequence = left_quarter_turn_3_tiles_to_right_turn_map[trackSequence];
water_rc_track_right_quarter_turn_3_tiles_25_deg_up(rideIndex, trackSequence, (direction + 1) % 4, height, mapElement);
}
static void water_rc_track_diag_60_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_diag_60_deg_up(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_diag_25_deg_up_to_60_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_diag_25_deg_up_to_60_deg_up(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_diag_60_deg_up_to_25_deg_up(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_diag_60_deg_up_to_25_deg_up(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_diag_60_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_diag_60_deg_down(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_diag_25_deg_down_to_60_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_diag_25_deg_down_to_60_deg_down(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
static void water_rc_track_diag_60_deg_down_to_25_deg_down(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
junior_rc_paint_track_diag_60_deg_down_to_25_deg_down(rideIndex, trackSequence, direction, height, mapElement, JUNIOR_RC_CHAIN_NONE);
}
TRACK_PAINT_FUNCTION get_track_paint_function_water_rc(int trackType, int direction)
{
switch (trackType) {
case TRACK_ELEM_FLAT:
return water_rc_track_flat;
case TRACK_ELEM_25_DEG_UP:
return water_rc_track_25_deg_up;
case TRACK_ELEM_FLAT_TO_25_DEG_UP:
return water_rc_track_flat_to_25_deg_up;
case TRACK_ELEM_25_DEG_UP_TO_FLAT:
return water_rc_track_25_deg_up_to_flat;
case TRACK_ELEM_25_DEG_DOWN:
return water_rc_track_25_deg_down;
case TRACK_ELEM_FLAT_TO_25_DEG_DOWN:
return water_rc_track_flat_to_25_deg_down;
case TRACK_ELEM_25_DEG_DOWN_TO_FLAT:
return water_rc_track_25_deg_down_to_flat;
case TRACK_ELEM_DIAG_FLAT:
return water_rc_track_diag_flat;
case TRACK_ELEM_DIAG_25_DEG_UP:
return water_rc_track_diag_25_deg_up;
case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_UP:
return water_rc_track_diag_flat_to_25_deg_up;
case TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT:
return water_rc_track_diag_25_deg_up_to_flat;
case TRACK_ELEM_DIAG_25_DEG_DOWN:
return water_rc_track_diag_25_deg_down;
case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN:
return water_rc_track_diag_flat_to_25_deg_down;
case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT:
return water_rc_track_diag_25_deg_down_to_flat;
// Use Junior RC without lift hill
case TRACK_ELEM_END_STATION:
case TRACK_ELEM_BEGIN_STATION:
case TRACK_ELEM_MIDDLE_STATION:
return water_rc_track_station;
case TRACK_ELEM_60_DEG_UP:
return water_rc_track_60_deg_up;
case TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP:
return water_rc_track_25_deg_up_to_60_deg_up;
case TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP:
return water_rc_track_60_deg_up_to_25_deg_up;
case TRACK_ELEM_60_DEG_DOWN:
return water_rc_track_60_deg_down;
case TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN:
return water_rc_track_25_deg_down_to_60_deg_down;
case TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN:
return water_rc_track_60_deg_down_to_25_deg_down;
case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP:
return water_rc_track_left_quarter_turn_5_tiles_25_deg_up;
case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP:
return water_rc_track_right_quarter_turn_5_tiles_25_deg_up;
case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN:
return water_rc_track_left_quarter_turn_5_tiles_25_deg_down;
case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN:
return water_rc_track_right_quarter_turn_5_tiles_25_deg_down;
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP:
return water_rc_track_left_quarter_turn_3_tiles_25_deg_up;
case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP:
return water_rc_track_right_quarter_turn_3_tiles_25_deg_up;
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN:
return water_rc_track_left_quarter_turn_3_tiles_25_deg_down;
case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN:
return water_rc_track_right_quarter_turn_3_tiles_25_deg_down;
case TRACK_ELEM_DIAG_60_DEG_UP:
return water_rc_track_diag_60_deg_up;
case TRACK_ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP:
return water_rc_track_diag_25_deg_up_to_60_deg_up;
case TRACK_ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP:
return water_rc_track_diag_60_deg_up_to_25_deg_up;
case TRACK_ELEM_DIAG_60_DEG_DOWN:
return water_rc_track_diag_60_deg_down;
case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN:
return water_rc_track_diag_25_deg_down_to_60_deg_down;
case TRACK_ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN:
return water_rc_track_diag_60_deg_down_to_25_deg_down;
//////////////////////////////////////////////////////
// Use Junior RC
//////////////////////////////////////////////////////
case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES:
case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES:
case TRACK_ELEM_FLAT_TO_LEFT_BANK:
case TRACK_ELEM_FLAT_TO_RIGHT_BANK:
case TRACK_ELEM_LEFT_BANK_TO_FLAT:
case TRACK_ELEM_RIGHT_BANK_TO_FLAT:
case TRACK_ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES:
case TRACK_ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES:
case TRACK_ELEM_LEFT_BANK_TO_25_DEG_UP:
case TRACK_ELEM_RIGHT_BANK_TO_25_DEG_UP:
case TRACK_ELEM_25_DEG_UP_TO_LEFT_BANK:
case TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANK:
case TRACK_ELEM_LEFT_BANK_TO_25_DEG_DOWN:
case TRACK_ELEM_RIGHT_BANK_TO_25_DEG_DOWN:
case TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANK:
case TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANK:
case TRACK_ELEM_LEFT_BANK:
case TRACK_ELEM_RIGHT_BANK:
case TRACK_ELEM_S_BEND_LEFT:
case TRACK_ELEM_S_BEND_RIGHT:
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES:
case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES:
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_BANK:
case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK:
case TRACK_ELEM_FLAT_TO_60_DEG_UP:
case TRACK_ELEM_60_DEG_UP_TO_FLAT:
case TRACK_ELEM_FLAT_TO_60_DEG_DOWN:
case TRACK_ELEM_60_DEG_DOWN_TO_FLAT:
case TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL:
case TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL:
case TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL:
case TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL:
case TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE:
case TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE:
case TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE:
case TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE:
case TRACK_ELEM_BRAKES:
case TRACK_ELEM_LEFT_EIGHTH_TO_DIAG:
case TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG:
case TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL:
case TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL:
case TRACK_ELEM_LEFT_EIGHTH_BANK_TO_DIAG:
case TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_DIAG:
case TRACK_ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL:
case TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL:
case TRACK_ELEM_DIAG_FLAT_TO_LEFT_BANK:
case TRACK_ELEM_DIAG_FLAT_TO_RIGHT_BANK:
case TRACK_ELEM_DIAG_LEFT_BANK_TO_FLAT:
case TRACK_ELEM_DIAG_RIGHT_BANK_TO_FLAT:
case TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP:
case TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP:
case TRACK_ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK:
case TRACK_ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK:
case TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN:
case TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN:
case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK:
case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK:
case TRACK_ELEM_DIAG_LEFT_BANK:
case TRACK_ELEM_DIAG_RIGHT_BANK:
case TRACK_ELEM_BLOCK_BRAKES:
return get_track_paint_function_junior_rc(trackType, direction);
//////////////////////////////////////////////////////
// Use River Rafts
//////////////////////////////////////////////////////
case TRACK_ELEM_FLAT_COVERED:
return get_track_paint_function_river_rafts(TRACK_ELEM_FLAT, direction);
case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED:
return get_track_paint_function_river_rafts(TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES, direction);
case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED:
return get_track_paint_function_river_rafts(TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES, direction);
}
return NULL;
}