Track.cpp and Track.h: fix formatting

This commit is contained in:
Michael Steenbeek 2017-10-17 13:55:53 +02:00
parent bb01699b7d
commit a1621e4eb1
2 changed files with 869 additions and 534 deletions

File diff suppressed because it is too large Load Diff

View File

@ -14,15 +14,15 @@
*****************************************************************************/ *****************************************************************************/
#pragma endregion #pragma endregion
#ifndef _TRACK_H_ #pragma once
#define _TRACK_H_
#include "../common.h" #include "../common.h"
#include "../object.h" #include "../object.h"
#include "ride.h" #include "ride.h"
#pragma pack(push, 1) #pragma pack(push, 1)
typedef struct rct_trackdefinition { typedef struct rct_trackdefinition
{
uint8 type; uint8 type;
uint8 vangle_end; uint8 vangle_end;
uint8 vangle_start; uint8 vangle_start;
@ -37,41 +37,45 @@ assert_struct_size(rct_trackdefinition, 8);
/** /**
* Size: 0x0A * Size: 0x0A
*/ */
typedef struct rct_preview_track { typedef struct rct_preview_track
uint8 index; // 0x00 {
uint8 index; // 0x00
sint16 x; // 0x01 sint16 x; // 0x01
sint16 y; // 0x03 sint16 y; // 0x03
sint16 z; // 0x05 sint16 z; // 0x05
uint8 var_07; uint8 var_07;
uint8 var_08; uint8 var_08;
uint8 var_09; uint8 var_09;
} rct_preview_track; } rct_preview_track;
/* size 0x0A */ /* size 0x0A */
typedef struct rct_track_coordinates { typedef struct rct_track_coordinates
sint8 rotation_begin; // 0x00 {
sint8 rotation_end; // 0x01 sint8 rotation_begin; // 0x00
sint8 rotation_end; // 0x01
sint16 z_begin; // 0x02 sint16 z_begin; // 0x02
sint16 z_end; // 0x04 sint16 z_end; // 0x04
sint16 x; // 0x06 sint16 x; // 0x06
sint16 y; // 0x08 sint16 y; // 0x08
} rct_track_coordinates; } rct_track_coordinates;
enum { enum
{
TRACK_ELEMENT_FLAG_TERMINAL_STATION = 1 << 3, TRACK_ELEMENT_FLAG_TERMINAL_STATION = 1 << 3,
TRACK_ELEMENT_FLAG_INVERTED = 1 << 6, TRACK_ELEMENT_FLAG_INVERTED = 1 << 6,
TRACK_ELEMENT_FLAG_CHAIN_LIFT = 1 << 7, TRACK_ELEMENT_FLAG_CHAIN_LIFT = 1 << 7,
}; };
enum { enum
{
// Not anything to do with colour but uses // Not anything to do with colour but uses
// that field in the map element // that field in the map element
// Used for multi-dimension coaster // Used for multi-dimension coaster
TRACK_ELEMENT_COLOUR_FLAG_INVERTED = (1 << 2), TRACK_ELEMENT_COLOUR_FLAG_INVERTED = (1 << 2),
// Used for giga coaster // Used for giga coaster
TRACK_ELEMENT_COLOUR_FLAG_CABLE_LIFT = (1 << 3), TRACK_ELEMENT_COLOUR_FLAG_CABLE_LIFT = (1 << 3),
}; };
#define TRACK_ELEMENT_FLAG_MAGNITUDE_MASK 0x0F #define TRACK_ELEMENT_FLAG_MAGNITUDE_MASK 0x0F
@ -80,10 +84,11 @@ enum {
#define MAX_STATION_PLATFORM_LENGTH 32 #define MAX_STATION_PLATFORM_LENGTH 32
enum { enum
{
TRACK_NONE = 0, TRACK_NONE = 0,
TRACK_FLAT = 0, TRACK_FLAT = 0,
TRACK_STRAIGHT, TRACK_STRAIGHT,
TRACK_STATION_END, TRACK_STATION_END,
TRACK_LIFT_HILL, TRACK_LIFT_HILL,
@ -140,75 +145,81 @@ enum {
TRACK_HALF_LOOP_INVERTED, TRACK_HALF_LOOP_INVERTED,
TRACK_BOOSTER = TRACK_ROTATION_CONTROL_TOGGLE, TRACK_BOOSTER = TRACK_ROTATION_CONTROL_TOGGLE,
TRACK_WATERFALL = 152, TRACK_WATERFALL = 152,
TRACK_WHIRLPOOL = 152, TRACK_WHIRLPOOL = 152,
TRACK_BRAKE_FOR_DROP = 172, TRACK_BRAKE_FOR_DROP = 172,
TRACK_190 = 190, TRACK_190 = 190,
TRACK_192 = 192, TRACK_192 = 192,
TRACK_194 = 194, TRACK_194 = 194,
TRACK_MINI_GOLF_HOLE = 195, TRACK_MINI_GOLF_HOLE = 195,
}; };
enum { enum
TRACK_CURVE_LEFT_VERY_SMALL = 5, {
TRACK_CURVE_LEFT_SMALL = 3, TRACK_CURVE_LEFT_VERY_SMALL = 5,
TRACK_CURVE_LEFT = 1, TRACK_CURVE_LEFT_SMALL = 3,
TRACK_CURVE_LEFT_LARGE = 7, TRACK_CURVE_LEFT = 1,
TRACK_CURVE_NONE = 0, TRACK_CURVE_LEFT_LARGE = 7,
TRACK_CURVE_RIGHT_LARGE = 8, TRACK_CURVE_NONE = 0,
TRACK_CURVE_RIGHT = 2, TRACK_CURVE_RIGHT_LARGE = 8,
TRACK_CURVE_RIGHT_SMALL = 4, TRACK_CURVE_RIGHT = 2,
TRACK_CURVE_RIGHT_SMALL = 4,
TRACK_CURVE_RIGHT_VERY_SMALL = 6 TRACK_CURVE_RIGHT_VERY_SMALL = 6
}; };
enum { enum
TRACK_SLOPE_NONE = 0, {
TRACK_SLOPE_UP_25 = 2, TRACK_SLOPE_NONE = 0,
TRACK_SLOPE_UP_60 = 4, TRACK_SLOPE_UP_25 = 2,
TRACK_SLOPE_UP_60 = 4,
TRACK_SLOPE_DOWN_25 = 6, TRACK_SLOPE_DOWN_25 = 6,
TRACK_SLOPE_DOWN_60 = 8, TRACK_SLOPE_DOWN_60 = 8,
TRACK_SLOPE_UP_90 = 10, TRACK_SLOPE_UP_90 = 10,
TRACK_SLOPE_DOWN_90 = 18, TRACK_SLOPE_DOWN_90 = 18,
TRACK_VANGLE_TOWER = 10, TRACK_VANGLE_TOWER = 10,
TRACK_VANGLE_REVERSE_FREEFALL = 10 TRACK_VANGLE_REVERSE_FREEFALL = 10
}; };
enum { enum
TRACK_BANK_NONE = 0, {
TRACK_BANK_LEFT = 2, TRACK_BANK_NONE = 0,
TRACK_BANK_RIGHT = 4, TRACK_BANK_LEFT = 2,
TRACK_BANK_RIGHT = 4,
TRACK_BANK_UPSIDE_DOWN = 15, TRACK_BANK_UPSIDE_DOWN = 15,
}; };
enum { enum
TRACK_HALF_LOOP_UP = 64, {
TRACK_HALF_LOOP_DOWN = -64, TRACK_HALF_LOOP_UP = 64,
TRACK_HALF_LOOP_DOWN = -64,
TRACK_UNKNOWN_VERTICAL_LOOP = -48, TRACK_UNKNOWN_VERTICAL_LOOP = -48,
TRACK_216 = -40, TRACK_216 = -40,
TRACK_CORKSCREW_DOWN = -32 TRACK_CORKSCREW_DOWN = -32
}; };
enum { enum
TRACK_ELEM_FLAG_ONLY_UNDERWATER = (1 << 0), {
TRACK_ELEM_FLAG_TURN_LEFT = (1 << 1), TRACK_ELEM_FLAG_ONLY_UNDERWATER = (1 << 0),
TRACK_ELEM_FLAG_TURN_RIGHT = (1 << 2), TRACK_ELEM_FLAG_TURN_LEFT = (1 << 1),
TRACK_ELEM_FLAG_TURN_BANKED = (1 << 3), TRACK_ELEM_FLAG_TURN_RIGHT = (1 << 2),
TRACK_ELEM_FLAG_TURN_SLOPED = (1 << 4), TRACK_ELEM_FLAG_TURN_BANKED = (1 << 3),
TRACK_ELEM_FLAG_DOWN = (1 << 5), TRACK_ELEM_FLAG_TURN_SLOPED = (1 << 4),
TRACK_ELEM_FLAG_UP = (1 << 6), TRACK_ELEM_FLAG_DOWN = (1 << 5),
TRACK_ELEM_FLAG_NORMAL_TO_INVERSION = (1 << 7), TRACK_ELEM_FLAG_UP = (1 << 6),
TRACK_ELEM_FLAG_NORMAL_TO_INVERSION = (1 << 7),
TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT = (1 << 8), TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT = (1 << 8),
TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND = (1 << 9), TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND = (1 << 9),
TRACK_ELEM_FLAG_IS_STEEP_UP = (1 << 10), // Used to allow steep backwards lifts on roller coasters that do not allow steep forward lift hills TRACK_ELEM_FLAG_IS_STEEP_UP = (1 << 10), // Used to allow steep backwards lifts on roller coasters that do not allow steep forward lift hills
TRACK_ELEM_FLAG_HELIX = (1 << 11), TRACK_ELEM_FLAG_HELIX = (1 << 11),
TRACK_ELEM_FLAG_ALLOW_LIFT_HILL = (1 << 12), TRACK_ELEM_FLAG_ALLOW_LIFT_HILL = (1 << 12),
TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT = (1 << 13), TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT = (1 << 13),
TRACK_ELEM_FLAG_INVERSION_TO_NORMAL = (1 << 14), TRACK_ELEM_FLAG_INVERSION_TO_NORMAL = (1 << 14),
TRACK_ELEM_FLAG_BANKED = (1 << 15), // Also set on Spinning Tunnel and Log Flume reverser, probably to save a flag. TRACK_ELEM_FLAG_BANKED = (1 << 15), // Also set on Spinning Tunnel and Log Flume reverser, probably to save a flag.
}; };
enum { enum
{
TRACK_ELEM_FLAT, TRACK_ELEM_FLAT,
TRACK_ELEM_END_STATION, TRACK_ELEM_END_STATION,
TRACK_ELEM_BEGIN_STATION, TRACK_ELEM_BEGIN_STATION,
@ -219,7 +230,7 @@ enum {
TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP, TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP,
TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP, TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP,
TRACK_ELEM_25_DEG_UP_TO_FLAT, TRACK_ELEM_25_DEG_UP_TO_FLAT,
TRACK_ELEM_25_DEG_DOWN = 10, TRACK_ELEM_25_DEG_DOWN = 10,
TRACK_ELEM_60_DEG_DOWN, TRACK_ELEM_60_DEG_DOWN,
TRACK_ELEM_FLAT_TO_25_DEG_DOWN, TRACK_ELEM_FLAT_TO_25_DEG_DOWN,
TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN, TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN,
@ -229,7 +240,7 @@ enum {
TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES, TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES,
TRACK_ELEM_FLAT_TO_LEFT_BANK, TRACK_ELEM_FLAT_TO_LEFT_BANK,
TRACK_ELEM_FLAT_TO_RIGHT_BANK, TRACK_ELEM_FLAT_TO_RIGHT_BANK,
TRACK_ELEM_LEFT_BANK_TO_FLAT = 20, TRACK_ELEM_LEFT_BANK_TO_FLAT = 20,
TRACK_ELEM_RIGHT_BANK_TO_FLAT, TRACK_ELEM_RIGHT_BANK_TO_FLAT,
TRACK_ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES, TRACK_ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES,
TRACK_ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES, TRACK_ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES,
@ -239,7 +250,7 @@ enum {
TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANK, TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANK,
TRACK_ELEM_LEFT_BANK_TO_25_DEG_DOWN, TRACK_ELEM_LEFT_BANK_TO_25_DEG_DOWN,
TRACK_ELEM_RIGHT_BANK_TO_25_DEG_DOWN, TRACK_ELEM_RIGHT_BANK_TO_25_DEG_DOWN,
TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANK = 30, TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANK = 30,
TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANK, TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANK,
TRACK_ELEM_LEFT_BANK, TRACK_ELEM_LEFT_BANK,
TRACK_ELEM_RIGHT_BANK, TRACK_ELEM_RIGHT_BANK,
@ -249,7 +260,7 @@ enum {
TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN, TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN,
TRACK_ELEM_S_BEND_LEFT, TRACK_ELEM_S_BEND_LEFT,
TRACK_ELEM_S_BEND_RIGHT, TRACK_ELEM_S_BEND_RIGHT,
TRACK_ELEM_LEFT_VERTICAL_LOOP = 40, TRACK_ELEM_LEFT_VERTICAL_LOOP = 40,
TRACK_ELEM_RIGHT_VERTICAL_LOOP, TRACK_ELEM_RIGHT_VERTICAL_LOOP,
TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES, TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES,
TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES, TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES,
@ -259,7 +270,7 @@ enum {
TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP, TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP,
TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN, TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN,
TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN, TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN,
TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE = 50, TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE = 50,
TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE, TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE,
TRACK_ELEM_LEFT_TWIST_DOWN_TO_UP, TRACK_ELEM_LEFT_TWIST_DOWN_TO_UP,
TRACK_ELEM_RIGHT_TWIST_DOWN_TO_UP, TRACK_ELEM_RIGHT_TWIST_DOWN_TO_UP,
@ -269,7 +280,7 @@ enum {
TRACK_ELEM_HALF_LOOP_DOWN, TRACK_ELEM_HALF_LOOP_DOWN,
TRACK_ELEM_LEFT_CORKSCREW_UP, TRACK_ELEM_LEFT_CORKSCREW_UP,
TRACK_ELEM_RIGHT_CORKSCREW_UP, TRACK_ELEM_RIGHT_CORKSCREW_UP,
TRACK_ELEM_LEFT_CORKSCREW_DOWN = 60, TRACK_ELEM_LEFT_CORKSCREW_DOWN = 60,
TRACK_ELEM_RIGHT_CORKSCREW_DOWN, TRACK_ELEM_RIGHT_CORKSCREW_DOWN,
TRACK_ELEM_FLAT_TO_60_DEG_UP, TRACK_ELEM_FLAT_TO_60_DEG_UP,
TRACK_ELEM_60_DEG_UP_TO_FLAT, TRACK_ELEM_60_DEG_UP_TO_FLAT,
@ -279,7 +290,7 @@ enum {
TRACK_ELEM_TOWER_SECTION, TRACK_ELEM_TOWER_SECTION,
TRACK_ELEM_FLAT_COVERED, TRACK_ELEM_FLAT_COVERED,
TRACK_ELEM_25_DEG_UP_COVERED, TRACK_ELEM_25_DEG_UP_COVERED,
TRACK_ELEM_60_DEG_UP_COVERED = 70, TRACK_ELEM_60_DEG_UP_COVERED = 70,
TRACK_ELEM_FLAT_TO_25_DEG_UP_COVERED, TRACK_ELEM_FLAT_TO_25_DEG_UP_COVERED,
TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED, TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED,
TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED, TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED,
@ -289,7 +300,7 @@ enum {
TRACK_ELEM_FLAT_TO_25_DEG_DOWN_COVERED, TRACK_ELEM_FLAT_TO_25_DEG_DOWN_COVERED,
TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED, TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED,
TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED, TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED,
TRACK_ELEM_25_DEG_DOWN_TO_FLAT_COVERED = 80, TRACK_ELEM_25_DEG_DOWN_TO_FLAT_COVERED = 80,
TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED, TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED,
TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED, TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED,
TRACK_ELEM_S_BEND_LEFT_COVERED, TRACK_ELEM_S_BEND_LEFT_COVERED,
@ -299,7 +310,7 @@ enum {
TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL, TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL,
TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL, TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL,
TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL, TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL,
TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL = 90, TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL = 90,
TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE, TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE,
TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE, TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE,
TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE, TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE,
@ -309,11 +320,11 @@ enum {
TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN, TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN,
TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN, TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN,
TRACK_ELEM_BRAKES, TRACK_ELEM_BRAKES,
TRACK_ELEM_ROTATION_CONTROL_TOGGLE = 100, TRACK_ELEM_ROTATION_CONTROL_TOGGLE = 100,
TRACK_ELEM_BOOSTER = 100, TRACK_ELEM_BOOSTER = 100,
TRACK_ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP = 101, TRACK_ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP = 101,
TRACK_ELEM_MAZE = 101, TRACK_ELEM_MAZE = 101,
TRACK_ELEM_255_ALIAS = 101, // Used by the multi-dimension coaster, as TD6 cannot handle index 255. TRACK_ELEM_255_ALIAS = 101, // Used by the multi-dimension coaster, as TD6 cannot handle index 255.
TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP, TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP,
TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP, TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP,
TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN, TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN,
@ -322,7 +333,7 @@ enum {
TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_UP, TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_UP,
TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN, TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN,
TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN, TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN,
TRACK_ELEM_25_DEG_UP_LEFT_BANKED = 110, TRACK_ELEM_25_DEG_UP_LEFT_BANKED = 110,
TRACK_ELEM_25_DEG_UP_RIGHT_BANKED, TRACK_ELEM_25_DEG_UP_RIGHT_BANKED,
TRACK_ELEM_WATERFALL, TRACK_ELEM_WATERFALL,
TRACK_ELEM_RAPIDS, TRACK_ELEM_RAPIDS,
@ -332,7 +343,7 @@ enum {
TRACK_ELEM_WATER_SPLASH, TRACK_ELEM_WATER_SPLASH,
TRACK_ELEM_FLAT_TO_60_DEG_UP_LONG_BASE, TRACK_ELEM_FLAT_TO_60_DEG_UP_LONG_BASE,
TRACK_ELEM_60_DEG_UP_TO_FLAT_LONG_BASE, TRACK_ELEM_60_DEG_UP_TO_FLAT_LONG_BASE,
TRACK_ELEM_WHIRLPOOL = 120, TRACK_ELEM_WHIRLPOOL = 120,
TRACK_ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE, TRACK_ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE,
TRACK_ELEM_60_DEG_UP_TO_FLAT_LONG_BASE_122, TRACK_ELEM_60_DEG_UP_TO_FLAT_LONG_BASE_122,
TRACK_ELEM_CABLE_LIFT_HILL, TRACK_ELEM_CABLE_LIFT_HILL,
@ -342,7 +353,7 @@ enum {
TRACK_ELEM_90_DEG_DOWN, TRACK_ELEM_90_DEG_DOWN,
TRACK_ELEM_60_DEG_UP_TO_90_DEG_UP, TRACK_ELEM_60_DEG_UP_TO_90_DEG_UP,
TRACK_ELEM_90_DEG_DOWN_TO_60_DEG_DOWN, TRACK_ELEM_90_DEG_DOWN_TO_60_DEG_DOWN,
TRACK_ELEM_90_DEG_UP_TO_60_DEG_UP = 130, TRACK_ELEM_90_DEG_UP_TO_60_DEG_UP = 130,
TRACK_ELEM_60_DEG_DOWN_TO_90_DEG_DOWN, TRACK_ELEM_60_DEG_DOWN_TO_90_DEG_DOWN,
TRACK_ELEM_BRAKE_FOR_DROP, TRACK_ELEM_BRAKE_FOR_DROP,
TRACK_ELEM_LEFT_EIGHTH_TO_DIAG, TRACK_ELEM_LEFT_EIGHTH_TO_DIAG,
@ -352,7 +363,7 @@ enum {
TRACK_ELEM_LEFT_EIGHTH_BANK_TO_DIAG, TRACK_ELEM_LEFT_EIGHTH_BANK_TO_DIAG,
TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_DIAG, TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_DIAG,
TRACK_ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL, TRACK_ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL,
TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL = 140, TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL = 140,
TRACK_ELEM_DIAG_FLAT, TRACK_ELEM_DIAG_FLAT,
TRACK_ELEM_DIAG_25_DEG_UP, TRACK_ELEM_DIAG_25_DEG_UP,
TRACK_ELEM_DIAG_60_DEG_UP, TRACK_ELEM_DIAG_60_DEG_UP,
@ -362,7 +373,7 @@ enum {
TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT, TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT,
TRACK_ELEM_DIAG_25_DEG_DOWN, TRACK_ELEM_DIAG_25_DEG_DOWN,
TRACK_ELEM_DIAG_60_DEG_DOWN, TRACK_ELEM_DIAG_60_DEG_DOWN,
TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN = 150, TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN = 150,
TRACK_ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN, TRACK_ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN,
TRACK_ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN, TRACK_ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN,
TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT, TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT,
@ -372,7 +383,7 @@ enum {
TRACK_ELEM_DIAG_60_DEG_DOWN_TO_FLAT, TRACK_ELEM_DIAG_60_DEG_DOWN_TO_FLAT,
TRACK_ELEM_DIAG_FLAT_TO_LEFT_BANK, TRACK_ELEM_DIAG_FLAT_TO_LEFT_BANK,
TRACK_ELEM_DIAG_FLAT_TO_RIGHT_BANK, TRACK_ELEM_DIAG_FLAT_TO_RIGHT_BANK,
TRACK_ELEM_DIAG_LEFT_BANK_TO_FLAT = 160, TRACK_ELEM_DIAG_LEFT_BANK_TO_FLAT = 160,
TRACK_ELEM_DIAG_RIGHT_BANK_TO_FLAT, TRACK_ELEM_DIAG_RIGHT_BANK_TO_FLAT,
TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP, TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP,
TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP, TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP,
@ -382,7 +393,7 @@ enum {
TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN, TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN,
TRACK_ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK, TRACK_ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK,
TRACK_ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK, TRACK_ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK,
TRACK_ELEM_DIAG_LEFT_BANK = 170, TRACK_ELEM_DIAG_LEFT_BANK = 170,
TRACK_ELEM_DIAG_RIGHT_BANK, TRACK_ELEM_DIAG_RIGHT_BANK,
TRACK_ELEM_LOG_FLUME_REVERSER, TRACK_ELEM_LOG_FLUME_REVERSER,
TRACK_ELEM_SPINNING_TUNNEL, TRACK_ELEM_SPINNING_TUNNEL,
@ -402,7 +413,7 @@ enum {
TRACK_ELEM_LEFT_FLYER_TWIST_UP, TRACK_ELEM_LEFT_FLYER_TWIST_UP,
TRACK_ELEM_RIGHT_FLYER_TWIST_UP, TRACK_ELEM_RIGHT_FLYER_TWIST_UP,
TRACK_ELEM_LEFT_FLYER_TWIST_DOWN, TRACK_ELEM_LEFT_FLYER_TWIST_DOWN,
TRACK_ELEM_RIGHT_FLYER_TWIST_DOWN = 190, TRACK_ELEM_RIGHT_FLYER_TWIST_DOWN = 190,
TRACK_ELEM_FLYER_HALF_LOOP_UP, TRACK_ELEM_FLYER_HALF_LOOP_UP,
TRACK_ELEM_FLYER_HALF_LOOP_DOWN, TRACK_ELEM_FLYER_HALF_LOOP_DOWN,
TRACK_ELEM_LEFT_FLYER_CORKSCREW_UP, TRACK_ELEM_LEFT_FLYER_CORKSCREW_UP,
@ -412,7 +423,7 @@ enum {
TRACK_ELEM_HEARTLINE_TRANSFER_UP, TRACK_ELEM_HEARTLINE_TRANSFER_UP,
TRACK_ELEM_HEARTLINE_TRANSFER_DOWN, TRACK_ELEM_HEARTLINE_TRANSFER_DOWN,
TRACK_ELEM_LEFT_HEARTLINE_ROLL, TRACK_ELEM_LEFT_HEARTLINE_ROLL,
TRACK_ELEM_RIGHT_HEARTLINE_ROLL = 200, TRACK_ELEM_RIGHT_HEARTLINE_ROLL = 200,
TRACK_ELEM_MINI_GOLF_HOLE_A, TRACK_ELEM_MINI_GOLF_HOLE_A,
TRACK_ELEM_MINI_GOLF_HOLE_B, TRACK_ELEM_MINI_GOLF_HOLE_B,
TRACK_ELEM_MINI_GOLF_HOLE_C, TRACK_ELEM_MINI_GOLF_HOLE_C,
@ -422,7 +433,7 @@ enum {
TRACK_ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP, TRACK_ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP,
TRACK_ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN, TRACK_ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN,
TRACK_ELEM_LEFT_CURVED_LIFT_HILL, TRACK_ELEM_LEFT_CURVED_LIFT_HILL,
TRACK_ELEM_RIGHT_CURVED_LIFT_HILL = 210, TRACK_ELEM_RIGHT_CURVED_LIFT_HILL = 210,
TRACK_ELEM_LEFT_REVERSER, TRACK_ELEM_LEFT_REVERSER,
TRACK_ELEM_RIGHT_REVERSER, TRACK_ELEM_RIGHT_REVERSER,
TRACK_ELEM_AIR_THRUST_TOP_CAP, TRACK_ELEM_AIR_THRUST_TOP_CAP,
@ -470,46 +481,51 @@ enum {
TRACK_ELEM_255, TRACK_ELEM_255,
}; };
enum { enum
{
FLAT_TRACK_ELEM_1_X_4_A = 95, FLAT_TRACK_ELEM_1_X_4_A = 95,
FLAT_TRACK_ELEM_2_X_2 = 110, FLAT_TRACK_ELEM_2_X_2 = 110,
FLAT_TRACK_ELEM_4_X_4 = 111, FLAT_TRACK_ELEM_4_X_4 = 111,
FLAT_TRACK_ELEM_1_X_5 = 116, FLAT_TRACK_ELEM_1_X_5 = 116,
FLAT_TRACK_ELEM_1_X_1_A = 118, FLAT_TRACK_ELEM_1_X_1_A = 118,
FLAT_TRACK_ELEM_1_X_4_B = 119, FLAT_TRACK_ELEM_1_X_4_B = 119,
FLAT_TRACK_ELEM_1_X_1_B = 121, FLAT_TRACK_ELEM_1_X_1_B = 121,
FLAT_TRACK_ELEM_1_X_4_C = 122, FLAT_TRACK_ELEM_1_X_4_C = 122,
FLAT_TRACK_ELEM_3_X_3 = 123, FLAT_TRACK_ELEM_3_X_3 = 123,
}; };
enum { enum
TRACK_SEQUENCE_FLAG_DIRECTION_0 = (1 << 0), {
TRACK_SEQUENCE_FLAG_DIRECTION_1 = (1 << 1), TRACK_SEQUENCE_FLAG_DIRECTION_0 = (1 << 0),
TRACK_SEQUENCE_FLAG_DIRECTION_2 = (1 << 2), TRACK_SEQUENCE_FLAG_DIRECTION_1 = (1 << 1),
TRACK_SEQUENCE_FLAG_DIRECTION_3 = (1 << 3), TRACK_SEQUENCE_FLAG_DIRECTION_2 = (1 << 2),
TRACK_SEQUENCE_FLAG_ORIGIN = (1 << 4), // 0x10 TRACK_SEQUENCE_FLAG_DIRECTION_3 = (1 << 3),
TRACK_SEQUENCE_FLAG_ORIGIN = (1 << 4), // 0x10
TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH = (1 << 5), // 0x20 TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH = (1 << 5), // 0x20
TRACK_SEQUENCE_FLAG_DISALLOW_DOORS = (1 << 6), // 0x40 TRACK_SEQUENCE_FLAG_DISALLOW_DOORS = (1 << 6), // 0x40
}; };
enum { enum
{
TRACK_ELEMENT_LOCATION_IS_UNDERGROUND = 2, TRACK_ELEMENT_LOCATION_IS_UNDERGROUND = 2,
}; };
enum { enum
{
GC_SET_MAZE_TRACK_BUILD = 0, GC_SET_MAZE_TRACK_BUILD = 0,
GC_SET_MAZE_TRACK_MOVE = 1, GC_SET_MAZE_TRACK_MOVE = 1,
GC_SET_MAZE_TRACK_FILL = 2, GC_SET_MAZE_TRACK_FILL = 2,
}; };
typedef struct track_circuit_iterator { typedef struct track_circuit_iterator
rct_xy_element last; {
rct_xy_element current; rct_xy_element last;
sint32 currentZ; rct_xy_element current;
sint32 currentDirection; sint32 currentZ;
rct_map_element *first; sint32 currentDirection;
bool firstIteration; rct_map_element * first;
bool looped; bool firstIteration;
bool looped;
} track_circuit_iterator; } track_circuit_iterator;
#ifdef __cplusplus #ifdef __cplusplus
@ -521,37 +537,37 @@ extern const rct_trackdefinition TrackDefinitions[256];
extern uint8 gTrackGroundFlags; extern uint8 gTrackGroundFlags;
sint32 track_is_connected_by_shape(rct_map_element *a, rct_map_element *b); sint32 track_is_connected_by_shape(rct_map_element * a, rct_map_element * b);
const rct_preview_track *get_track_def_from_ride(Ride *ride, sint32 trackType); const rct_preview_track * get_track_def_from_ride(Ride * ride, sint32 trackType);
const rct_preview_track *get_track_def_from_ride_index(sint32 rideIndex, sint32 trackType); const rct_preview_track * get_track_def_from_ride_index(sint32 rideIndex, sint32 trackType);
const rct_track_coordinates *get_track_coord_from_ride(Ride *ride, sint32 trackType); const rct_track_coordinates * get_track_coord_from_ride(Ride * ride, sint32 trackType);
void track_circuit_iterator_begin(track_circuit_iterator *it, rct_xy_element first); void track_circuit_iterator_begin(track_circuit_iterator * it, rct_xy_element first);
bool track_circuit_iterator_previous(track_circuit_iterator *it); bool track_circuit_iterator_previous(track_circuit_iterator * it);
bool track_circuit_iterator_next(track_circuit_iterator *it); bool track_circuit_iterator_next(track_circuit_iterator * it);
void track_get_back(rct_xy_element *input, rct_xy_element *output); void track_get_back(rct_xy_element * input, rct_xy_element * output);
void track_get_front(rct_xy_element *input, rct_xy_element *output); void track_get_front(rct_xy_element * input, rct_xy_element * output);
bool track_element_is_block_start(rct_map_element *trackElement); bool track_element_is_block_start(rct_map_element * trackElement);
bool track_element_is_covered(sint32 trackElementType); bool track_element_is_covered(sint32 trackElementType);
bool track_element_is_station(rct_map_element *trackElement); bool track_element_is_station(rct_map_element * trackElement);
bool track_element_is_lift_hill(rct_map_element *trackElement); bool track_element_is_lift_hill(rct_map_element * trackElement);
bool track_element_is_cable_lift(rct_map_element *trackElement); bool track_element_is_cable_lift(rct_map_element * trackElement);
void track_element_set_cable_lift(rct_map_element *trackElement); void track_element_set_cable_lift(rct_map_element * trackElement);
void track_element_clear_cable_lift(rct_map_element *trackElement); void track_element_clear_cable_lift(rct_map_element * trackElement);
bool track_element_is_inverted(rct_map_element * mapElement); bool track_element_is_inverted(rct_map_element * mapElement);
void track_element_set_inverted(rct_map_element * mapElement, bool inverted); void track_element_set_inverted(rct_map_element * mapElement, bool inverted);
sint32 track_get_actual_bank(rct_map_element *mapElement, sint32 bank); sint32 track_get_actual_bank(rct_map_element * mapElement, sint32 bank);
sint32 track_get_actual_bank_2(sint32 rideType, sint32 trackColour, sint32 bank); sint32 track_get_actual_bank_2(sint32 rideType, sint32 trackColour, sint32 bank);
sint32 track_get_actual_bank_3(rct_vehicle *vehicle, rct_map_element *mapElement); sint32 track_get_actual_bank_3(rct_vehicle * vehicle, rct_map_element * mapElement);
void game_command_place_track(sint32 *eax, sint32 *ebx, sint32 *ecx, sint32 *edx, sint32 *esi, sint32 *edi, sint32 *ebp); void game_command_place_track(sint32 * eax, sint32 * ebx, sint32 * ecx, sint32 * edx, sint32 * esi, sint32 * edi, sint32 * ebp);
void game_command_remove_track(sint32 *eax, sint32 *ebx, sint32 *ecx, sint32 *edx, sint32 *esi, sint32 *edi, sint32 *ebp); void game_command_remove_track(sint32 * eax, sint32 * ebx, sint32 * ecx, sint32 * edx, sint32 * esi, sint32 * edi, sint32 * ebp);
void game_command_set_maze_track(sint32 *eax, sint32 *ebx, sint32 *ecx, sint32 *edx, sint32 *esi, sint32 *edi, sint32 *ebp); void game_command_set_maze_track(sint32 * eax, sint32 * ebx, sint32 * ecx, sint32 * edx, sint32 * esi, sint32 * edi, sint32 * ebp);
void game_command_set_brakes_speed(sint32 *eax, sint32 *ebx, sint32 *ecx, sint32 *edx, sint32 *esi, sint32 *edi, sint32 *ebp); void game_command_set_brakes_speed(sint32 * eax, sint32 * ebx, sint32 * ecx, sint32 * edx, sint32 * esi, sint32 * edi, sint32 * ebp);
bool track_element_is_booster(uint8 rideType, uint8 trackType); bool track_element_is_booster(uint8 rideType, uint8 trackType);
bool track_element_has_speed_setting(uint8 trackType); bool track_element_has_speed_setting(uint8 trackType);
uint8 track_element_get_seat_rotation(const rct_map_element * mapElement); uint8 track_element_get_seat_rotation(const rct_map_element * mapElement);
@ -562,5 +578,3 @@ void track_element_set_colour_scheme(rct_map_element * mapElement, uint8 colourS
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif