diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt
index 5cbc2165b1..69a8b73ebd 100644
--- a/data/language/en-GB.txt
+++ b/data/language/en-GB.txt
@@ -97,6 +97,7 @@ STR_0092 :LIM Launched Roller Coaster
STR_0093 :Hybrid Coaster
STR_0094 :Single Rail Roller Coaster
STR_0095 :Alpine Coaster
+STR_0096 :Classic Wooden Roller Coaster
STR_0512 :A compact roller coaster with a spiral lift hill and smooth, twisting drops.
STR_0513 :A looping roller coaster where the riders ride in a standing position
STR_0514 :Trains suspended beneath the roller coaster track swing out to the side around corners
@@ -179,6 +180,7 @@ STR_0602 :Roller coaster trains are accelerated out of the station by linear
STR_0603 :A wooden style roller coaster with a steel track, allowing for steep drops and inversions
STR_0604 :Riders ride single file on a narrow monorail track, as they race through tight inversions and direction changes
STR_0605 :Riders toboggan down a meandering steel track, braking to control their speed
+STR_0606 :An older-style wooden roller coaster with a fast and rough ride, with plenty of air-time, some lateral G’s, and designed to feel ‘out-of-control’
STR_0767 :Guest {INT32}
STR_0768 :Handyman {INT32}
STR_0769 :Mechanic {INT32}
diff --git a/distribution/changelog.txt b/distribution/changelog.txt
index b85065858f..862ab996be 100644
--- a/distribution/changelog.txt
+++ b/distribution/changelog.txt
@@ -6,6 +6,7 @@
- Feature: [#16662] Show a warning message when g2.dat is mismatched.
- Feature: [#17107] Ride operating settings can be set via text input.
- Feature: [#17638] Added Zero G rolls, medium loops and large corkscrews to the Hybrid and Single-Rail coasters.
+- Feature: [#17900] Add “Classic Wooden Coaster” with shallow banked turns.
- Feature: [objects#198] Add additional pirate roofs.
- Improved: [#15358] Park and scenario names can now contain up to 128 characters.
- Improved: [#16840] Add support for rectangular heightmaps.
diff --git a/resources/g2/sprites.json b/resources/g2/sprites.json
index 8c4fc4c32f..ac3ee0d528 100644
--- a/resources/g2/sprites.json
+++ b/resources/g2/sprites.json
@@ -15911,5 +15911,15 @@
},
{
"path": "empty.png"
+ },
+ {
+ "path": "track/wooden/classic_wooden_preview_track.png",
+ "x_offset": 1,
+ "y_offset": 1
+ },
+ {
+ "path": "track/wooden/classic_wooden_preview_supports.png",
+ "x_offset": 2,
+ "y_offset": 1
}
]
diff --git a/resources/g2/track/wooden/classic_wooden_preview_supports.png b/resources/g2/track/wooden/classic_wooden_preview_supports.png
new file mode 100644
index 0000000000..84db247f2c
Binary files /dev/null and b/resources/g2/track/wooden/classic_wooden_preview_supports.png differ
diff --git a/resources/g2/track/wooden/classic_wooden_preview_track.png b/resources/g2/track/wooden/classic_wooden_preview_track.png
new file mode 100644
index 0000000000..4d0362085b
Binary files /dev/null and b/resources/g2/track/wooden/classic_wooden_preview_track.png differ
diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp
index bc8fdbfa69..242d892827 100644
--- a/src/openrct2-ui/windows/NewRide.cpp
+++ b/src/openrct2-ui/windows/NewRide.cpp
@@ -64,6 +64,7 @@ static constexpr const ride_type_t RideTypeViewOrder[] = {
RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER,
RIDE_TYPE_VIRGINIA_REEL,
RIDE_TYPE_REVERSER_ROLLER_COASTER,
+ RIDE_TYPE_CLASSIC_WOODEN_ROLLER_COASTER,
RIDE_TYPE_WOODEN_ROLLER_COASTER,
RIDE_TYPE_WOODEN_WILD_MOUSE,
RIDE_TYPE_STEEL_WILD_MOUSE,
diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index bc0ed411c8..6f770921b1 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -355,6 +355,7 @@
+
@@ -391,6 +392,7 @@
+
@@ -843,6 +845,7 @@
+
diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h
index e2e5701d5c..b34413d542 100644
--- a/src/openrct2/localisation/StringIds.h
+++ b/src/openrct2/localisation/StringIds.h
@@ -112,6 +112,7 @@ enum : uint16_t
STR_RIDE_NAME_HYBRID_COASTER = 93,
STR_RIDE_NAME_SINGLE_RAIL_ROLLER_COASTER = 94,
STR_RIDE_NAME_ALPINE_COASTER = 95,
+ STR_RIDE_NAME_CLASSIC_WOODEN_ROLLER_COASTER = 96,
STR_RIDE_DESCRIPTION_SPIRAL_ROLLER_COASTER = 512,
STR_RIDE_DESCRIPTION_STAND_UP_ROLLER_COASTER = 513,
@@ -204,6 +205,7 @@ enum : uint16_t
STR_RIDE_DESCRIPTION_HYBRID_COASTER = 603,
STR_RIDE_DESCRIPTION_SINGLE_RAIL_ROLLER_COASTER = 604,
STR_RIDE_DESCRIPTION_ALPINE_COASTER = 605,
+ STR_RIDE_DESCRIPTION_CLASSIC_WOODEN_ROLLER_COASTER = 606,
STR_GUEST_X = 767,
STR_HANDYMAN_X = 768,
diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp
index ffa0abcf1d..f6d795dbd5 100644
--- a/src/openrct2/network/NetworkBase.cpp
+++ b/src/openrct2/network/NetworkBase.cpp
@@ -42,7 +42,7 @@
// This string specifies which version of network stream current build uses.
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
-#define NETWORK_STREAM_VERSION "8"
+#define NETWORK_STREAM_VERSION "9"
#define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION
static Peep* _pickup_peep = nullptr;
diff --git a/src/openrct2/park/ParkFile.h b/src/openrct2/park/ParkFile.h
index 27bf8378a3..d0c172a532 100644
--- a/src/openrct2/park/ParkFile.h
+++ b/src/openrct2/park/ParkFile.h
@@ -8,10 +8,10 @@ struct ObjectRepositoryItem;
namespace OpenRCT2
{
// Current version that is saved.
- constexpr uint32_t PARK_FILE_CURRENT_VERSION = 13;
+ constexpr uint32_t PARK_FILE_CURRENT_VERSION = 14;
// The minimum version that is forwards compatible with the current version.
- constexpr uint32_t PARK_FILE_MIN_VERSION = 12;
+ constexpr uint32_t PARK_FILE_MIN_VERSION = 14;
// The minimum version that is backwards compatible with the current version.
// If this is increased beyond 0, uncomment the checks in ParkFile.cpp and Context.cpp!
diff --git a/src/openrct2/rct1/Tables.cpp b/src/openrct2/rct1/Tables.cpp
index ce5633f20d..8b86514cf7 100644
--- a/src/openrct2/rct1/Tables.cpp
+++ b/src/openrct2/rct1/Tables.cpp
@@ -172,7 +172,7 @@ namespace RCT1
static uint8_t map[] =
{
- RIDE_TYPE_WOODEN_ROLLER_COASTER, // RCT1_RIDE_TYPE_WOODEN_ROLLER_COASTER
+ RIDE_TYPE_CLASSIC_WOODEN_ROLLER_COASTER,// RCT1_RIDE_TYPE_WOODEN_ROLLER_COASTER
RIDE_TYPE_STAND_UP_ROLLER_COASTER, // RCT1_RIDE_TYPE_STAND_UP_STEEL_ROLLER_COASTER
RIDE_TYPE_SUSPENDED_SWINGING_COASTER, // RCT1_RIDE_TYPE_SUSPENDED_ROLLER_COASTER
RIDE_TYPE_INVERTED_ROLLER_COASTER, // RCT1_RIDE_TYPE_INVERTED_ROLLER_COASTER
diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h
index a8f7b45d9f..94b46880f4 100644
--- a/src/openrct2/ride/Ride.h
+++ b/src/openrct2/ride/Ride.h
@@ -598,6 +598,7 @@ enum
RIDE_TYPE_HYBRID_COASTER,
RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER,
RIDE_TYPE_ALPINE_COASTER,
+ RIDE_TYPE_CLASSIC_WOODEN_ROLLER_COASTER,
RIDE_TYPE_COUNT
};
diff --git a/src/openrct2/ride/RideData.cpp b/src/openrct2/ride/RideData.cpp
index 2e79f12a10..7485b2658f 100644
--- a/src/openrct2/ride/RideData.cpp
+++ b/src/openrct2/ride/RideData.cpp
@@ -33,6 +33,7 @@
#include "coaster/meta/AlpineCoaster.h"
#include "coaster/meta/BobsleighCoaster.h"
#include "coaster/meta/ClassicMiniRollerCoaster.h"
+#include "coaster/meta/ClassicWoodenRollerCoaster.h"
#include "coaster/meta/CompactInvertedCoaster.h"
#include "coaster/meta/CorkscrewRollerCoaster.h"
#include "coaster/meta/FlyingRollerCoaster.h"
@@ -334,6 +335,7 @@ constexpr const RideTypeDescriptor RideTypeDescriptors[RIDE_TYPE_COUNT] = {
/* RIDE_TYPE_HYBRID_COASTER */ HybridCoasterRTD,
/* RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER */ SingleRailRollerCoasterRTD,
/* RIDE_TYPE_ALPINE_COASTER */ AlpineCoasterRTD,
+ /* RIDE_TYPE_CLASSIC_WOODEN_ROLLER_COASTER */ ClassicWoodenRollerCoasterRTD,
};
bool RideTypeDescriptor::HasFlag(uint64_t flag) const
diff --git a/src/openrct2/ride/TrackPaint.h b/src/openrct2/ride/TrackPaint.h
index 7b2651bfa5..cf537dd56f 100644
--- a/src/openrct2/ride/TrackPaint.h
+++ b/src/openrct2/ride/TrackPaint.h
@@ -483,3 +483,4 @@ namespace AlpineRC
{
TRACK_PAINT_FUNCTION GetTrackPaintFunction(int32_t trackType);
}
+TRACK_PAINT_FUNCTION get_track_paint_function_classic_wooden_rc(int32_t trackType);
diff --git a/src/openrct2/ride/coaster/ClassicWoodenRollerCoaster.cpp b/src/openrct2/ride/coaster/ClassicWoodenRollerCoaster.cpp
new file mode 100644
index 0000000000..f6333befc6
--- /dev/null
+++ b/src/openrct2/ride/coaster/ClassicWoodenRollerCoaster.cpp
@@ -0,0 +1,1978 @@
+/*****************************************************************************
+ * Copyright (c) 2014-2022 OpenRCT2 developers
+ *
+ * For a complete list of all authors, please refer to contributors.md
+ * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
+ *
+ * OpenRCT2 is licensed under the GNU General Public License version 3.
+ *****************************************************************************/
+
+#include "../../drawing/Drawing.h"
+#include "../../interface/Viewport.h"
+#include "../../paint/Paint.h"
+#include "../../paint/Supports.h"
+#include "../../paint/tile_element/Paint.TileElement.h"
+#include "../../sprites.h"
+#include "../../world/Map.h"
+#include "../RideData.h"
+#include "../TrackData.h"
+#include "../TrackPaint.h"
+#include "WoodenRollerCoaster.h"
+
+enum
+{
+ SPR_CLASSIC_WOODEN_RC_BRAKE_0 = SPR_CSG_BEGIN + 64985,
+ SPR_CLASSIC_WOODEN_RC_BRAKE_1 = SPR_CSG_BEGIN + 64986,
+
+ SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_SW_NE = SPR_CSG_BEGIN + 64788,
+ SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_NW_SE = SPR_CSG_BEGIN + 64789,
+ SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_NE_SW = SPR_CSG_BEGIN + 64790,
+ SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_SE_NW = SPR_CSG_BEGIN + 64791,
+ SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_FRONT_NW_SE = SPR_CSG_BEGIN + 64816,
+ SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_FRONT_SE_NW = SPR_CSG_BEGIN + 64817,
+
+ SPR_CLASSIC_WOODEN_RC_FLAT_TO_RIGHT_BANK_SW_NE = SPR_CSG_BEGIN + 64792,
+ SPR_CLASSIC_WOODEN_RC_FLAT_TO_RIGHT_BANK_NW_SE = SPR_CSG_BEGIN + 64793,
+ SPR_CLASSIC_WOODEN_RC_FLAT_TO_RIGHT_BANK_NE_SW = SPR_CSG_BEGIN + 64794,
+ SPR_CLASSIC_WOODEN_RC_FLAT_TO_RIGHT_BANK_SE_NW = SPR_CSG_BEGIN + 64795,
+ SPR_CLASSIC_WOODEN_RC_FLAT_TO_RIGHT_BANK_FRONT_NE_SW = SPR_CSG_BEGIN + 64818,
+
+ SPR_CLASSIC_WOODEN_RC_LEFT_BANK_SW_NE = SPR_CSG_BEGIN + 64796,
+ SPR_CLASSIC_WOODEN_RC_LEFT_BANK_NW_SE = SPR_CSG_BEGIN + 64797,
+ SPR_CLASSIC_WOODEN_RC_LEFT_BANK_NE_SW = SPR_CSG_BEGIN + 64798,
+ SPR_CLASSIC_WOODEN_RC_LEFT_BANK_SE_NW = SPR_CSG_BEGIN + 64799,
+
+ SPR_CLASSIC_WOODEN_RC_25_UP_TO_LEFT_BANK_SW_NE = SPR_CSG_BEGIN + 64800,
+ SPR_CLASSIC_WOODEN_RC_25_UP_TO_LEFT_BANK_NW_SE = SPR_CSG_BEGIN + 64801,
+ SPR_CLASSIC_WOODEN_RC_25_UP_TO_LEFT_BANK_NE_SW = SPR_CSG_BEGIN + 64802,
+ SPR_CLASSIC_WOODEN_RC_25_UP_TO_LEFT_BANK_SE_NW = SPR_CSG_BEGIN + 64803,
+ SPR_CLASSIC_WOODEN_RC_25_UP_TO_LEFT_BANK_FRONT_NW_SE = SPR_CSG_BEGIN + 64819,
+ SPR_CLASSIC_WOODEN_RC_25_UP_TO_LEFT_BANK_FRONT_NE_SW = SPR_CSG_BEGIN + 64820,
+
+ SPR_CLASSIC_WOODEN_RC_25_UP_TO_RIGHT_BANK_SW_NE = SPR_CSG_BEGIN + 64804,
+ SPR_CLASSIC_WOODEN_RC_25_UP_TO_RIGHT_BANK_NW_SE = SPR_CSG_BEGIN + 64805,
+ SPR_CLASSIC_WOODEN_RC_25_UP_TO_RIGHT_BANK_NE_SW = SPR_CSG_BEGIN + 64806,
+ SPR_CLASSIC_WOODEN_RC_25_UP_TO_RIGHT_BANK_SE_NW = SPR_CSG_BEGIN + 64807,
+ SPR_CLASSIC_WOODEN_RC_25_UP_TO_RIGHT_BANK_FRONT_NW_SE = SPR_CSG_BEGIN + 64821,
+ SPR_CLASSIC_WOODEN_RC_25_UP_TO_RIGHT_BANK_FRONT_NE_SW = SPR_CSG_BEGIN + 64822,
+
+ SPR_CLASSIC_WOODEN_RC_LEFT_BANK_TO_25_UP_SW_NE = SPR_CSG_BEGIN + 64808,
+ SPR_CLASSIC_WOODEN_RC_LEFT_BANK_TO_25_UP_NW_SE = SPR_CSG_BEGIN + 64809,
+ SPR_CLASSIC_WOODEN_RC_LEFT_BANK_TO_25_UP_NE_SW = SPR_CSG_BEGIN + 64810,
+ SPR_CLASSIC_WOODEN_RC_LEFT_BANK_TO_25_UP_SE_NW = SPR_CSG_BEGIN + 64811,
+ SPR_CLASSIC_WOODEN_RC_LEFT_BANK_TO_25_UP_FRONT_NW_SE = SPR_CSG_BEGIN + 64823,
+ SPR_CLASSIC_WOODEN_RC_LEFT_BANK_TO_25_UP_FRONT_NE_SW = SPR_CSG_BEGIN + 64824,
+
+ SPR_CLASSIC_WOODEN_RC_RIGHT_BANK_TO_25_UP_SW_NE = SPR_CSG_BEGIN + 64812,
+ SPR_CLASSIC_WOODEN_RC_RIGHT_BANK_TO_25_UP_NW_SE = SPR_CSG_BEGIN + 64813,
+ SPR_CLASSIC_WOODEN_RC_RIGHT_BANK_TO_25_UP_NE_SW = SPR_CSG_BEGIN + 64814,
+ SPR_CLASSIC_WOODEN_RC_RIGHT_BANK_TO_25_UP_SE_NW = SPR_CSG_BEGIN + 64815,
+ SPR_CLASSIC_WOODEN_RC_RIGHT_BANK_TO_25_UP_FRONT_NW_SE = SPR_CSG_BEGIN + 64825,
+ SPR_CLASSIC_WOODEN_RC_RIGHT_BANK_TO_25_UP_FRONT_NE_SW = SPR_CSG_BEGIN + 64826,
+
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SW_SE_SEQ_0 = 23635 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SW_SE_SEQ_2 = 23636 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SW_SE_SEQ_3 = 23637 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SW_SE_SEQ_5 = 23638 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SW_SE_SEQ_6 = 23639 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NW_SW_SEQ_0 = 23640 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NW_SW_SEQ_2 = 23641 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NW_SW_SEQ_3 = 23642 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NW_SW_SEQ_5 = 23643 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NW_SW_SEQ_6 = 23644 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NE_NW_SEQ_0 = 23645 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NE_NW_SEQ_2 = 23646 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NE_NW_SEQ_3 = 23647 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NE_NW_SEQ_5 = 23648 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NE_NW_SEQ_6 = 23649 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SE_NE_SEQ_0 = 23650 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SE_NE_SEQ_2 = 23651 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SE_NE_SEQ_3 = 23652 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SE_NE_SEQ_5 = 23653 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SE_NE_SEQ_6 = 23654 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_SW_SE_SEQ_0 = 23655 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_SW_SE_SEQ_2 = 23656 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_SW_SE_SEQ_3 = 23657 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_SW_SE_SEQ_5 = 23658 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_SW_SE_SEQ_6 = 23659 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_NE_NW_SEQ_0 = 23660 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_NE_NW_SEQ_2 = 23661 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_NE_NW_SEQ_3 = 23662 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_NE_NW_SEQ_5 = 23663 + SPR_CSG_BEGIN + 41290,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_NE_NW_SEQ_6 = 23664 + SPR_CSG_BEGIN + 41290,
+
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_SW_SE_SEQ_0 = SPR_CSG_BEGIN + 65129,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_SW_SE_SEQ_2 = SPR_CSG_BEGIN + 65130,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_SW_SE_SEQ_3 = SPR_CSG_BEGIN + 65131,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_NW_SW_SEQ_0 = SPR_CSG_BEGIN + 65132,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_NW_SW_SEQ_2 = SPR_CSG_BEGIN + 65133,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_NW_SW_SEQ_3 = SPR_CSG_BEGIN + 65134,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_NE_NW_SEQ_0 = SPR_CSG_BEGIN + 65135,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_NE_NW_SEQ_2 = SPR_CSG_BEGIN + 65136,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_NE_NW_SEQ_3 = SPR_CSG_BEGIN + 65137,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_SE_NE_SEQ_0 = SPR_CSG_BEGIN + 65138,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_SE_NE_SEQ_2 = SPR_CSG_BEGIN + 65139,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_SE_NE_SEQ_3 = SPR_CSG_BEGIN + 65140,
+
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_SW_SE_SEQ_0 = SPR_CSG_BEGIN + 65141,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_SW_SE_SEQ_2 = SPR_CSG_BEGIN + 65142,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_SW_SE_SEQ_3 = SPR_CSG_BEGIN + 65143,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_NE_NW_SEQ_0 = SPR_CSG_BEGIN + 65144,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_NE_NW_SEQ_2 = SPR_CSG_BEGIN + 65145,
+ SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_NE_NW_SEQ_3 = SPR_CSG_BEGIN + 65146,
+
+ SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_0 = SPR_CSG_BEGIN + 65309,
+ SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_1 = SPR_CSG_BEGIN + 65310,
+ SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_2 = SPR_CSG_BEGIN + 65311,
+ SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_3 = SPR_CSG_BEGIN + 65312,
+ SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_FRONT_0 = SPR_CSG_BEGIN + 65313,
+ SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_FRONT_2 = SPR_CSG_BEGIN + 65314,
+
+ SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_LEFT_0 = SPR_CSG_BEGIN + 65315,
+ SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_LEFT_1 = SPR_CSG_BEGIN + 65316,
+ SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_LEFT_2 = SPR_CSG_BEGIN + 65317,
+ SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_LEFT_3 = SPR_CSG_BEGIN + 65318,
+ SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_LEFT_FRONT_0 = SPR_CSG_BEGIN + 65319,
+ SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_LEFT_FRONT_2 = SPR_CSG_BEGIN + 65320,
+
+ SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_RIGHT_0 = SPR_CSG_BEGIN + 65321,
+ SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_RIGHT_1 = SPR_CSG_BEGIN + 65322,
+ SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_RIGHT_2 = SPR_CSG_BEGIN + 65323,
+ SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_RIGHT_3 = SPR_CSG_BEGIN + 65324,
+ SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_RIGHT_FRONT_0 = SPR_CSG_BEGIN + 65325,
+ SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_RIGHT_FRONT_2 = SPR_CSG_BEGIN + 65326,
+
+ SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_LEFT_BANK_0 = SPR_CSG_BEGIN + 65327,
+ SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_LEFT_BANK_1 = SPR_CSG_BEGIN + 65328,
+ SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_LEFT_BANK_2 = SPR_CSG_BEGIN + 65329,
+ SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_LEFT_BANK_3 = SPR_CSG_BEGIN + 65330,
+ SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_LEFT_BANK_FRONT_0 = SPR_CSG_BEGIN + 65331,
+ SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_LEFT_BANK_FRONT_2 = SPR_CSG_BEGIN + 65332,
+
+ SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_RIGHT_BANK_0 = SPR_CSG_BEGIN + 65333,
+ SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_RIGHT_BANK_1 = SPR_CSG_BEGIN + 65334,
+ SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_RIGHT_BANK_2 = SPR_CSG_BEGIN + 65335,
+ SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_RIGHT_BANK_3 = SPR_CSG_BEGIN + 65336,
+ SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_RIGHT_BANK_FRONT_0 = SPR_CSG_BEGIN + 65337,
+ SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_RIGHT_BANK_FRONT_2 = SPR_CSG_BEGIN + 65338,
+
+ SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_TO_25_UP_0 = SPR_CSG_BEGIN + 65339,
+ SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_TO_25_UP_1 = SPR_CSG_BEGIN + 65340,
+ SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_TO_25_UP_2 = SPR_CSG_BEGIN + 65341,
+ SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_TO_25_UP_3 = SPR_CSG_BEGIN + 65342,
+ SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_TO_25_UP_FRONT_0 = SPR_CSG_BEGIN + 65343,
+ SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_TO_25_UP_FRONT_2 = SPR_CSG_BEGIN + 65344,
+
+ SPR_CLASSIC_WOODEN_RC_DIAG_RIGHT_BANK_TO_25_UP_0 = SPR_CSG_BEGIN + 65345,
+ SPR_CLASSIC_WOODEN_RC_DIAG_RIGHT_BANK_TO_25_UP_1 = SPR_CSG_BEGIN + 65346,
+ SPR_CLASSIC_WOODEN_RC_DIAG_RIGHT_BANK_TO_25_UP_2 = SPR_CSG_BEGIN + 65347,
+ SPR_CLASSIC_WOODEN_RC_DIAG_RIGHT_BANK_TO_25_UP_3 = SPR_CSG_BEGIN + 65348,
+ SPR_CLASSIC_WOODEN_RC_DIAG_RIGHT_BANK_TO_25_UP_FRONT_0 = SPR_CSG_BEGIN + 65349,
+ SPR_CLASSIC_WOODEN_RC_DIAG_RIGHT_BANK_TO_25_UP_FRONT_2 = SPR_CSG_BEGIN + 65350,
+
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_0_SEQ_0 = SPR_CSG_BEGIN + 65399,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_0_SEQ_1 = SPR_CSG_BEGIN + 65400,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_0_SEQ_2 = SPR_CSG_BEGIN + 65401,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_0_SEQ_4 = SPR_CSG_BEGIN + 65402,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_0_SEQ_0 = SPR_CSG_BEGIN + 65415,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_0_SEQ_1 = SPR_CSG_BEGIN + 65416,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_0_SEQ_2 = SPR_CSG_BEGIN + 65417,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_0_SEQ_4 = SPR_CSG_BEGIN + 65418,
+
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_1_SEQ_0 = SPR_CSG_BEGIN + 65403,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_1_SEQ_1 = SPR_CSG_BEGIN + 65404,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_1_SEQ_2 = SPR_CSG_BEGIN + 65405,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_1_SEQ_4 = SPR_CSG_BEGIN + 65406,
+
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_2_SEQ_0 = SPR_CSG_BEGIN + 65407,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_2_SEQ_1 = SPR_CSG_BEGIN + 65408,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_2_SEQ_2 = SPR_CSG_BEGIN + 65409,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_2_SEQ_4 = SPR_CSG_BEGIN + 65410,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_2_SEQ_0 = SPR_CSG_BEGIN + 65419,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_2_SEQ_1 = SPR_CSG_BEGIN + 65420,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_2_SEQ_2 = SPR_CSG_BEGIN + 65421,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_2_SEQ_4 = SPR_CSG_BEGIN + 65422,
+
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_3_SEQ_0 = SPR_CSG_BEGIN + 65411,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_3_SEQ_1 = SPR_CSG_BEGIN + 65412,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_3_SEQ_2 = SPR_CSG_BEGIN + 65413,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_3_SEQ_4 = SPR_CSG_BEGIN + 65414,
+
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_0_SEQ_0 = SPR_CSG_BEGIN + 65399 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_0_SEQ_1 = SPR_CSG_BEGIN + 65400 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_0_SEQ_2 = SPR_CSG_BEGIN + 65401 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_0_SEQ_4 = SPR_CSG_BEGIN + 65402 + 24,
+
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_1_SEQ_0 = SPR_CSG_BEGIN + 65403 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_1_SEQ_1 = SPR_CSG_BEGIN + 65404 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_1_SEQ_2 = SPR_CSG_BEGIN + 65405 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_1_SEQ_4 = SPR_CSG_BEGIN + 65406 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_1_SEQ_0 = SPR_CSG_BEGIN + 65439,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_1_SEQ_1 = SPR_CSG_BEGIN + 65440,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_1_SEQ_2 = SPR_CSG_BEGIN + 65441,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_1_SEQ_4 = SPR_CSG_BEGIN + 65442,
+
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_2_SEQ_0 = SPR_CSG_BEGIN + 65407 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_2_SEQ_1 = SPR_CSG_BEGIN + 65408 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_2_SEQ_2 = SPR_CSG_BEGIN + 65409 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_2_SEQ_4 = SPR_CSG_BEGIN + 65410 + 24,
+
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_3_SEQ_0 = SPR_CSG_BEGIN + 65411 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_3_SEQ_1 = SPR_CSG_BEGIN + 65412 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_3_SEQ_2 = SPR_CSG_BEGIN + 65413 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_3_SEQ_4 = SPR_CSG_BEGIN + 65414 + 24,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_3_SEQ_0 = SPR_CSG_BEGIN + 65443,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_3_SEQ_1 = SPR_CSG_BEGIN + 65444,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_3_SEQ_2 = SPR_CSG_BEGIN + 65445,
+ SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_3_SEQ_4 = SPR_CSG_BEGIN + 65446,
+};
+
+static void classic_wooden_rc_track_brakes(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][1] = {
+ {
+ { SPR_CLASSIC_WOODEN_RC_BRAKE_0, 0, { 0, 2, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BRAKE_1, 0, { 2, 1, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BRAKE_0, 0, { 0, 2, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BRAKE_1, 0, { 2, 1, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ }
+ };
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence], height);
+ wooden_a_supports_paint_setup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_SQUARE_FLAT);
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 32, 0x20);
+}
+
+static void classic_wooden_rc_track_flat_to_left_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
+ const TrackElement& trackElement)
+
+{
+ static constexpr const sprite_bb_2 imageIds[4][1][2] = {
+ { {
+ { SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_SW_NE, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ {},
+ } },
+ { {
+ { SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_NW_SE, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_FRONT_NW_SE, 0, { 0, 0, 0 }, { 26, 0, 5 }, { 1, 32, 9 } },
+ } },
+ { {
+ { SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_NE_SW, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ {},
+ } },
+ { {
+ { SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_SE_NW, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_FRONT_SE_NW, 0, { 0, 0, 0 }, { 26, 0, 5 }, { 1, 32, 9 } },
+ } }
+ };
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ wooden_a_supports_paint_setup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_SQUARE_FLAT);
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 32, 0x20);
+}
+
+static void classic_wooden_rc_track_flat_to_right_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][1][2] = {
+ { {
+ { SPR_CLASSIC_WOODEN_RC_FLAT_TO_RIGHT_BANK_SW_NE, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ {},
+ } },
+ { {
+ { SPR_CLASSIC_WOODEN_RC_FLAT_TO_RIGHT_BANK_NW_SE, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ {},
+ } },
+
+ { {
+ { SPR_CLASSIC_WOODEN_RC_FLAT_TO_RIGHT_BANK_NE_SW, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_FLAT_TO_RIGHT_BANK_FRONT_NE_SW, 0, { 0, 0, 0 }, { 0, 26, 5 }, { 32, 1, 9 } },
+ } },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_FLAT_TO_RIGHT_BANK_SE_NW, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ {},
+ },
+ }
+ };
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ wooden_a_supports_paint_setup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_SQUARE_FLAT);
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 32, 0x20);
+}
+
+static void classic_wooden_rc_track_left_bank_to_flat(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_flat_to_right_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_right_bank_to_flat(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_flat_to_left_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_left_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][1][2] = {
+ { {
+ { SPR_CLASSIC_WOODEN_RC_LEFT_BANK_SW_NE, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ {},
+ } },
+ { {
+ { SPR_CLASSIC_WOODEN_RC_LEFT_BANK_NW_SE, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ {},
+ } },
+
+ { {
+ { SPR_CLASSIC_WOODEN_RC_LEFT_BANK_NE_SW, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ {},
+ } },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_LEFT_BANK_SE_NW, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ {},
+ },
+ }
+ };
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_a_supports_paint_setup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_SQUARE_FLAT);
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 32, 0x20);
+}
+
+static void classic_wooden_rc_track_right_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_left_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_left_bank_to_25_deg_up(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][1][2] = {
+ { {
+ { SPR_CLASSIC_WOODEN_RC_LEFT_BANK_TO_25_UP_SW_NE, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ {},
+ } },
+ { {
+ { SPR_CLASSIC_WOODEN_RC_LEFT_BANK_TO_25_UP_NW_SE, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_LEFT_BANK_TO_25_UP_FRONT_NW_SE, 0, { 0, 0, 0 }, { 26, 0, 5 }, { 1, 32, 9 } },
+ } },
+
+ { {
+ { SPR_CLASSIC_WOODEN_RC_LEFT_BANK_TO_25_UP_NE_SW, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_LEFT_BANK_TO_25_UP_FRONT_NE_SW, 0, { 0, 0, 0 }, { 0, 26, 5 }, { 32, 1, 9 } },
+ } },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_LEFT_BANK_TO_25_UP_SE_NW, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ {},
+ },
+ }
+ };
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ wooden_a_supports_paint_setup(session, direction & 1, 1 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
+ if (direction == 0 || direction == 3)
+ {
+ paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_SQUARE_FLAT);
+ }
+ else
+ {
+ paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_SQUARE_8);
+ }
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 48, 0x20);
+}
+
+static void classic_wooden_rc_track_right_bank_to_25_deg_up(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][1][2] = {
+ { {
+ { SPR_CLASSIC_WOODEN_RC_RIGHT_BANK_TO_25_UP_SW_NE, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ {},
+ } },
+ { {
+ { SPR_CLASSIC_WOODEN_RC_RIGHT_BANK_TO_25_UP_NW_SE, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_RIGHT_BANK_TO_25_UP_FRONT_NW_SE, 0, { 0, 0, 0 }, { 26, 0, 5 }, { 1, 32, 9 } },
+ } },
+
+ { {
+ { SPR_CLASSIC_WOODEN_RC_RIGHT_BANK_TO_25_UP_NE_SW, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_RIGHT_BANK_TO_25_UP_FRONT_NE_SW, 0, { 0, 0, 0 }, { 0, 26, 5 }, { 32, 1, 9 } },
+ } },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_RIGHT_BANK_TO_25_UP_SE_NW, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ {},
+ },
+ }
+ };
+
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ wooden_a_supports_paint_setup(session, direction & 1, 1 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
+ if (direction == 0 || direction == 3)
+ {
+ paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_SQUARE_FLAT);
+ }
+ else
+ {
+ paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_SQUARE_8);
+ }
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 48, 0x20);
+}
+
+static void classic_wooden_rc_track_25_deg_up_to_left_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][1][2] = {
+ { {
+ { SPR_CLASSIC_WOODEN_RC_25_UP_TO_LEFT_BANK_SW_NE, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ {},
+ } },
+ { {
+ { SPR_CLASSIC_WOODEN_RC_25_UP_TO_LEFT_BANK_NW_SE, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_25_UP_TO_LEFT_BANK_FRONT_NW_SE, 0, { 0, 0, 0 }, { 26, 0, 5 }, { 1, 32, 9 } },
+ } },
+
+ { {
+ { SPR_CLASSIC_WOODEN_RC_25_UP_TO_LEFT_BANK_NE_SW, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_25_UP_TO_LEFT_BANK_FRONT_NE_SW, 0, { 0, 0, 0 }, { 0, 26, 5 }, { 32, 1, 9 } },
+ } },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_25_UP_TO_LEFT_BANK_SE_NW, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ {},
+ },
+ }
+ };
+
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ wooden_a_supports_paint_setup(session, direction & 1, 5 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
+ if (direction == 0 || direction == 3)
+ {
+ paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_SQUARE_FLAT);
+ }
+ else
+ {
+ paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_14);
+ }
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 40, 0x20);
+}
+
+static void classic_wooden_rc_track_25_deg_up_to_right_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][1][2] = {
+ { {
+ { SPR_CLASSIC_WOODEN_RC_25_UP_TO_RIGHT_BANK_SW_NE, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ {},
+ } },
+ { {
+ { SPR_CLASSIC_WOODEN_RC_25_UP_TO_RIGHT_BANK_NW_SE, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_25_UP_TO_RIGHT_BANK_FRONT_NW_SE, 0, { 0, 0, 0 }, { 26, 0, 5 }, { 1, 32, 9 } },
+ } },
+
+ { {
+ { SPR_CLASSIC_WOODEN_RC_25_UP_TO_RIGHT_BANK_NE_SW, 0, { 0, 0, 0 }, { 0, 3, 0 }, { 32, 25, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_25_UP_TO_RIGHT_BANK_FRONT_NE_SW, 0, { 0, 0, 0 }, { 0, 26, 5 }, { 32, 1, 9 } },
+ } },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_25_UP_TO_RIGHT_BANK_SE_NW, 0, { 0, 0, 0 }, { 3, 0, 0 }, { 25, 32, 2 } },
+ {},
+ },
+ }
+ };
+
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ wooden_a_supports_paint_setup(session, direction & 1, 5 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
+ if (direction == 0 || direction == 3)
+ {
+ paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_SQUARE_FLAT);
+ }
+ else
+ {
+ paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_14);
+ }
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 40, 0x20);
+}
+
+static void classic_wooden_rc_track_left_bank_to_25_deg_down(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_25_deg_up_to_right_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_right_bank_to_25_deg_down(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_25_deg_up_to_left_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_25_deg_down_to_left_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_right_bank_to_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_25_deg_down_to_right_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_left_bank_to_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_banked_right_quarter_turn_5(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][7][2] = {
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SW_SE_SEQ_0, 0, { 0, 2, 0 }, { 0, 2, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_SW_SE_SEQ_0, 0, { 0, 2, 0 }, { 0, 2, 27 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SW_SE_SEQ_2, 0, { 0, 16, 0 }, { 0, 16, 0 }, { 32, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_SW_SE_SEQ_2,
+ 0,
+ { 0, 16, 0 },
+ { 0, 16, 27 },
+ { 32, 16, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SW_SE_SEQ_3, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_SW_SE_SEQ_3, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 16, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SW_SE_SEQ_5, 0, { 16, 0, 0 }, { 16, 0, 0 }, { 16, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_SW_SE_SEQ_5,
+ 0,
+ { 16, 0, 0 },
+ { 16, 0, 27 },
+ { 16, 32, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SW_SE_SEQ_6, 0, { 2, 0, 0 }, { 2, 0, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_SW_SE_SEQ_6, 0, { 2, 0, 0 }, { 2, 0, 27 }, { 32, 32, 0 } },
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NW_SW_SEQ_0, 0, { 2, 0, 0 }, { 2, 0, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NW_SW_SEQ_2, 0, { 16, 0, 0 }, { 16, 0, 0 }, { 16, 32, 2 } },
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NW_SW_SEQ_3, 0, { 0, 16, 0 }, { 0, 16, 0 }, { 16, 16, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NW_SW_SEQ_5, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 16, 2 } },
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NW_SW_SEQ_6, 0, { 0, 2, 0 }, { 0, 2, 0 }, { 32, 27, 2 } },
+ {},
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NE_NW_SEQ_0, 0, { 0, 2, 0 }, { 0, 2, 0 }, { 32, 27, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_NE_NW_SEQ_0, 0, { 0, 2, 0 }, { 0, 2, 27 }, { 32, 27, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NE_NW_SEQ_2, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_NE_NW_SEQ_2, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 32, 16, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NE_NW_SEQ_3, 0, { 16, 16, 0 }, { 16, 16, 0 }, { 16, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_NE_NW_SEQ_3,
+ 0,
+ { 16, 16, 0 },
+ { 16, 16, 27 },
+ { 16, 16, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NE_NW_SEQ_5, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_NE_NW_SEQ_5, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 32, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_NE_NW_SEQ_6, 0, { 2, 0, 0 }, { 2, 0, 0 }, { 27, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_FRONT_NE_NW_SEQ_6, 0, { 2, 0, 0 }, { 2, 0, 27 }, { 27, 32, 0 } },
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SE_NE_SEQ_0, 0, { 2, 0, 0 }, { 2, 0, 0 }, { 27, 32, 2 } },
+ { 0, 0, { 0, 0, 0 }, { 0, 2, 27 }, { 32, 27, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SE_NE_SEQ_2, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 16, 2 } },
+ { 0, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 32, 16, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SE_NE_SEQ_3, 0, { 16, 0, 0 }, { 16, 0, 0 }, { 16, 16, 2 } },
+ { 0, 0, { 0, 0, 0 }, { 16, 16, 27 }, { 16, 16, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SE_NE_SEQ_5, 0, { 0, 16, 0 }, { 0, 16, 0 }, { 32, 16, 2 } },
+ { 0, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 32, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_5_SE_NE_SEQ_6, 0, { 0, 2, 0 }, { 0, 2, 0 }, { 32, 32, 2 } },
+ { 0, 0, { 0, 0, 0 }, { 2, 0, 27 }, { 27, 32, 0 } },
+ },
+ },
+ };
+ static constexpr const int8_t supportType[4][7] = {
+ { 0, -1, 4, 2, -1, 4, 1 },
+ { 1, -1, 5, 3, -1, 5, 0 },
+ { 0, -1, 2, 4, -1, 2, 1 },
+ { 1, -1, 3, 5, -1, 3, 0 },
+ };
+
+ static constexpr const int blockedSegments[7] = {
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ SEGMENT_B4 | SEGMENT_C8 | SEGMENT_CC,
+ SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ SEGMENT_B4 | SEGMENT_C8 | SEGMENT_CC,
+ SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4,
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ };
+
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ track_paint_util_right_quarter_turn_5_tiles_tunnel(session, height, direction, trackSequence, TUNNEL_SQUARE_FLAT);
+
+ if (supportType[direction][trackSequence] != -1)
+ {
+ wooden_a_supports_paint_setup(
+ session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ }
+ paint_util_set_segment_support_height(
+ session, paint_util_rotate_segments(blockedSegments[trackSequence], direction), 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 32, 0x20);
+}
+
+static void classic_wooden_rc_track_banked_left_quarter_turn_5(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence];
+ classic_wooden_rc_track_banked_right_quarter_turn_5(
+ session, ride, trackSequence, (direction + 1) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_right_quarter_turn_3_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][4][2] = {
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_SW_SE_SEQ_0, 0, { 0, 6, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_SW_SE_SEQ_0, 0, { 0, 6, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_SW_SE_SEQ_2, 0, { 16, 16, 0 }, { 16, 16, 0 }, { 16, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_SW_SE_SEQ_2,
+ 0,
+ { 16, 16, 0 },
+ { 16, 16, 27 },
+ { 16, 16, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_SW_SE_SEQ_3, 0, { 6, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_SW_SE_SEQ_3, 0, { 6, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_NW_SW_SEQ_0, 0, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_NW_SW_SEQ_2, 0, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 16, 2 } },
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_NW_SW_SEQ_3, 0, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
+ {},
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_NE_NW_SEQ_0, 0, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_NE_NW_SEQ_0, 0, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_NE_NW_SEQ_2, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_NE_NW_SEQ_2, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 16, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_NE_NW_SEQ_3, 0, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_NE_NW_SEQ_3, 0, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_SE_NE_SEQ_0, 0, { 6, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_SE_NE_SEQ_2, 0, { 0, 16, 0 }, { 0, 16, 0 }, { 16, 16, 2 } },
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_SE_NE_SEQ_3, 0, { 0, 6, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
+ {},
+ },
+ },
+ };
+
+ static constexpr const int8_t supportType[4][4] = {
+ { 4, -1, -1, 4 },
+ { 5, -1, -1, 5 },
+ { 2, -1, -1, 2 },
+ { 3, -1, -1, 3 },
+ };
+
+ static constexpr const int blockedSegments[4] = {
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ 0,
+ SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0,
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ };
+
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ track_paint_util_right_quarter_turn_3_tiles_tunnel(session, height, direction, trackSequence, TUNNEL_SQUARE_FLAT);
+
+ if (supportType[direction][trackSequence] != -1)
+ {
+ wooden_a_supports_paint_setup(
+ session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ }
+
+ paint_util_set_segment_support_height(
+ session, paint_util_rotate_segments(blockedSegments[trackSequence], direction), 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 32, 0x20);
+}
+
+static void classic_wooden_rc_track_left_quarter_turn_3_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence];
+ classic_wooden_rc_track_right_quarter_turn_3_bank(session, ride, trackSequence, (direction + 1) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_left_eighth_bank_to_diag(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][5][2] = {
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_0_SEQ_0, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_0_SEQ_1, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 16, 2 } },
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_0_SEQ_2, 0, { 0, 0, 0 }, { 0, 16, 0 }, { 16, 16, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_0_SEQ_4, 0, { 0, 0, 0 }, { 16, 16, 0 }, { 16, 16, 2 } },
+ {},
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_1_SEQ_0, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_1_SEQ_0, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 32, 32, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_1_SEQ_1, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 34, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_1_SEQ_1, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 32, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_1_SEQ_2, 0, { 0, 0, 0 }, { 16, 16, 0 }, { 16, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_1_SEQ_2,
+ 0,
+ { 0, 0, 0 },
+ { 16, 16, 27 },
+ { 16, 16, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_1_SEQ_4, 0, { 0, 0, 0 }, { 16, 0, 0 }, { 18, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_1_SEQ_4, 0, { 0, 0, 0 }, { 16, 0, 27 }, { 16, 16, 0 } },
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_2_SEQ_0, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_2_SEQ_1, 0, { 0, 0, 0 }, { 0, 16, 0 }, { 32, 16, 2 } },
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_2_SEQ_2, 0, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 16, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_2_SEQ_4, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 16, 2 } },
+ {},
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_3_SEQ_0, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_3_SEQ_0, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 32, 32, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_3_SEQ_1, 0, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_3_SEQ_1, 0, { 0, 0, 0 }, { 16, 0, 27 }, { 16, 32, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_3_SEQ_2, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_3_SEQ_2, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 16, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_3_SEQ_4, 0, { 0, 0, 0 }, { 0, 16, 0 }, { 16, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_LEFT_BANKED_FRONT_3_SEQ_4, 0, { 0, 0, 0 }, { 0, 16, 27 }, { 16, 16, 0 } },
+ },
+ },
+ };
+
+ static constexpr const int8_t supportType[4][5] = {
+ { 0, 0, 3, 5, -1 },
+ { 1, 1, 4, 2, -1 },
+ { 0, 0, 5, 3, -1 },
+ { 1, 1, 2, 4, -1 },
+ };
+
+ static constexpr const int blockedSegments[5] = {
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ };
+
+ if (trackSequence == 0 && (direction == 0 || direction == 3))
+ {
+ paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_SQUARE_FLAT);
+ }
+
+ if (supportType[direction][trackSequence] != -1)
+ {
+ wooden_a_supports_paint_setup(
+ session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ }
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+
+ paint_util_set_segment_support_height(
+ session, paint_util_rotate_segments(blockedSegments[trackSequence], direction), 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 32, 0x20);
+}
+
+static void classic_wooden_rc_track_right_eighth_bank_to_diag(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][5][2] = {
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_0_SEQ_0, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_0_SEQ_0, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 32, 32, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_0_SEQ_1, 0, { 0, 0, 0 }, { 0, 16, 0 }, { 32, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_0_SEQ_1,
+ 0,
+ { 0, 0, 0 },
+ { 0, 16, 27 },
+ { 32, 16, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_0_SEQ_2, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_0_SEQ_2, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 16, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_0_SEQ_4, 0, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_0_SEQ_4,
+ 0,
+ { 0, 0, 0 },
+ { 16, 0, 27 },
+ { 16, 16, 0 } },
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_1_SEQ_0, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_1_SEQ_1, 0, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 32, 0 } },
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_1_SEQ_2, 0, { 0, 0, 0 }, { 0, 16, 0 }, { 16, 16, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_1_SEQ_4, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 16, 2 } },
+ {},
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_2_SEQ_0, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_2_SEQ_0, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 32, 32, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_2_SEQ_1, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 34, 16, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_2_SEQ_1, 0, { 0, 0, 0 }, { 0, 0, 27 }, { 32, 16, 0 } },
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_2_SEQ_2, 0, { 0, 0, 0 }, { 4, 4, 0 }, { 28, 28, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_2_SEQ_2, 0, { 0, 0, 0 }, { 4, 4, 27 }, { 28, 28, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_2_SEQ_4, 0, { 0, 0, 0 }, { 0, 16, 0 }, { 16, 18, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_FRONT_2_SEQ_4,
+ 0,
+ { 0, 0, 0 },
+ { 0, 16, 27 },
+ { 16, 16, 0 } },
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_3_SEQ_0, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_3_SEQ_1, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 32, 0 } },
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_3_SEQ_2, 0, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 16, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_ORTHO_TO_DIAG_RIGHT_BANKED_3_SEQ_4, 0, { 0, 0, 0 }, { 16, 16, 0 }, { 16, 16, 2 } },
+ {},
+ },
+ },
+ };
+
+ static constexpr const int8_t supportType[4][5] = {
+ { 0, 0, 2, 4, -1 },
+ { 1, 1, 3, 5, -1 },
+ { 0, 0, 4, 2, -1 },
+ { 1, 1, 5, 3, -1 },
+ };
+
+ static constexpr const int blockedSegments[5] = {
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4,
+ };
+
+ if (trackSequence == 0 && (direction == 0 || direction == 3))
+ {
+ paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_SQUARE_FLAT);
+ }
+
+ if (supportType[direction][trackSequence] != -1)
+ {
+ wooden_a_supports_paint_setup(
+ session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ }
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+
+ paint_util_set_segment_support_height(
+ session, paint_util_rotate_segments(blockedSegments[trackSequence], direction), 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 32, 0x20);
+}
+
+static void classic_wooden_rc_track_left_eighth_bank_to_orthogonal(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ trackSequence = mapLeftEighthTurnToOrthogonal[trackSequence];
+ classic_wooden_rc_track_right_eighth_bank_to_diag(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_right_eighth_bank_to_orthogonal(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ trackSequence = mapLeftEighthTurnToOrthogonal[trackSequence];
+ classic_wooden_rc_track_left_eighth_bank_to_diag(session, ride, trackSequence, (direction + 3) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_diag_flat_to_left_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][4][2] = {
+ {
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_LEFT_0, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_LEFT_FRONT_0, 0, { -16, -16, 0 }, { -16, -16, 27 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_LEFT_1, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_LEFT_2, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 23, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_LEFT_FRONT_2, 0, { -16, -16, 0 }, { -16, -16, 27 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_LEFT_3, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ };
+
+ static constexpr const int8_t supportType[4][4] = {
+ { -1, 2, 4, -1 },
+ { -1, 3, 5, -1 },
+ { -1, 4, 2, -1 },
+ { -1, 5, 3, -1 },
+ };
+
+ if (supportType[direction][trackSequence] != -1)
+ {
+ wooden_a_supports_paint_setup(
+ session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ }
+
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 32, 0x20);
+}
+
+static void classic_wooden_rc_track_diag_flat_to_right_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][4][2] = {
+ {
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_RIGHT_0, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_RIGHT_FRONT_0, 0, { -16, -16, 0 }, { -16, -16, 27 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_RIGHT_1, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_RIGHT_2, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 23, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_RIGHT_FRONT_2, 0, { -16, -16, 0 }, { -16, -16, 27 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_FLAT_TO_BANK_RIGHT_3, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ };
+
+ static constexpr const int8_t supportType[4][4] = {
+ { -1, 2, 4, -1 },
+ { -1, 3, 5, -1 },
+ { -1, 4, 2, -1 },
+ { -1, 5, 3, -1 },
+ };
+
+ if (supportType[direction][trackSequence] != -1)
+ {
+ wooden_a_supports_paint_setup(
+ session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ }
+
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 32, 0x20);
+}
+
+static void classic_wooden_rc_track_diag_left_bank_to_flat(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_diag_flat_to_right_bank(
+ session, ride, 3 - trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_diag_right_bank_to_flat(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_diag_flat_to_left_bank(session, ride, 3 - trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_diag_left_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][4][2] = {
+ {
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_0, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_FRONT_0, 0, { -16, -16, 0 }, { -16, -16, 27 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_1, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_2, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 23, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_FRONT_2, 0, { -16, -16, 0 }, { -16, -16, 27 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_3, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ };
+
+ static constexpr const int8_t supportType[4][4] = {
+ { -1, 2, 4, -1 },
+ { -1, 3, 5, -1 },
+ { -1, 4, 2, -1 },
+ { -1, 5, 3, -1 },
+ };
+
+ if (supportType[direction][trackSequence] != -1)
+ {
+ wooden_a_supports_paint_setup(
+ session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ }
+
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 32, 0x20);
+}
+
+static void classic_wooden_rc_track_diag_right_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_diag_left_bank(session, ride, 3 - trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_diag_left_bank_to_25_deg_up(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][4][2] = {
+ {
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_TO_25_UP_0, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_TO_25_UP_FRONT_0, 0, { -16, -16, 0 }, { -16, -16, 35 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_TO_25_UP_1, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_TO_25_UP_2, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 23, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_TO_25_UP_FRONT_2, 0, { -16, -16, 0 }, { -16, -16, 35 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_LEFT_BANK_TO_25_UP_3, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ };
+
+ static constexpr const int8_t supportType[4][4] = {
+ { -1, 2, 4, -1 },
+ { -1, 3, 5, -1 },
+ { -1, 4, 2, -1 },
+ { -1, 5, 3, -1 },
+ };
+
+ if (supportType[direction][trackSequence] != -1)
+ {
+ wooden_a_supports_paint_setup(
+ session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ }
+
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 56, 0x20);
+}
+
+static void classic_wooden_rc_track_diag_right_bank_to_25_deg_up(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][4][2] = {
+ {
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_RIGHT_BANK_TO_25_UP_0, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_RIGHT_BANK_TO_25_UP_FRONT_0, 0, { -16, -16, 0 }, { -16, -16, 35 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_RIGHT_BANK_TO_25_UP_1, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_RIGHT_BANK_TO_25_UP_2, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 23, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_RIGHT_BANK_TO_25_UP_FRONT_2, 0, { -16, -16, 0 }, { -16, -16, 35 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_RIGHT_BANK_TO_25_UP_3, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ };
+
+ static constexpr const int8_t supportType[4][4] = {
+ { -1, 2, 4, -1 },
+ { -1, 3, 5, -1 },
+ { -1, 4, 2, -1 },
+ { -1, 5, 3, -1 },
+ };
+
+ if (supportType[direction][trackSequence] != -1)
+ {
+ wooden_a_supports_paint_setup(
+ session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ }
+
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 56, 0x20);
+}
+
+static void classic_wooden_rc_track_diag_25_deg_up_to_left_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][4][2] = {
+ {
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_LEFT_BANK_0, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_LEFT_BANK_FRONT_0, 0, { -16, -16, 0 }, { -16, -16, 35 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_LEFT_BANK_1, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_LEFT_BANK_2, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 23, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_LEFT_BANK_FRONT_2, 0, { -16, -16, 0 }, { -16, -16, 35 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_LEFT_BANK_3, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ };
+
+ static constexpr const int8_t supportType[4][4] = {
+ { -1, 2, 4, -1 },
+ { -1, 3, 5, -1 },
+ { -1, 4, 2, -1 },
+ { -1, 5, 3, -1 },
+ };
+
+ if (supportType[direction][trackSequence] != -1)
+ {
+ wooden_a_supports_paint_setup(
+ session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ }
+
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 56, 0x20);
+}
+
+static void classic_wooden_rc_track_diag_25_deg_up_to_right_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ static constexpr const sprite_bb_2 imageIds[4][4][2] = {
+ {
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_RIGHT_BANK_0, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_RIGHT_BANK_FRONT_0, 0, { -16, -16, 0 }, { -16, -16, 35 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_RIGHT_BANK_1, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ },
+ {
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_RIGHT_BANK_2, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 23, 2 } },
+ { SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_RIGHT_BANK_FRONT_2, 0, { -16, -16, 0 }, { -16, -16, 35 }, { 32, 32, 0 } },
+ },
+ {
+ {},
+ {},
+ },
+ },
+ {
+ {
+ { SPR_CLASSIC_WOODEN_RC_DIAG_25_UP_TO_RIGHT_BANK_3, 0, { -16, -16, 0 }, { -16, -16, 0 }, { 32, 32, 2 } },
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ {
+ {},
+ {},
+ },
+ },
+ };
+
+ static constexpr const int8_t supportType[4][4] = {
+ { -1, 2, 4, -1 },
+ { -1, 3, 5, -1 },
+ { -1, 4, 2, -1 },
+ { -1, 5, 3, -1 },
+ };
+
+ if (supportType[direction][trackSequence] != -1)
+ {
+ wooden_a_supports_paint_setup(
+ session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
+ }
+
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][0], height);
+ wooden_rc_track_paint_bb(session, &imageIds[direction][trackSequence][1], height);
+ paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
+ paint_util_set_general_support_height(session, height + 56, 0x20);
+}
+
+static void classic_wooden_rc_track_diag_left_bank_to_25_deg_down(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_diag_25_deg_up_to_right_bank(
+ session, ride, 3 - trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_diag_right_bank_to_25_deg_down(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_diag_25_deg_up_to_left_bank(
+ session, ride, 3 - trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_diag_25_deg_down_to_left_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_diag_right_bank_to_25_deg_up(
+ session, ride, 3 - trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+static void classic_wooden_rc_track_diag_25_deg_down_to_right_bank(
+ paint_session& session, const Ride& ride, uint8_t trackSequence, Direction direction, int32_t height,
+ const TrackElement& trackElement)
+{
+ classic_wooden_rc_track_diag_left_bank_to_25_deg_up(
+ session, ride, 3 - trackSequence, (direction + 2) & 3, height, trackElement);
+}
+
+// Stylistically, this coaster is _very_ similar to the regular Wooden Roller Coaster.
+// The only difference is to which parts the colours are applied, and the degree of the banking.
+// As such, all non-banked pieces are simply drawn as regular wooden roller coaster pieces with a different paint scheme.
+TRACK_PAINT_FUNCTION get_track_paint_function_classic_wooden_rc(int32_t trackType)
+{
+ if (!is_csg_loaded())
+ {
+ return get_track_paint_function_classic_wooden_rc_fallback(trackType);
+ }
+
+ switch (trackType)
+ {
+ case TrackElemType::Brakes:
+ return classic_wooden_rc_track_brakes;
+ case TrackElemType::FlatToLeftBank:
+ return classic_wooden_rc_track_flat_to_left_bank;
+ case TrackElemType::FlatToRightBank:
+ return classic_wooden_rc_track_flat_to_right_bank;
+ case TrackElemType::LeftBankToFlat:
+ return classic_wooden_rc_track_left_bank_to_flat;
+ case TrackElemType::RightBankToFlat:
+ return classic_wooden_rc_track_right_bank_to_flat;
+ case TrackElemType::BankedLeftQuarterTurn5Tiles:
+ return classic_wooden_rc_track_banked_left_quarter_turn_5;
+ case TrackElemType::BankedRightQuarterTurn5Tiles:
+ return classic_wooden_rc_track_banked_right_quarter_turn_5;
+ case TrackElemType::LeftBankToUp25:
+ return classic_wooden_rc_track_left_bank_to_25_deg_up;
+ case TrackElemType::RightBankToUp25:
+ return classic_wooden_rc_track_right_bank_to_25_deg_up;
+ case TrackElemType::Up25ToLeftBank:
+ return classic_wooden_rc_track_25_deg_up_to_left_bank;
+ case TrackElemType::Up25ToRightBank:
+ return classic_wooden_rc_track_25_deg_up_to_right_bank;
+ case TrackElemType::LeftBankToDown25:
+ return classic_wooden_rc_track_left_bank_to_25_deg_down;
+ case TrackElemType::RightBankToDown25:
+ return classic_wooden_rc_track_right_bank_to_25_deg_down;
+ case TrackElemType::Down25ToLeftBank:
+ return classic_wooden_rc_track_25_deg_down_to_left_bank;
+ case TrackElemType::Down25ToRightBank:
+ return classic_wooden_rc_track_25_deg_down_to_right_bank;
+ case TrackElemType::LeftBank:
+ return classic_wooden_rc_track_left_bank;
+ case TrackElemType::RightBank:
+ return classic_wooden_rc_track_right_bank;
+ case TrackElemType::LeftBankedQuarterTurn3Tiles:
+ return classic_wooden_rc_track_left_quarter_turn_3_bank;
+ case TrackElemType::RightBankedQuarterTurn3Tiles:
+ return classic_wooden_rc_track_right_quarter_turn_3_bank;
+ case TrackElemType::LeftEighthBankToDiag:
+ return classic_wooden_rc_track_left_eighth_bank_to_diag;
+ case TrackElemType::RightEighthBankToDiag:
+ return classic_wooden_rc_track_right_eighth_bank_to_diag;
+ case TrackElemType::LeftEighthBankToOrthogonal:
+ return classic_wooden_rc_track_left_eighth_bank_to_orthogonal;
+ case TrackElemType::RightEighthBankToOrthogonal:
+ return classic_wooden_rc_track_right_eighth_bank_to_orthogonal;
+ case TrackElemType::DiagFlatToLeftBank:
+ return classic_wooden_rc_track_diag_flat_to_left_bank;
+ case TrackElemType::DiagFlatToRightBank:
+ return classic_wooden_rc_track_diag_flat_to_right_bank;
+ case TrackElemType::DiagLeftBankToFlat:
+ return classic_wooden_rc_track_diag_left_bank_to_flat;
+ case TrackElemType::DiagRightBankToFlat:
+ return classic_wooden_rc_track_diag_right_bank_to_flat;
+ case TrackElemType::DiagLeftBankToUp25:
+ return classic_wooden_rc_track_diag_left_bank_to_25_deg_up;
+ case TrackElemType::DiagRightBankToUp25:
+ return classic_wooden_rc_track_diag_right_bank_to_25_deg_up;
+ case TrackElemType::DiagUp25ToLeftBank:
+ return classic_wooden_rc_track_diag_25_deg_up_to_left_bank;
+ case TrackElemType::DiagUp25ToRightBank:
+ return classic_wooden_rc_track_diag_25_deg_up_to_right_bank;
+ case TrackElemType::DiagLeftBankToDown25:
+ return classic_wooden_rc_track_diag_left_bank_to_25_deg_down;
+ case TrackElemType::DiagRightBankToDown25:
+ return classic_wooden_rc_track_diag_right_bank_to_25_deg_down;
+ case TrackElemType::DiagDown25ToLeftBank:
+ return classic_wooden_rc_track_diag_25_deg_down_to_left_bank;
+ case TrackElemType::DiagDown25ToRightBank:
+ return classic_wooden_rc_track_diag_25_deg_down_to_right_bank;
+ case TrackElemType::DiagLeftBank:
+ return classic_wooden_rc_track_diag_left_bank;
+ case TrackElemType::DiagRightBank:
+ return classic_wooden_rc_track_diag_right_bank;
+ }
+
+ return get_track_paint_function_classic_wooden_rc_fallback(trackType);
+}
diff --git a/src/openrct2/ride/coaster/WoodenRollerCoaster.cpp b/src/openrct2/ride/coaster/WoodenRollerCoaster.cpp
index 4dcf014f5f..4383cd038e 100644
--- a/src/openrct2/ride/coaster/WoodenRollerCoaster.cpp
+++ b/src/openrct2/ride/coaster/WoodenRollerCoaster.cpp
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2014-2020 OpenRCT2 developers
+ * Copyright (c) 2014-2022 OpenRCT2 developers
*
* For a complete list of all authors, please refer to contributors.md
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
@@ -7,6 +7,8 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
+#include "WoodenRollerCoaster.h"
+
#include "../../config/Config.h"
#include "../../drawing/Drawing.h"
#include "../../interface/Viewport.h"
@@ -20,15 +22,6 @@
#include "../TrackData.h"
#include "../TrackPaint.h"
-struct sprite_bb_2
-{
- uint32_t sprite_id_a;
- uint32_t sprite_id_b;
- CoordsXYZ offset;
- CoordsXYZ bb_offset;
- CoordsXYZ bb_size;
-};
-
enum
{
SPR_WOODEN_RC_FLAT_TO_LEFT_BANK_SW_NE = 23497,
@@ -455,52 +448,13 @@ static constexpr const uint32_t _wooden_rc_station_block_brakes_image_ids[4][2]
{ SPR_G2_WOODEN_RC_STATION_BLOCK_BRAKE_OPEN_NW_SE, SPR_G2_WOODEN_RC_STATION_BLOCK_BRAKE_CLOSED_NW_SE },
};
-static uint32_t wooden_rc_get_track_colour(paint_session& session)
-{
- return (session.TrackColours[SCHEME_TRACK] & ~0xF80000) | session.TrackColours[SCHEME_SUPPORTS];
-}
-
-static uint32_t wooden_rc_get_rails_colour(paint_session& session)
+uint32_t wooden_rc_get_rails_colour(paint_session& session)
{
return session.TrackColours[SCHEME_TRACK];
}
-static paint_struct* wooden_rc_track_paint(
- paint_session& session, uint32_t imageIdTrack, uint32_t imageIdRails, uint8_t direction, int8_t x_offset, int8_t y_offset,
- int16_t bound_box_length_x, int16_t bound_box_length_y, int8_t bound_box_length_z, int16_t z_offset,
- int16_t bound_box_offset_x, int16_t bound_box_offset_y, int16_t bound_box_offset_z)
-{
- uint32_t imageId = imageIdTrack | wooden_rc_get_track_colour(session);
- uint32_t railsImageId = imageIdRails | wooden_rc_get_rails_colour(session);
-
- PaintAddImageAsParentRotated(
- session, direction, imageId, { x_offset, y_offset, z_offset },
- { bound_box_length_x, bound_box_length_y, bound_box_length_z },
- { bound_box_offset_x, bound_box_offset_y, bound_box_offset_z });
- return PaintAddImageAsChildRotated(
- session, direction, railsImageId, { x_offset, y_offset, z_offset },
- { bound_box_length_x, bound_box_length_y, bound_box_length_z },
- { bound_box_offset_x, bound_box_offset_y, bound_box_offset_z });
-}
-
-static void wooden_rc_track_paint_bb(paint_session& session, const sprite_bb_2* bb, int16_t height)
-{
- if (bb->sprite_id_a == 0)
- return;
-
- uint32_t imageId = bb->sprite_id_a | wooden_rc_get_track_colour(session);
- uint32_t railsImageId = bb->sprite_id_b | wooden_rc_get_rails_colour(session);
-
- PaintAddImageAsParent(
- session, imageId, { bb->offset.x, bb->offset.y, height + bb->offset.z },
- { bb->bb_size.x, bb->bb_size.y, bb->bb_size.z }, { bb->bb_offset.x, bb->bb_offset.y, height + bb->bb_offset.z });
- PaintAddImageAsChild(
- session, railsImageId, { static_cast(bb->offset.x), static_cast(bb->offset.y), height + bb->offset.z },
- { bb->bb_size.x, bb->bb_size.y, static_cast(bb->bb_size.z) },
- { bb->bb_offset.x, bb->bb_offset.y, height + bb->bb_offset.z });
-}
-
/** rct2: 0x008AC568 */
+template
static void wooden_rc_track_flat(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -519,7 +473,7 @@ static void wooden_rc_track_flat(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][isChained], railsImageIds[direction][isChained], direction, 0, 2, 32, 25, 2, height, 0, 3,
height);
wooden_a_supports_paint_setup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
@@ -528,6 +482,7 @@ static void wooden_rc_track_flat(
paint_util_set_general_support_height(session, height + 32, 0x20);
}
+template
static void wooden_rc_track_station(
paint_session& session, const Ride& ride, [[maybe_unused]] uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -544,11 +499,11 @@ static void wooden_rc_track_station(
{
const auto brakeImg = trackElement.BlockBrakeClosed() ? _wooden_rc_station_block_brakes_image_ids[direction][1]
: _wooden_rc_station_block_brakes_image_ids[direction][0];
- wooden_rc_track_paint(session, brakeImg, SPR_G2_EMPTY, direction, 0, 2, 32, 27, 2, height, 0, 2, height);
+ wooden_rc_track_paint(session, brakeImg, SPR_G2_EMPTY, direction, 0, 2, 32, 27, 2, height, 0, 2, height);
}
else
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, stationImageIds[direction][0], stationImageIds[direction][1], direction, 0, 2, 32, 27, 2, height, 0, 2,
height);
}
@@ -560,6 +515,7 @@ static void wooden_rc_track_station(
}
/** rct2: 0x008AC578 */
+template
static void wooden_rc_track_25_deg_up(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -620,12 +576,12 @@ static void wooden_rc_track_25_deg_up(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[isChained][direction][0], imageIds[isChained][direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3,
height);
if (direction == 1 || direction == 2)
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[isChained][direction][2], imageIds[isChained][direction][3], direction, 0, 0, 32, 1, 9, height, 0,
26, height + 5);
}
@@ -645,6 +601,7 @@ static void wooden_rc_track_25_deg_up(
}
/** rct2: 0x008AC588 */
+template
static void wooden_rc_track_60_deg_up(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -658,12 +615,12 @@ static void wooden_rc_track_60_deg_up(
if (direction == 0 || direction == 3)
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3, height);
}
else
{
- session.WoodenSupportsPrependTo = wooden_rc_track_paint(
+ session.WoodenSupportsPrependTo = wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 2, 24, 93, height, 28, 4, height - 16);
}
wooden_a_supports_paint_setup(session, direction & 1, 21 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
@@ -682,6 +639,7 @@ static void wooden_rc_track_60_deg_up(
}
/** rct2: 0x008AC598 */
+template
static void wooden_rc_track_flat_to_25_deg_up(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -742,12 +700,12 @@ static void wooden_rc_track_flat_to_25_deg_up(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[isChained][direction][0], imageIds[isChained][direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3,
height);
if (direction == 1 || direction == 2)
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[isChained][direction][2], imageIds[isChained][direction][3], direction, 0, 0, 32, 1, 9, height, 0,
26, height + 5);
}
@@ -767,6 +725,7 @@ static void wooden_rc_track_flat_to_25_deg_up(
}
/** rct2: 0x008AC5A8 */
+template
static void wooden_rc_track_25_deg_up_to_60_deg_up(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -800,14 +759,14 @@ static void wooden_rc_track_25_deg_up_to_60_deg_up(
if (direction == 0 || direction == 3)
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3, height);
}
else
{
- session.WoodenSupportsPrependTo = wooden_rc_track_paint(
+ session.WoodenSupportsPrependTo = wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 2, 24, 43, height, 28, 4, height + 2);
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][2], imageIds[direction][3], direction, 0, 0, 32, 2, 43, height, 0, 4, height);
}
wooden_a_supports_paint_setup(session, direction & 1, 13 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
@@ -826,6 +785,7 @@ static void wooden_rc_track_25_deg_up_to_60_deg_up(
}
/** rct2: 0x008AC5B8 */
+template
static void wooden_rc_track_60_deg_up_to_25_deg_up(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -859,14 +819,14 @@ static void wooden_rc_track_60_deg_up_to_25_deg_up(
if (direction == 0 || direction == 3)
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3, height);
}
else
{
- session.WoodenSupportsPrependTo = wooden_rc_track_paint(
+ session.WoodenSupportsPrependTo = wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 24, 1, 61, height, 4, 28, height - 16);
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][2], imageIds[direction][3], direction, 0, 0, 32, 2, 43, height, 0, 4, height);
}
wooden_a_supports_paint_setup(session, direction & 1, 17 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
@@ -885,6 +845,7 @@ static void wooden_rc_track_60_deg_up_to_25_deg_up(
}
/** rct2: 0x008AC5C8 */
+template
static void wooden_rc_track_25_deg_up_to_flat(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -945,12 +906,12 @@ static void wooden_rc_track_25_deg_up_to_flat(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[isChained][direction][0], imageIds[isChained][direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3,
height);
if (direction == 1 || direction == 2)
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[isChained][direction][2], imageIds[isChained][direction][3], direction, 0, 0, 32, 1, 9, height, 0,
26, height + 5);
}
@@ -970,53 +931,60 @@ static void wooden_rc_track_25_deg_up_to_flat(
}
/** rct2: 0x008AC5D8 */
+template
static void wooden_rc_track_25_deg_down(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
/** rct2: 0x008AC5E8 */
+template
static void wooden_rc_track_60_deg_down(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_60_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_60_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
/** rct2: 0x008AC5F8 */
+template
static void wooden_rc_track_flat_to_25_deg_down(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_25_deg_up_to_flat(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_25_deg_up_to_flat(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
/** rct2: 0x008AC608 */
+template
static void wooden_rc_track_25_deg_down_to_60_deg_down(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_60_deg_up_to_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_60_deg_up_to_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
/** rct2: 0x008AC618 */
+template
static void wooden_rc_track_60_deg_down_to_25_deg_down(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_25_deg_up_to_60_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_25_deg_up_to_60_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
/** rct2: 0x008AC628 */
+template
static void wooden_rc_track_25_deg_down_to_flat(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_flat_to_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_flat_to_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
+template
static void wooden_rc_track_right_quarter_turn_5(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -1358,8 +1326,8 @@ static void wooden_rc_track_right_quarter_turn_5(
{ 1, -1, 3, 5, -1, 3, 0 },
};
- wooden_rc_track_paint_bb(session, &imageIds[0][direction][trackSequence], height);
- wooden_rc_track_paint_bb(session, &imageIds[1][direction][trackSequence], height);
+ wooden_rc_track_paint_bb(session, &imageIds[0][direction][trackSequence], height);
+ wooden_rc_track_paint_bb(session, &imageIds[1][direction][trackSequence], height);
track_paint_util_right_quarter_turn_5_tiles_tunnel(session, height, direction, trackSequence, TUNNEL_SQUARE_FLAT);
if (supportType[direction][trackSequence] != -1)
@@ -1399,15 +1367,17 @@ static void wooden_rc_track_right_quarter_turn_5(
paint_util_set_general_support_height(session, height + 32, 0x20);
}
+template
static void wooden_rc_track_left_quarter_turn_5(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence];
- wooden_rc_track_right_quarter_turn_5(session, ride, trackSequence, (direction + 1) & 3, height, trackElement);
+ wooden_rc_track_right_quarter_turn_5(session, ride, trackSequence, (direction + 1) & 3, height, trackElement);
}
/** rct2: 0x008AC658 */
+template
static void wooden_rc_track_flat_to_left_bank(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -1439,11 +1409,11 @@ static void wooden_rc_track_flat_to_left_bank(
},
};
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3, height);
if (direction == 1 || direction == 3)
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][2], imageIds[direction][3], direction, 0, 0, 32, 1, 9, height, 0, 26, height + 5);
}
wooden_a_supports_paint_setup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
@@ -1453,6 +1423,7 @@ static void wooden_rc_track_flat_to_left_bank(
}
/** rct2: 0x008AC668 */
+template
static void wooden_rc_track_flat_to_right_bank(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -1484,11 +1455,11 @@ static void wooden_rc_track_flat_to_right_bank(
},
};
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3, height);
if (direction == 0 || direction == 2)
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][2], imageIds[direction][3], direction, 0, 0, 32, 1, 9, height, 0, 26, height + 5);
}
wooden_a_supports_paint_setup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
@@ -1498,21 +1469,24 @@ static void wooden_rc_track_flat_to_right_bank(
}
/** rct2: 0x008AC678 */
+template
static void wooden_rc_track_left_bank_to_flat(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_flat_to_right_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_flat_to_right_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
/** rct2: 0x008AC688 */
+template
static void wooden_rc_track_right_bank_to_flat(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_flat_to_left_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_flat_to_left_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
+template
static void wooden_rc_track_banked_right_quarter_turn_5(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -1854,8 +1828,8 @@ static void wooden_rc_track_banked_right_quarter_turn_5(
{ 1, -1, 3, 5, -1, 3, 0 },
};
- wooden_rc_track_paint_bb(session, &imageIds[0][direction][trackSequence], height);
- wooden_rc_track_paint_bb(session, &imageIds[1][direction][trackSequence], height);
+ wooden_rc_track_paint_bb(session, &imageIds[0][direction][trackSequence], height);
+ wooden_rc_track_paint_bb(session, &imageIds[1][direction][trackSequence], height);
track_paint_util_right_quarter_turn_5_tiles_tunnel(session, height, direction, trackSequence, TUNNEL_SQUARE_FLAT);
if (supportType[direction][trackSequence] != -1)
@@ -1895,15 +1869,18 @@ static void wooden_rc_track_banked_right_quarter_turn_5(
paint_util_set_general_support_height(session, height + 32, 0x20);
}
+template
static void wooden_rc_track_banked_left_quarter_turn_5(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence];
- wooden_rc_track_banked_right_quarter_turn_5(session, ride, trackSequence, (direction + 1) & 3, height, trackElement);
+ wooden_rc_track_banked_right_quarter_turn_5(
+ session, ride, trackSequence, (direction + 1) & 3, height, trackElement);
}
/** rct2: 0x008AC6B8 */
+template
static void wooden_rc_track_left_bank_to_25_deg_up(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -1935,11 +1912,11 @@ static void wooden_rc_track_left_bank_to_25_deg_up(
},
};
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3, height);
if (direction == 1 || direction == 2)
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][2], imageIds[direction][3], direction, 0, 0, 32, 1, 9, height, 0, 26, height + 5);
}
wooden_a_supports_paint_setup(session, direction & 1, 1 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
@@ -1956,6 +1933,7 @@ static void wooden_rc_track_left_bank_to_25_deg_up(
}
/** rct2: 0x008AC6C8 */
+template
static void wooden_rc_track_right_bank_to_25_deg_up(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -1987,11 +1965,11 @@ static void wooden_rc_track_right_bank_to_25_deg_up(
},
};
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3, height);
if (direction == 1 || direction == 2)
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][2], imageIds[direction][3], direction, 0, 0, 32, 1, 9, height, 0, 26, height + 5);
}
wooden_a_supports_paint_setup(session, direction & 1, 1 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
@@ -2008,6 +1986,7 @@ static void wooden_rc_track_right_bank_to_25_deg_up(
}
/** rct2: 0x008AC6D8 */
+template
static void wooden_rc_track_25_deg_up_to_left_bank(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -2039,11 +2018,11 @@ static void wooden_rc_track_25_deg_up_to_left_bank(
},
};
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3, height);
if (direction == 1 || direction == 2)
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][2], imageIds[direction][3], direction, 0, 0, 32, 1, 9, height, 0, 26, height + 5);
}
wooden_a_supports_paint_setup(session, direction & 1, 5 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
@@ -2060,6 +2039,7 @@ static void wooden_rc_track_25_deg_up_to_left_bank(
}
/** rct2: 0x008AC6E8 */
+template
static void wooden_rc_track_25_deg_up_to_right_bank(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -2091,11 +2071,11 @@ static void wooden_rc_track_25_deg_up_to_right_bank(
},
};
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3, height);
if (direction == 1 || direction == 2)
{
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][2], imageIds[direction][3], direction, 0, 0, 32, 1, 9, height, 0, 26, height + 5);
}
wooden_a_supports_paint_setup(session, direction & 1, 5 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
@@ -2112,38 +2092,43 @@ static void wooden_rc_track_25_deg_up_to_right_bank(
}
/** rct2: 0x008AC6F8 */
+template
static void wooden_rc_track_left_bank_to_25_deg_down(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_25_deg_up_to_right_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_25_deg_up_to_right_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
/** rct2: 0x008AC708 */
+template
static void wooden_rc_track_right_bank_to_25_deg_down(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_25_deg_up_to_left_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_25_deg_up_to_left_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
/** rct2: 0x008AC718 */
+template
static void wooden_rc_track_25_deg_down_to_left_bank(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_right_bank_to_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_right_bank_to_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
/** rct2: 0x008AC728 */
+template
static void wooden_rc_track_25_deg_down_to_right_bank(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_left_bank_to_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_left_bank_to_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
/** rct2: 0x008AC738 */
+template
static void wooden_rc_track_left_bank(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -2155,7 +2140,7 @@ static void wooden_rc_track_left_bank(
{ SPR_WOODEN_RC_LEFT_BANK_SE_NW, SPR_WOODEN_RC_LEFT_BANK_RAILS_SE_NW },
};
- wooden_rc_track_paint(
+ wooden_rc_track_paint(
session, imageIds[direction][0], imageIds[direction][1], direction, 0, 0, 32, 25, 2, height, 0, 3, height);
wooden_a_supports_paint_setup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_SQUARE_FLAT);
@@ -2164,14 +2149,16 @@ static void wooden_rc_track_left_bank(
}
/** rct2: 0x008AC748 */
+template
static void wooden_rc_track_right_bank(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
- wooden_rc_track_left_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
+ wooden_rc_track_left_bank(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
/** rct2: 0x008AC758 */
+template
static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -2183,8 +2170,8 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23781, { 0, 0, height }, { 32, 27, 2 },
- { 0, 2, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23781, { 0, 0, height },
+ { 32, 27, 2 }, { 0, 2, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24647, { 0, 0, height }, { 32, 27, 2 },
{ 0, 2, height });
@@ -2192,14 +2179,14 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23786, { 0, 0, height }, { 32, 27, 2 },
- { 0, 2, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23786, { 0, 0, height },
+ { 32, 27, 2 }, { 0, 2, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24652, { 0, 0, height }, { 32, 27, 2 },
{ 0, 2, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23812, { 0, 0, height }, { 32, 27, 0 },
- { 0, 2, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23812, { 0, 0, height },
+ { 32, 27, 0 }, { 0, 2, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24678, { 0, 0, height }, { 32, 27, 0 },
{ 0, 2, height + 67 });
@@ -2207,8 +2194,8 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23791, { 0, 0, height }, { 32, 27, 2 },
- { 0, 2, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23791, { 0, 0, height },
+ { 32, 27, 2 }, { 0, 2, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24657, { 0, 0, height }, { 32, 27, 2 },
{ 0, 2, height });
@@ -2216,8 +2203,8 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23796, { 0, 0, height }, { 32, 27, 2 },
- { 0, 2, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23796, { 0, 0, height },
+ { 32, 27, 2 }, { 0, 2, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24662, { 0, 0, height }, { 32, 27, 2 },
{ 0, 2, height });
@@ -2241,8 +2228,8 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23782, { 0, 0, height }, { 32, 16, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23782, { 0, 0, height },
+ { 32, 16, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24648, { 0, 0, height }, { 32, 16, 2 },
{ 0, 0, height });
@@ -2250,14 +2237,14 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23787, { 0, 0, height }, { 32, 16, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23787, { 0, 0, height },
+ { 32, 16, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24653, { 0, 0, height }, { 32, 16, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23813, { 0, 0, height }, { 32, 16, 0 },
- { 0, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23813, { 0, 0, height },
+ { 32, 16, 0 }, { 0, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24679, { 0, 0, height }, { 32, 16, 0 },
{ 0, 0, height + 67 });
@@ -2265,8 +2252,8 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23792, { 0, 0, height }, { 32, 16, 2 },
- { 0, 16, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23792, { 0, 0, height },
+ { 32, 16, 2 }, { 0, 16, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24658, { 0, 0, height }, { 32, 16, 2 },
{ 0, 16, height });
@@ -2274,14 +2261,14 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23797, { 0, 0, height }, { 32, 16, 2 },
- { 0, 16, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23797, { 0, 0, height },
+ { 32, 16, 2 }, { 0, 16, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24663, { 0, 0, height }, { 32, 16, 2 },
{ 0, 16, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23819, { 0, 0, height }, { 32, 16, 0 },
- { 0, 16, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23819, { 0, 0, height },
+ { 32, 16, 0 }, { 0, 16, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24685, { 0, 0, height }, { 32, 16, 0 },
{ 0, 16, height + 67 });
@@ -2300,8 +2287,8 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23783, { 0, 0, height }, { 16, 16, 2 },
- { 0, 16, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23783, { 0, 0, height },
+ { 16, 16, 2 }, { 0, 16, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24649, { 0, 0, height }, { 16, 16, 2 },
{ 0, 16, height });
@@ -2309,14 +2296,14 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23788, { 0, 0, height }, { 16, 16, 2 },
- { 16, 16, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23788, { 0, 0, height },
+ { 16, 16, 2 }, { 16, 16, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24654, { 0, 0, height }, { 16, 16, 2 },
{ 16, 16, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23814, { 0, 0, height }, { 16, 16, 0 },
- { 16, 16, height + 59 });
+ session, direction, wooden_rc_get_track_colour(session) | 23814, { 0, 0, height },
+ { 16, 16, 0 }, { 16, 16, height + 59 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24680, { 0, 0, height }, { 16, 16, 0 },
{ 16, 16, height + 59 });
@@ -2324,8 +2311,8 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23793, { 0, 0, height }, { 16, 16, 2 },
- { 16, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23793, { 0, 0, height },
+ { 16, 16, 2 }, { 16, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24659, { 0, 0, height }, { 16, 16, 2 },
{ 16, 0, height });
@@ -2333,14 +2320,14 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23798, { 0, 0, height }, { 16, 16, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23798, { 0, 0, height },
+ { 16, 16, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24664, { 0, 0, height }, { 16, 16, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23820, { 0, 0, height }, { 16, 16, 0 },
- { 0, 0, height + 59 });
+ session, direction, wooden_rc_get_track_colour(session) | 23820, { 0, 0, height },
+ { 16, 16, 0 }, { 0, 0, height + 59 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24686, { 0, 0, height }, { 16, 16, 0 },
{ 0, 0, height + 59 });
@@ -2365,8 +2352,8 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23784, { 0, 0, height }, { 16, 32, 2 },
- { 16, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23784, { 0, 0, height },
+ { 16, 32, 2 }, { 16, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24650, { 0, 0, height }, { 16, 32, 2 },
{ 16, 0, height });
@@ -2374,14 +2361,14 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23789, { 0, 0, height }, { 16, 32, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23789, { 0, 0, height },
+ { 16, 32, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24655, { 0, 0, height }, { 16, 32, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23815, { 0, 0, height }, { 16, 32, 0 },
- { 0, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23815, { 0, 0, height },
+ { 16, 32, 0 }, { 0, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24681, { 0, 0, height }, { 16, 32, 0 },
{ 0, 0, height + 67 });
@@ -2389,14 +2376,14 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23794, { 0, 0, height }, { 16, 32, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23794, { 0, 0, height },
+ { 16, 32, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24660, { 0, 0, height }, { 16, 32, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23817, { 0, 0, height }, { 16, 32, 0 },
- { 0, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23817, { 0, 0, height },
+ { 16, 32, 0 }, { 0, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24683, { 0, 0, height }, { 16, 32, 0 },
{ 0, 0, height + 67 });
@@ -2404,14 +2391,14 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23799, { 0, 0, height }, { 16, 32, 2 },
- { 16, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23799, { 0, 0, height },
+ { 16, 32, 2 }, { 16, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24665, { 0, 0, height }, { 16, 32, 2 },
{ 16, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23821, { 0, 0, height }, { 16, 32, 0 },
- { 16, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23821, { 0, 0, height },
+ { 16, 32, 0 }, { 16, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24687, { 0, 0, height }, { 16, 32, 0 },
{ 16, 0, height + 67 });
@@ -2430,8 +2417,8 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23785, { 0, 0, height }, { 27, 32, 2 },
- { 2, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23785, { 0, 0, height },
+ { 27, 32, 2 }, { 2, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24651, { 0, 0, height }, { 27, 32, 2 },
{ 2, 0, height });
@@ -2439,14 +2426,14 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23790, { 0, 0, height }, { 27, 32, 2 },
- { 2, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23790, { 0, 0, height },
+ { 27, 32, 2 }, { 2, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24656, { 0, 0, height }, { 27, 32, 2 },
{ 2, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23816, { 0, 0, height }, { 27, 32, 0 },
- { 2, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23816, { 0, 0, height },
+ { 27, 32, 0 }, { 2, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24682, { 0, 0, height }, { 27, 32, 0 },
{ 2, 0, height + 67 });
@@ -2454,14 +2441,14 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23795, { 0, 0, height }, { 27, 32, 2 },
- { 2, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23795, { 0, 0, height },
+ { 27, 32, 2 }, { 2, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24661, { 0, 0, height }, { 27, 32, 2 },
{ 2, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23818, { 0, 0, height }, { 27, 32, 0 },
- { 2, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23818, { 0, 0, height },
+ { 27, 32, 0 }, { 2, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24684, { 0, 0, height }, { 27, 32, 0 },
{ 2, 0, height + 67 });
@@ -2469,14 +2456,14 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23800, { 0, 0, height }, { 27, 32, 2 },
- { 2, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23800, { 0, 0, height },
+ { 27, 32, 2 }, { 2, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24666, { 0, 0, height }, { 27, 32, 2 },
{ 2, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23822, { 0, 0, height }, { 27, 32, 0 },
- { 2, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23822, { 0, 0, height },
+ { 27, 32, 0 }, { 2, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24688, { 0, 0, height }, { 27, 32, 0 },
{ 2, 0, height + 67 });
@@ -2499,6 +2486,7 @@ static void wooden_rc_track_left_quarter_turn_5_25_deg_up(
}
/** rct2: 0x008AC768 */
+template
static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -2510,8 +2498,8 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23761, { 0, 0, height }, { 32, 27, 2 },
- { 0, 2, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23761, { 0, 0, height },
+ { 32, 27, 2 }, { 0, 2, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24627, { 0, 0, height }, { 32, 27, 2 },
{ 0, 2, height });
@@ -2519,8 +2507,8 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23766, { 0, 0, height }, { 32, 27, 2 },
- { 0, 2, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23766, { 0, 0, height },
+ { 32, 27, 2 }, { 0, 2, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24632, { 0, 0, height }, { 32, 27, 2 },
{ 0, 2, height });
@@ -2528,14 +2516,14 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23771, { 0, 0, height }, { 32, 27, 2 },
- { 0, 2, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23771, { 0, 0, height },
+ { 32, 27, 2 }, { 0, 2, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24637, { 0, 0, height }, { 32, 27, 2 },
{ 0, 2, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23807, { 0, 0, height }, { 32, 27, 0 },
- { 0, 2, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23807, { 0, 0, height },
+ { 32, 27, 0 }, { 0, 2, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24673, { 0, 0, height }, { 32, 27, 0 },
{ 0, 2, height + 67 });
@@ -2543,8 +2531,8 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23776, { 0, 0, height }, { 32, 27, 2 },
- { 0, 2, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23776, { 0, 0, height },
+ { 32, 27, 2 }, { 0, 2, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24642, { 0, 0, height }, { 32, 27, 2 },
{ 0, 2, height });
@@ -2568,14 +2556,14 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23762, { 0, 0, height }, { 32, 16, 2 },
- { 0, 16, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23762, { 0, 0, height },
+ { 32, 16, 2 }, { 0, 16, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24628, { 0, 0, height }, { 32, 16, 2 },
{ 0, 16, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23801, { 0, 0, height }, { 32, 16, 0 },
- { 0, 16, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23801, { 0, 0, height },
+ { 32, 16, 0 }, { 0, 16, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24667, { 0, 0, height }, { 32, 16, 0 },
{ 0, 16, height + 67 });
@@ -2583,8 +2571,8 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23767, { 0, 0, height }, { 32, 16, 2 },
- { 0, 16, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23767, { 0, 0, height },
+ { 32, 16, 2 }, { 0, 16, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24633, { 0, 0, height }, { 32, 16, 2 },
{ 0, 16, height });
@@ -2592,14 +2580,14 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23772, { 0, 0, height }, { 32, 16, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23772, { 0, 0, height },
+ { 32, 16, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24638, { 0, 0, height }, { 32, 16, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23808, { 0, 0, height }, { 32, 16, 0 },
- { 0, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23808, { 0, 0, height },
+ { 32, 16, 0 }, { 0, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24674, { 0, 0, height }, { 32, 16, 0 },
{ 0, 0, height + 67 });
@@ -2607,8 +2595,8 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23777, { 0, 0, height }, { 32, 16, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23777, { 0, 0, height },
+ { 32, 16, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24643, { 0, 0, height }, { 32, 16, 2 },
{ 0, 0, height });
@@ -2627,14 +2615,14 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23763, { 0, 0, height }, { 16, 16, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23763, { 0, 0, height },
+ { 16, 16, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24629, { 0, 0, height }, { 16, 16, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23802, { 0, 0, height }, { 16, 16, 0 },
- { 0, 0, height + 59 });
+ session, direction, wooden_rc_get_track_colour(session) | 23802, { 0, 0, height },
+ { 16, 16, 0 }, { 0, 0, height + 59 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24668, { 0, 0, height }, { 16, 16, 0 },
{ 0, 0, height + 59 });
@@ -2642,8 +2630,8 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23768, { 0, 0, height }, { 16, 16, 2 },
- { 16, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23768, { 0, 0, height },
+ { 16, 16, 2 }, { 16, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24634, { 0, 0, height }, { 16, 16, 2 },
{ 16, 0, height });
@@ -2651,14 +2639,14 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23773, { 0, 0, height }, { 16, 16, 2 },
- { 16, 16, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23773, { 0, 0, height },
+ { 16, 16, 2 }, { 16, 16, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24639, { 0, 0, height }, { 16, 16, 2 },
{ 16, 16, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23809, { 0, 0, height }, { 16, 16, 0 },
- { 16, 16, height + 59 });
+ session, direction, wooden_rc_get_track_colour(session) | 23809, { 0, 0, height },
+ { 16, 16, 0 }, { 16, 16, height + 59 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24675, { 0, 0, height }, { 16, 16, 0 },
{ 16, 16, height + 59 });
@@ -2666,8 +2654,8 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23778, { 0, 0, height }, { 16, 16, 2 },
- { 0, 16, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23778, { 0, 0, height },
+ { 16, 16, 2 }, { 0, 16, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24644, { 0, 0, height }, { 16, 16, 2 },
{ 0, 16, height });
@@ -2692,14 +2680,14 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23764, { 0, 0, height }, { 16, 32, 2 },
- { 16, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23764, { 0, 0, height },
+ { 16, 32, 2 }, { 16, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24630, { 0, 0, height }, { 16, 32, 2 },
{ 16, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23803, { 0, 0, height }, { 16, 32, 0 },
- { 16, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23803, { 0, 0, height },
+ { 16, 32, 0 }, { 16, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24669, { 0, 0, height }, { 16, 32, 0 },
{ 16, 0, height + 67 });
@@ -2707,14 +2695,14 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23769, { 0, 0, height }, { 16, 32, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23769, { 0, 0, height },
+ { 16, 32, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24635, { 0, 0, height }, { 16, 32, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23805, { 0, 0, height }, { 16, 32, 0 },
- { 0, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23805, { 0, 0, height },
+ { 16, 32, 0 }, { 0, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24671, { 0, 0, height }, { 16, 32, 0 },
{ 0, 0, height + 67 });
@@ -2722,14 +2710,14 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23774, { 0, 0, height }, { 16, 32, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23774, { 0, 0, height },
+ { 16, 32, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24640, { 0, 0, height }, { 16, 32, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23810, { 0, 0, height }, { 16, 32, 0 },
- { 0, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23810, { 0, 0, height },
+ { 16, 32, 0 }, { 0, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24676, { 0, 0, height }, { 16, 32, 0 },
{ 0, 0, height + 67 });
@@ -2737,8 +2725,8 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23779, { 0, 0, height }, { 16, 32, 2 },
- { 16, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23779, { 0, 0, height },
+ { 16, 32, 2 }, { 16, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24645, { 0, 0, height }, { 16, 32, 2 },
{ 16, 0, height });
@@ -2757,14 +2745,14 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23765, { 0, 0, height }, { 27, 32, 2 },
- { 2, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23765, { 0, 0, height },
+ { 27, 32, 2 }, { 2, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24631, { 0, 0, height }, { 27, 32, 2 },
{ 2, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23804, { 0, 0, height }, { 27, 32, 0 },
- { 2, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23804, { 0, 0, height },
+ { 27, 32, 0 }, { 2, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24670, { 0, 0, height }, { 27, 32, 0 },
{ 2, 0, height + 67 });
@@ -2772,14 +2760,14 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23770, { 0, 0, height }, { 27, 32, 2 },
- { 2, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23770, { 0, 0, height },
+ { 27, 32, 2 }, { 2, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24636, { 0, 0, height }, { 27, 32, 2 },
{ 2, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23806, { 0, 0, height }, { 27, 32, 0 },
- { 2, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23806, { 0, 0, height },
+ { 27, 32, 0 }, { 2, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24672, { 0, 0, height }, { 27, 32, 0 },
{ 2, 0, height + 67 });
@@ -2787,14 +2775,14 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23775, { 0, 0, height }, { 27, 32, 2 },
- { 2, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23775, { 0, 0, height },
+ { 27, 32, 2 }, { 2, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24641, { 0, 0, height }, { 27, 32, 2 },
{ 2, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23811, { 0, 0, height }, { 27, 32, 0 },
- { 2, 0, height + 67 });
+ session, direction, wooden_rc_get_track_colour(session) | 23811, { 0, 0, height },
+ { 27, 32, 0 }, { 2, 0, height + 67 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24677, { 0, 0, height }, { 27, 32, 0 },
{ 2, 0, height + 67 });
@@ -2802,8 +2790,8 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23780, { 0, 0, height }, { 27, 32, 2 },
- { 2, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23780, { 0, 0, height },
+ { 27, 32, 2 }, { 2, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24646, { 0, 0, height }, { 27, 32, 2 },
{ 2, 0, height });
@@ -2826,24 +2814,29 @@ static void wooden_rc_track_right_quarter_turn_5_25_deg_up(
}
/** rct2: 0x008AC778 */
+template
static void wooden_rc_track_left_quarter_turn_5_25_deg_down(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence];
- wooden_rc_track_right_quarter_turn_5_25_deg_up(session, ride, trackSequence, (direction + 1) & 3, height, trackElement);
+ wooden_rc_track_right_quarter_turn_5_25_deg_up(
+ session, ride, trackSequence, (direction + 1) & 3, height, trackElement);
}
/** rct2: 0x008AC788 */
+template
static void wooden_rc_track_right_quarter_turn_5_25_deg_down(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence];
- wooden_rc_track_left_quarter_turn_5_25_deg_up(session, ride, trackSequence, (direction - 1) & 3, height, trackElement);
+ wooden_rc_track_left_quarter_turn_5_25_deg_up(
+ session, ride, trackSequence, (direction - 1) & 3, height, trackElement);
}
/** rct2: 0x008AC798 */
+template
static void wooden_rc_track_s_bend_left(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -2855,8 +2848,8 @@ static void wooden_rc_track_s_bend_left(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23725, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23725, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24591, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
@@ -2864,14 +2857,14 @@ static void wooden_rc_track_s_bend_left(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23729, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23729, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24595, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23741, { 0, 0, height }, { 32, 25, 0 },
- { 0, 3, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23741, { 0, 0, height },
+ { 32, 25, 0 }, { 0, 3, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24607, { 0, 0, height }, { 32, 25, 0 },
{ 0, 3, height + 27 });
@@ -2879,8 +2872,8 @@ static void wooden_rc_track_s_bend_left(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23728, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23728, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24594, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
@@ -2888,14 +2881,14 @@ static void wooden_rc_track_s_bend_left(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23732, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23732, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24598, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23744, { 0, 0, height }, { 32, 27, 0 },
- { 0, 2, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23744, { 0, 0, height },
+ { 32, 27, 0 }, { 0, 2, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24610, { 0, 0, height }, { 32, 27, 0 },
{ 0, 2, height + 27 });
@@ -2914,8 +2907,8 @@ static void wooden_rc_track_s_bend_left(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23726, { 0, 0, height }, { 32, 26, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23726, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24592, { 0, 0, height }, { 32, 26, 2 },
{ 0, 0, height });
@@ -2923,14 +2916,14 @@ static void wooden_rc_track_s_bend_left(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23730, { 0, 0, height }, { 32, 26, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23730, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24596, { 0, 0, height }, { 32, 26, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23742, { 0, 0, height }, { 32, 26, 0 },
- { 0, 0, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23742, { 0, 0, height },
+ { 32, 26, 0 }, { 0, 0, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24608, { 0, 0, height }, { 32, 26, 0 },
{ 0, 0, height + 27 });
@@ -2938,8 +2931,8 @@ static void wooden_rc_track_s_bend_left(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23727, { 0, 0, height }, { 32, 26, 2 },
- { 0, 6, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23727, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 6, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24593, { 0, 0, height }, { 32, 26, 2 },
{ 0, 6, height });
@@ -2947,14 +2940,14 @@ static void wooden_rc_track_s_bend_left(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23731, { 0, 0, height }, { 32, 26, 2 },
- { 0, 6, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23731, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 6, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24597, { 0, 0, height }, { 32, 26, 2 },
{ 0, 6, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23743, { 0, 0, height }, { 32, 26, 0 },
- { 0, 6, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23743, { 0, 0, height },
+ { 32, 26, 0 }, { 0, 6, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24609, { 0, 0, height }, { 32, 26, 0 },
{ 0, 6, height + 27 });
@@ -2973,8 +2966,8 @@ static void wooden_rc_track_s_bend_left(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23727, { 0, 0, height }, { 32, 26, 2 },
- { 0, 6, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23727, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 6, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24593, { 0, 0, height }, { 32, 26, 2 },
{ 0, 6, height });
@@ -2982,14 +2975,14 @@ static void wooden_rc_track_s_bend_left(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23731, { 0, 0, height }, { 32, 26, 2 },
- { 0, 6, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23731, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 6, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24597, { 0, 0, height }, { 32, 26, 2 },
{ 0, 6, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23743, { 0, 0, height }, { 32, 26, 0 },
- { 0, 6, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23743, { 0, 0, height },
+ { 32, 26, 0 }, { 0, 6, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24609, { 0, 0, height }, { 32, 26, 0 },
{ 0, 6, height + 27 });
@@ -2997,8 +2990,8 @@ static void wooden_rc_track_s_bend_left(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23726, { 0, 0, height }, { 32, 26, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23726, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24592, { 0, 0, height }, { 32, 26, 2 },
{ 0, 0, height });
@@ -3006,14 +2999,14 @@ static void wooden_rc_track_s_bend_left(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23730, { 0, 0, height }, { 32, 26, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23730, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24596, { 0, 0, height }, { 32, 26, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23742, { 0, 0, height }, { 32, 26, 0 },
- { 0, 0, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23742, { 0, 0, height },
+ { 32, 26, 0 }, { 0, 0, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24608, { 0, 0, height }, { 32, 26, 0 },
{ 0, 0, height + 27 });
@@ -3032,8 +3025,8 @@ static void wooden_rc_track_s_bend_left(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23728, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23728, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24594, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
@@ -3041,14 +3034,14 @@ static void wooden_rc_track_s_bend_left(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23732, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23732, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24598, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23744, { 0, 0, height }, { 32, 27, 0 },
- { 0, 2, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23744, { 0, 0, height },
+ { 32, 27, 0 }, { 0, 2, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24610, { 0, 0, height }, { 32, 27, 0 },
{ 0, 2, height + 27 });
@@ -3056,8 +3049,8 @@ static void wooden_rc_track_s_bend_left(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23725, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23725, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24591, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
@@ -3065,14 +3058,14 @@ static void wooden_rc_track_s_bend_left(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23729, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23729, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24595, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23741, { 0, 0, height }, { 32, 25, 0 },
- { 0, 3, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23741, { 0, 0, height },
+ { 32, 25, 0 }, { 0, 3, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24607, { 0, 0, height }, { 32, 25, 0 },
{ 0, 3, height + 27 });
@@ -3095,6 +3088,7 @@ static void wooden_rc_track_s_bend_left(
}
/** rct2: 0x008AC7A8 */
+template
static void wooden_rc_track_s_bend_right(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -3106,14 +3100,14 @@ static void wooden_rc_track_s_bend_right(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23733, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23733, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24599, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23745, { 0, 0, height }, { 32, 25, 0 },
- { 0, 3, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23745, { 0, 0, height },
+ { 32, 25, 0 }, { 0, 3, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24611, { 0, 0, height }, { 32, 25, 0 },
{ 0, 3, height + 27 });
@@ -3121,8 +3115,8 @@ static void wooden_rc_track_s_bend_right(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23737, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23737, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24603, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
@@ -3130,14 +3124,14 @@ static void wooden_rc_track_s_bend_right(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23736, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23736, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24602, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23748, { 0, 0, height }, { 32, 25, 0 },
- { 0, 3, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23748, { 0, 0, height },
+ { 32, 25, 0 }, { 0, 3, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24614, { 0, 0, height }, { 32, 25, 0 },
{ 0, 3, height + 27 });
@@ -3145,8 +3139,8 @@ static void wooden_rc_track_s_bend_right(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23740, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23740, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24606, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
@@ -3165,14 +3159,14 @@ static void wooden_rc_track_s_bend_right(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23734, { 0, 0, height }, { 32, 26, 2 },
- { 0, 6, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23734, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 6, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24600, { 0, 0, height }, { 32, 26, 2 },
{ 0, 6, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23746, { 0, 0, height }, { 32, 26, 0 },
- { 0, 6, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23746, { 0, 0, height },
+ { 32, 26, 0 }, { 0, 6, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24612, { 0, 0, height }, { 32, 26, 0 },
{ 0, 6, height + 27 });
@@ -3180,8 +3174,8 @@ static void wooden_rc_track_s_bend_right(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23738, { 0, 0, height }, { 32, 26, 2 },
- { 0, 6, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23738, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 6, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24604, { 0, 0, height }, { 32, 26, 2 },
{ 0, 6, height });
@@ -3189,14 +3183,14 @@ static void wooden_rc_track_s_bend_right(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23735, { 0, 0, height }, { 32, 26, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23735, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24601, { 0, 0, height }, { 32, 26, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23747, { 0, 0, height }, { 32, 26, 0 },
- { 0, 0, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23747, { 0, 0, height },
+ { 32, 26, 0 }, { 0, 0, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24613, { 0, 0, height }, { 32, 26, 0 },
{ 0, 0, height + 27 });
@@ -3204,8 +3198,8 @@ static void wooden_rc_track_s_bend_right(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23739, { 0, 0, height }, { 32, 26, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23739, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24605, { 0, 0, height }, { 32, 26, 2 },
{ 0, 0, height });
@@ -3224,14 +3218,14 @@ static void wooden_rc_track_s_bend_right(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23735, { 0, 0, height }, { 32, 26, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23735, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24601, { 0, 0, height }, { 32, 26, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23747, { 0, 0, height }, { 32, 26, 0 },
- { 0, 0, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23747, { 0, 0, height },
+ { 32, 26, 0 }, { 0, 0, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24613, { 0, 0, height }, { 32, 26, 0 },
{ 0, 0, height + 27 });
@@ -3239,8 +3233,8 @@ static void wooden_rc_track_s_bend_right(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23739, { 0, 0, height }, { 32, 26, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23739, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24605, { 0, 0, height }, { 32, 26, 2 },
{ 0, 0, height });
@@ -3248,14 +3242,14 @@ static void wooden_rc_track_s_bend_right(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23734, { 0, 0, height }, { 32, 26, 2 },
- { 0, 6, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23734, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 6, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24600, { 0, 0, height }, { 32, 26, 2 },
{ 0, 6, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23746, { 0, 0, height }, { 32, 26, 0 },
- { 0, 6, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23746, { 0, 0, height },
+ { 32, 26, 0 }, { 0, 6, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24612, { 0, 0, height }, { 32, 26, 0 },
{ 0, 6, height + 27 });
@@ -3263,8 +3257,8 @@ static void wooden_rc_track_s_bend_right(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23738, { 0, 0, height }, { 32, 26, 2 },
- { 0, 6, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23738, { 0, 0, height },
+ { 32, 26, 2 }, { 0, 6, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24604, { 0, 0, height }, { 32, 26, 2 },
{ 0, 6, height });
@@ -3283,14 +3277,14 @@ static void wooden_rc_track_s_bend_right(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23736, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23736, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24602, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23748, { 0, 0, height }, { 32, 25, 0 },
- { 0, 3, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23748, { 0, 0, height },
+ { 32, 25, 0 }, { 0, 3, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24614, { 0, 0, height }, { 32, 25, 0 },
{ 0, 3, height + 27 });
@@ -3298,8 +3292,8 @@ static void wooden_rc_track_s_bend_right(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23740, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23740, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24606, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
@@ -3307,14 +3301,14 @@ static void wooden_rc_track_s_bend_right(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23733, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23733, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24599, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23745, { 0, 0, height }, { 32, 25, 0 },
- { 0, 3, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23745, { 0, 0, height },
+ { 32, 25, 0 }, { 0, 3, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24611, { 0, 0, height }, { 32, 25, 0 },
{ 0, 3, height + 27 });
@@ -3322,8 +3316,8 @@ static void wooden_rc_track_s_bend_right(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23737, { 0, 0, height }, { 32, 25, 2 },
- { 0, 3, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23737, { 0, 0, height },
+ { 32, 25, 2 }, { 0, 3, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24603, { 0, 0, height }, { 32, 25, 2 },
{ 0, 3, height });
@@ -3346,6 +3340,7 @@ static void wooden_rc_track_s_bend_right(
}
/** rct2: 0x008ACE18 */
+template
static void wooden_rc_track_left_vertical_loop(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -3603,6 +3598,7 @@ static void wooden_rc_track_left_vertical_loop(
}
/** rct2: 0x008ACE28 */
+template
static void wooden_rc_track_right_vertical_loop(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -3828,6 +3824,7 @@ static void wooden_rc_track_right_vertical_loop(
}
/** rct2: 0x008AC7E8 */
+template
static void wooden_rc_track_left_quarter_turn_3(
paint_session& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
@@ -3839,8 +3836,8 @@ static void wooden_rc_track_left_quarter_turn_3(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23828, { 0, 6, height }, { 32, 20, 2 },
- { 0, 6, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23828, { 0, 6, height },
+ { 32, 20, 2 }, { 0, 6, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24694, { 0, 6, height }, { 32, 20, 2 },
{ 0, 6, height });
@@ -3848,14 +3845,14 @@ static void wooden_rc_track_left_quarter_turn_3(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23831, { 0, 6, height }, { 32, 20, 2 },
- { 0, 6, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23831, { 0, 6, height },
+ { 32, 20, 2 }, { 0, 6, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24697, { 0, 6, height }, { 32, 20, 2 },
{ 0, 6, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23840, { 0, 6, height }, { 32, 20, 0 },
- { 0, 6, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23840, { 0, 6, height },
+ { 32, 20, 0 }, { 0, 6, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24706, { 0, 6, height }, { 32, 20, 0 },
{ 0, 6, height + 27 });
@@ -3863,8 +3860,8 @@ static void wooden_rc_track_left_quarter_turn_3(
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23834, { 0, 6, height }, { 32, 20, 2 },
- { 0, 6, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23834, { 0, 6, height },
+ { 32, 20, 2 }, { 0, 6, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24700, { 0, 6, height }, { 32, 20, 2 },
{ 0, 6, height });
@@ -3872,14 +3869,14 @@ static void wooden_rc_track_left_quarter_turn_3(
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23825, { 0, 6, height }, { 32, 20, 2 },
- { 0, 6, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23825, { 0, 6, height },
+ { 32, 20, 2 }, { 0, 6, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24691, { 0, 6, height }, { 32, 20, 2 },
{ 0, 6, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23837, { 0, 6, height }, { 32, 20, 0 },
- { 0, 6, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23837, { 0, 6, height },
+ { 32, 20, 0 }, { 0, 6, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24703, { 0, 6, height }, { 32, 20, 0 },
{ 0, 6, height + 27 });
@@ -3901,44 +3898,44 @@ static void wooden_rc_track_left_quarter_turn_3(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23827, { 16, 0, height }, { 16, 16, 2 },
- { 16, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23827, { 16, 0, height },
+ { 16, 16, 2 }, { 16, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24693, { 16, 0, height }, { 16, 16, 2 },
{ 16, 0, height });
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23830, { 0, 0, height }, { 16, 16, 2 },
- { 0, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23830, { 0, 0, height },
+ { 16, 16, 2 }, { 0, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24696, { 0, 0, height }, { 16, 16, 2 },
{ 0, 0, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23839, { 0, 0, height }, { 16, 16, 0 },
- { 0, 0, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23839, { 0, 0, height },
+ { 16, 16, 0 }, { 0, 0, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24705, { 0, 0, height }, { 16, 16, 0 },
{ 0, 0, height + 27 });
break;
case 2:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23833, { 0, 16, height }, { 16, 16, 2 },
- { 0, 16, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23833, { 0, 16, height },
+ { 16, 16, 2 }, { 0, 16, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24699, { 0, 16, height }, { 16, 16, 2 },
{ 0, 16, height });
break;
case 3:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23824, { 16, 16, height }, { 16, 16, 2 },
- { 16, 16, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23824, { 16, 16, height },
+ { 16, 16, 2 }, { 16, 16, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24690, { 16, 16, height }, { 16, 16, 2 },
{ 16, 16, height });
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23836, { 16, 16, height }, { 16, 16, 0 },
- { 16, 16, height + 27 });
+ session, direction, wooden_rc_get_track_colour(session) | 23836, { 16, 16, height },
+ { 16, 16, 0 }, { 16, 16, height + 27 });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24702, { 16, 16, height }, { 16, 16, 0 },
{ 16, 16, height + 27 });
@@ -3953,8 +3950,8 @@ static void wooden_rc_track_left_quarter_turn_3(
{
case 0:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23826, { 6, 0, height }, { 20, 32, 2 },
- { 6, 0, height });
+ session, direction, wooden_rc_get_track_colour(session) | 23826, { 6, 0, height },
+ { 20, 32, 2 }, { 6, 0, height });
PaintAddImageAsChildRotated(
session, direction, wooden_rc_get_rails_colour(session) | 24692, { 6, 0, height }, { 20, 32, 2 },
{ 6, 0, height });
@@ -3962,14 +3959,14 @@ static void wooden_rc_track_left_quarter_turn_3(
break;
case 1:
PaintAddImageAsParentRotated(
- session, direction, wooden_rc_get_track_colour(session) | 23829, { 6, 0, height }, { 20, 32, 2 },
- { 6, 0, height });
+ session, direction, wooden_rc_get_track_colour