1 /*****************************************************************************
2  * Copyright (c) 2014-2020 OpenRCT2 developers
3  *
4  * For a complete list of all authors, please refer to contributors.md
5  * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
6  *
7  * OpenRCT2 is licensed under the GNU General Public License version 3.
8  *****************************************************************************/
9 
10 #pragma once
11 
12 #include "Track.h"
13 
14 #include <cstdint>
15 
16 constexpr const size_t VehicleTrackSubpositionSizeDefault = TrackElemType::Count * NumOrthogonalDirections;
17 
18 struct rct_vehicle_info;
19 
20 enum class VehicleTrackSubposition : uint8_t
21 {
22     Default,
23     // Going out means "moving away from the start". Viewed from Station 1, this is the left hand side of the track.
24     ChairliftGoingOut,
25     ChairliftGoingBack,
26     // End and start bullwheel as viewed from Station 1.
27     ChairliftEndBullwheel,
28     ChairliftStartBullwheel,
29     GoKartsLeftLane,
30     GoKartsRightLane,
31     GoKartsMovingToRightLane,
32     GoKartsMovingToLeftLane,
33     MiniGolfStart9 = 9,
34     MiniGolfPathA9 = 9,
35     MiniGolfBallPathA10,
36     MiniGolfPathB11,
37     MiniGolfBallPathB12,
38     MiniGolfPathC13,
39     MiniGolfBallPathC14,
40     ReverserRCFrontBogie,
41     ReverserRCRearBogie,
42 
43     Count,
44 };
45 
46 struct rct_vehicle_info_list
47 {
48     uint16_t size;
49     const rct_vehicle_info* info;
50 };
51 
52 extern const rct_vehicle_info_list* const* const gTrackVehicleInfo[EnumValue(VehicleTrackSubposition::Count)];
53