mirror of https://github.com/OpenRCT2/OpenRCT2.git
add globals for researched things, cleanup
This commit is contained in:
parent
b5c0913b76
commit
aa929e1593
|
@ -361,6 +361,11 @@
|
||||||
|
|
||||||
#define RCT2_ADDRESS_CURRENT_TICKS 0x013628F4
|
#define RCT2_ADDRESS_CURRENT_TICKS 0x013628F4
|
||||||
#define RCT2_ADDRESS_RIDE_LIST 0x013628F8
|
#define RCT2_ADDRESS_RIDE_LIST 0x013628F8
|
||||||
|
#define RCT2_ADDRESS_RESEARCHED_RIDE_TYPES 0x01357404
|
||||||
|
#define RCT2_ADDRESS_RESEARCHED_RIDE_ENTRIES 0x01357424
|
||||||
|
#define RCT2_ADDRESS_RESEARCHED_TRACK_TYPES_A 0x01357444
|
||||||
|
#define RCT2_ADDRESS_RESEARCHED_TRACK_TYPES_B 0x01357644
|
||||||
|
|
||||||
#define RCT2_ADDRESS_RIDE_COUNT 0x013587C8
|
#define RCT2_ADDRESS_RIDE_COUNT 0x013587C8
|
||||||
#define RCT2_ADDRESS_RIDE_FLAGS 0x0097CF40
|
#define RCT2_ADDRESS_RIDE_FLAGS 0x0097CF40
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "../rct1.h"
|
#include "../rct1.h"
|
||||||
#include "../ride/ride.h"
|
#include "../ride/ride.h"
|
||||||
#include "../ride/ride_data.h"
|
#include "../ride/ride_data.h"
|
||||||
|
#include "../ride/track_data.h"
|
||||||
#include "../world/scenery.h"
|
#include "../world/scenery.h"
|
||||||
#include "news_item.h"
|
#include "news_item.h"
|
||||||
#include "research.h"
|
#include "research.h"
|
||||||
|
@ -37,8 +38,16 @@ rct_research_item *gResearchItems = (rct_research_item*)RCT2_RESEARCH_ITEMS;
|
||||||
// 0x00EE787C
|
// 0x00EE787C
|
||||||
uint8 gResearchUncompletedCategories;
|
uint8 gResearchUncompletedCategories;
|
||||||
|
|
||||||
|
uint32 *gResearchedRideTypes = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_RIDE_TYPES, uint32);
|
||||||
|
uint32 *gResearchedRideEntries = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_RIDE_ENTRIES, uint32);
|
||||||
|
uint32 *gResearchedTrackTypesA = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_TRACK_TYPES_A, uint32);
|
||||||
|
uint32 *gResearchedTrackTypesB = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_TRACK_TYPES_B, uint32);
|
||||||
|
|
||||||
bool gSilentResearch = false;
|
bool gSilentResearch = false;
|
||||||
|
|
||||||
|
static void ride_type_set_invented(int rideType);
|
||||||
|
static void ride_entry_set_invented(int rideEntryIndex);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* rct2: 0x006671AD, part of 0x00667132
|
* rct2: 0x006671AD, part of 0x00667132
|
||||||
|
@ -171,15 +180,15 @@ void research_finish_item(sint32 entryIndex)
|
||||||
base_ride_type = (entryIndex >> 8) & 0xFF;
|
base_ride_type = (entryIndex >> 8) & 0xFF;
|
||||||
rideEntryIndex = entryIndex & 0xFF;
|
rideEntryIndex = entryIndex & 0xFF;
|
||||||
rideEntry = get_ride_entry(rideEntryIndex);
|
rideEntry = get_ride_entry(rideEntryIndex);
|
||||||
RCT2_ADDRESS(0x01357404, uint32)[base_ride_type >> 5] |= (1u << (base_ride_type & 0x1F));
|
ride_type_set_invented(base_ride_type);
|
||||||
RCT2_ADDRESS(0x01357444, uint32)[base_ride_type] = RCT2_ADDRESS(0x0097C468, uint32)[base_ride_type];
|
gResearchedTrackTypesA[base_ride_type] = (RideTypePossibleTrackConfigurations[base_ride_type] ) & 0xFFFFFFFFULL;
|
||||||
RCT2_ADDRESS(0x01357644, uint32)[base_ride_type] = RCT2_ADDRESS(0x0097C5D4, uint32)[base_ride_type];
|
gResearchedTrackTypesB[base_ride_type] = (RideTypePossibleTrackConfigurations[base_ride_type] >> 32ULL) & 0xFFFFFFFFULL;
|
||||||
if (RideData4[base_ride_type].flags & RIDE_TYPE_FLAG4_3) {
|
if (RideData4[base_ride_type].flags & RIDE_TYPE_FLAG4_3) {
|
||||||
ebx = RCT2_GLOBAL(0x0097D4F5 + (base_ride_type * 8), uint8);
|
ebx = RCT2_GLOBAL(0x0097D4F5 + (base_ride_type * 8), uint8);
|
||||||
RCT2_ADDRESS(0x01357444, uint32)[ebx] = RCT2_ADDRESS(0x0097C468, uint32)[ebx];
|
gResearchedTrackTypesA[ebx] = (RideTypePossibleTrackConfigurations[ebx] ) & 0xFFFFFFFFULL;
|
||||||
RCT2_ADDRESS(0x01357644, uint32)[ebx] = RCT2_ADDRESS(0x0097C5D4, uint32)[ebx];
|
gResearchedTrackTypesB[ebx] = (RideTypePossibleTrackConfigurations[ebx] >> 32ULL) & 0xFFFFFFFFULL;
|
||||||
}
|
}
|
||||||
RCT2_ADDRESS(0x001357424, uint32)[rideEntryIndex >> 5] |= 1u << (rideEntryIndex & 0x1F);
|
ride_entry_set_invented(rideEntryIndex);
|
||||||
if (!(rideEntry->flags & RIDE_ENTRY_FLAG_SEPARATE_RIDE)) {
|
if (!(rideEntry->flags & RIDE_ENTRY_FLAG_SEPARATE_RIDE)) {
|
||||||
for (i = 0; i < 128; i++) {
|
for (i = 0; i < 128; i++) {
|
||||||
rideEntry2 = get_ride_entry(i);
|
rideEntry2 = get_ride_entry(i);
|
||||||
|
@ -188,8 +197,12 @@ void research_finish_item(sint32 entryIndex)
|
||||||
if ((rideEntry2->flags & RIDE_ENTRY_FLAG_SEPARATE_RIDE))
|
if ((rideEntry2->flags & RIDE_ENTRY_FLAG_SEPARATE_RIDE))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (rideEntry2->ride_type[0] == base_ride_type || rideEntry2->ride_type[1] == base_ride_type || rideEntry2->ride_type[2] == base_ride_type)
|
if (rideEntry2->ride_type[0] == base_ride_type ||
|
||||||
RCT2_ADDRESS(0x001357424, uint32)[i >> 5] |= 1u << (i & 0x1F);
|
rideEntry2->ride_type[1] == base_ride_type ||
|
||||||
|
rideEntry2->ride_type[2] == base_ride_type
|
||||||
|
) {
|
||||||
|
ride_entry_set_invented(rideEntryIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -307,8 +320,8 @@ void sub_684AC3(){
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 8; ++i){
|
for (int i = 0; i < 8; ++i){
|
||||||
RCT2_ADDRESS(0x01357404, uint32)[i] = 0;
|
gResearchedRideTypes[i] = 0;
|
||||||
RCT2_ADDRESS(0x01357424, uint32)[i] = 0;
|
gResearchedRideEntries[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 56; i++){
|
for (int i = 0; i < 56; i++){
|
||||||
|
@ -587,3 +600,45 @@ void research_insert_scenery_group_entry(uint8 entryIndex, bool researched)
|
||||||
rct_scenery_set_entry *scenerySetEntry = g_scenerySetEntries[entryIndex];
|
rct_scenery_set_entry *scenerySetEntry = g_scenerySetEntries[entryIndex];
|
||||||
research_insert(researched, entryIndex, RESEARCH_CATEGORY_SCENERYSET);
|
research_insert(researched, entryIndex, RESEARCH_CATEGORY_SCENERYSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ride_type_is_invented(int rideType)
|
||||||
|
{
|
||||||
|
int quadIndex = rideType >> 5;
|
||||||
|
int bitIndex = rideType & 0x1F;
|
||||||
|
bool invented = (gResearchedRideTypes[quadIndex] & (1 << bitIndex));
|
||||||
|
return invented;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ride_entry_is_invented(int rideEntryIndex)
|
||||||
|
{
|
||||||
|
int quadIndex = rideEntryIndex >> 5;
|
||||||
|
int bitIndex = rideEntryIndex & 0x1F;
|
||||||
|
bool invented = (gResearchedRideEntries[quadIndex] & (1 << bitIndex));
|
||||||
|
return invented;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool track_type_is_invented(uint8 rideType, int trackType)
|
||||||
|
{
|
||||||
|
if (trackType < 32) {
|
||||||
|
bool invented = (gResearchedTrackTypesA[rideType] & (1UL << trackType));
|
||||||
|
return invented;
|
||||||
|
} else {
|
||||||
|
trackType -= 32;
|
||||||
|
bool invented = (gResearchedTrackTypesB[rideType] & (1UL << trackType));
|
||||||
|
return invented;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ride_type_set_invented(int rideType)
|
||||||
|
{
|
||||||
|
int quadIndex = rideType >> 5;
|
||||||
|
int bitIndex = rideType & 0x1F;
|
||||||
|
gResearchedRideTypes[quadIndex] |= 1 << bitIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ride_entry_set_invented(int rideEntryIndex)
|
||||||
|
{
|
||||||
|
int quadIndex = rideEntryIndex >> 5;
|
||||||
|
int bitIndex = rideEntryIndex & 0x1F;
|
||||||
|
gResearchedRideEntries[quadIndex] |= 1 << bitIndex;
|
||||||
|
}
|
||||||
|
|
|
@ -74,6 +74,10 @@ enum {
|
||||||
|
|
||||||
extern rct_research_item *gResearchItems;
|
extern rct_research_item *gResearchItems;
|
||||||
extern uint8 gResearchUncompletedCategories;
|
extern uint8 gResearchUncompletedCategories;
|
||||||
|
extern uint32 *gResearchedRideTypes;
|
||||||
|
extern uint32 *gResearchedRideEntries;
|
||||||
|
extern uint32 *gResearchedTrackTypesA;
|
||||||
|
extern uint32 *gResearchedTrackTypesB;
|
||||||
extern bool gSilentResearch;
|
extern bool gSilentResearch;
|
||||||
|
|
||||||
void research_reset_items();
|
void research_reset_items();
|
||||||
|
@ -94,4 +98,8 @@ void research_remove(sint32 entryIndex);
|
||||||
void research_insert_ride_entry(uint8 entryIndex, bool researched);
|
void research_insert_ride_entry(uint8 entryIndex, bool researched);
|
||||||
void research_insert_scenery_group_entry(uint8 entryIndex, bool researched);
|
void research_insert_scenery_group_entry(uint8 entryIndex, bool researched);
|
||||||
|
|
||||||
|
bool ride_type_is_invented(int rideType);
|
||||||
|
bool ride_entry_is_invented(int rideEntryIndex);
|
||||||
|
bool track_type_is_invented(uint8 rideType, int trackType);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -273,10 +273,10 @@ void S6Exporter::Export()
|
||||||
_s6.guest_count_change_modifier = gGuestChangeModifier;
|
_s6.guest_count_change_modifier = gGuestChangeModifier;
|
||||||
_s6.current_research_level = gResearchFundingLevel;
|
_s6.current_research_level = gResearchFundingLevel;
|
||||||
// pad_01357400
|
// pad_01357400
|
||||||
memcpy(_s6.ride_types_researched, RCT2_ADDRESS(0x01357404, uint32), sizeof(_s6.ride_types_researched));
|
memcpy(_s6.researched_ride_types, gResearchedRideTypes, sizeof(_s6.researched_ride_types));
|
||||||
memcpy(_s6.ride_entries_researched, RCT2_ADDRESS(0x01357424, uint32), sizeof(_s6.ride_entries_researched));
|
memcpy(_s6.researched_ride_entries, gResearchedRideEntries, sizeof(_s6.researched_ride_entries));
|
||||||
memcpy(_s6.dword_01357444, RCT2_ADDRESS(0x01357444, uint32), sizeof(_s6.dword_01357444));
|
memcpy(_s6.researched_track_types_a, gResearchedTrackTypesA, sizeof(_s6.researched_track_types_a));
|
||||||
memcpy(_s6.dword_01357644, RCT2_ADDRESS(0x01357644, uint32), sizeof(_s6.dword_01357644));
|
memcpy(_s6.researched_track_types_b, gResearchedTrackTypesB, sizeof(_s6.researched_track_types_b));
|
||||||
|
|
||||||
_s6.guests_in_park = gNumGuestsInPark;
|
_s6.guests_in_park = gNumGuestsInPark;
|
||||||
_s6.guests_heading_for_park = gNumGuestsHeadingForPark;
|
_s6.guests_heading_for_park = gNumGuestsHeadingForPark;
|
||||||
|
|
|
@ -205,10 +205,10 @@ void S6Importer::Import()
|
||||||
gGuestChangeModifier = _s6.guest_count_change_modifier;
|
gGuestChangeModifier = _s6.guest_count_change_modifier;
|
||||||
gResearchFundingLevel = _s6.current_research_level;
|
gResearchFundingLevel = _s6.current_research_level;
|
||||||
// pad_01357400
|
// pad_01357400
|
||||||
memcpy(RCT2_ADDRESS(0x01357404, uint32), _s6.ride_types_researched, sizeof(_s6.ride_types_researched));
|
memcpy(gResearchedRideTypes, _s6.researched_ride_types, sizeof(_s6.researched_ride_types));
|
||||||
memcpy(RCT2_ADDRESS(0x01357424, uint32), _s6.ride_entries_researched, sizeof(_s6.ride_entries_researched));
|
memcpy(gResearchedRideEntries, _s6.researched_ride_entries, sizeof(_s6.researched_ride_entries));
|
||||||
memcpy(RCT2_ADDRESS(0x01357444, uint32), _s6.dword_01357444, sizeof(_s6.dword_01357444));
|
memcpy(gResearchedTrackTypesA, _s6.researched_track_types_a, sizeof(_s6.researched_track_types_a));
|
||||||
memcpy(RCT2_ADDRESS(0x01357644, uint32), _s6.dword_01357644, sizeof(_s6.dword_01357644));
|
memcpy(gResearchedTrackTypesB, _s6.researched_track_types_b, sizeof(_s6.researched_track_types_b));
|
||||||
|
|
||||||
gNumGuestsInPark = _s6.guests_in_park;
|
gNumGuestsInPark = _s6.guests_in_park;
|
||||||
gNumGuestsHeadingForPark = _s6.guests_heading_for_park;
|
gNumGuestsHeadingForPark = _s6.guests_heading_for_park;
|
||||||
|
|
|
@ -7652,14 +7652,6 @@ void ride_set_num_cars_per_vehicle(int rideIndex, int numCarsPerVehicle)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ride_entry_is_invented(int rideEntryIndex)
|
|
||||||
{
|
|
||||||
int quadIndex = rideEntryIndex >> 5;
|
|
||||||
int bitIndex = rideEntryIndex & 0x1F;
|
|
||||||
bool invented = (RCT2_ADDRESS(0x01357424, uint32)[quadIndex] & (1 << bitIndex));
|
|
||||||
return invented;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool ride_is_vehicle_type_valid(rct_ride *ride, uint8 inputRideEntryIndex)
|
static bool ride_is_vehicle_type_valid(rct_ride *ride, uint8 inputRideEntryIndex)
|
||||||
{
|
{
|
||||||
bool selectionShouldBeExpanded;
|
bool selectionShouldBeExpanded;
|
||||||
|
|
|
@ -617,9 +617,9 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) = 0;
|
RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) = 0;
|
||||||
|
|
||||||
uint64 enabledTrackPieces = 0;
|
uint64 enabledTrackPieces = 0;
|
||||||
enabledTrackPieces |= rideEntry->enabledTrackPiecesB & RCT2_ADDRESS(0x01357644, uint32)[ride->type];
|
enabledTrackPieces |= rideEntry->enabledTrackPiecesB & gResearchedTrackTypesB[ride->type];
|
||||||
enabledTrackPieces <<= 32;
|
enabledTrackPieces <<= 32;
|
||||||
enabledTrackPieces |= rideEntry->enabledTrackPiecesA & RCT2_ADDRESS(0x01357444, uint32)[ride->type];
|
enabledTrackPieces |= rideEntry->enabledTrackPiecesA & gResearchedTrackTypesA[ride->type];
|
||||||
uint32 rideTypeFlags = RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + (ride->type * 8), uint32);
|
uint32 rideTypeFlags = RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + (ride->type * 8), uint32);
|
||||||
RCT2_GLOBAL(0x00F44068, uint32) = rideTypeFlags;
|
RCT2_GLOBAL(0x00F44068, uint32) = rideTypeFlags;
|
||||||
|
|
||||||
|
|
|
@ -281,31 +281,31 @@ const rct_track_coordinates TrackCoordinates[256] = {
|
||||||
|
|
||||||
// rct2: 0x0097C468 (0 - 31) and 0x0097C5D4 (32 - 63)
|
// rct2: 0x0097C468 (0 - 31) and 0x0097C5D4 (32 - 63)
|
||||||
const uint64 RideTypePossibleTrackConfigurations[91] = {
|
const uint64 RideTypePossibleTrackConfigurations[91] = {
|
||||||
/* RIDE_TYPE_SPIRAL_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_SPIRAL_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_STAND_UP_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HALF_LOOP | TRACK_CORKSCREW | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_STAND_UP_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HALF_LOOP) | (1UL << TRACK_CORKSCREW) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_SUSPENDED_SWINGING_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_LARGE_UNBANKED | TRACK_BRAKES,
|
/* RIDE_TYPE_SUSPENDED_SWINGING_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_LARGE_UNBANKED) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_INVERTED_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_TWIST | TRACK_HALF_LOOP | TRACK_CORKSCREW | TRACK_HELIX_LARGE | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO | TRACK_HALF_LOOP_LARGE,
|
/* RIDE_TYPE_INVERTED_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_TWIST) | (1UL << TRACK_HALF_LOOP) | (1UL << TRACK_CORKSCREW) | (1UL << TRACK_HELIX_LARGE) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO) | (1UL << TRACK_HALF_LOOP_LARGE),
|
||||||
/* RIDE_TYPE_JUNIOR_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_LIFT_HILL_CURVE | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_SLOPE_CURVE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES,
|
/* RIDE_TYPE_JUNIOR_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_LIFT_HILL_CURVE) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_MINIATURE_RAILWAY */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE,
|
/* RIDE_TYPE_MINIATURE_RAILWAY */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE),
|
||||||
/* RIDE_TYPE_MONORAIL */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE,
|
/* RIDE_TYPE_MONORAIL */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE),
|
||||||
/* RIDE_TYPE_MINI_SUSPENDED_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_SLOPE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE,
|
/* RIDE_TYPE_MINI_SUSPENDED_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_SLOPE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE),
|
||||||
/* RIDE_TYPE_BOAT_RIDE */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_CURVE_VERY_SMALL,
|
/* RIDE_TYPE_BOAT_RIDE */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_CURVE_VERY_SMALL),
|
||||||
/* RIDE_TYPE_WOODEN_WILD_MOUSE */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_LIFT_HILL_STEEP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_LONG | TRACK_CURVE_VERY_SMALL | TRACK_CURVE_SMALL,
|
/* RIDE_TYPE_WOODEN_WILD_MOUSE */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_LIFT_HILL_STEEP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_LONG) | (1UL << TRACK_CURVE_VERY_SMALL) | (1UL << TRACK_CURVE_SMALL),
|
||||||
/* RIDE_TYPE_STEEPLECHASE */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_BRAKES,
|
/* RIDE_TYPE_STEEPLECHASE */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_CAR_RIDE */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_CURVE_VERY_SMALL | TRACK_CURVE_SMALL | TRACK_TOWER_BASE,
|
/* RIDE_TYPE_CAR_RIDE */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_CURVE_VERY_SMALL) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_TOWER_BASE),
|
||||||
/* RIDE_TYPE_LAUNCHED_FREEFALL */ TRACK_TOWER_BASE,
|
/* RIDE_TYPE_LAUNCHED_FREEFALL */ (1UL << TRACK_TOWER_BASE),
|
||||||
/* RIDE_TYPE_BOBSLEIGH_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES,
|
/* RIDE_TYPE_BOBSLEIGH_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_OBSERVATION_TOWER */ TRACK_TOWER_BASE,
|
/* RIDE_TYPE_OBSERVATION_TOWER */ (1UL << TRACK_TOWER_BASE),
|
||||||
/* RIDE_TYPE_LOOPING_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_LOOPING_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_DINGHY_SLIDE */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE,
|
/* RIDE_TYPE_DINGHY_SLIDE */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE),
|
||||||
/* RIDE_TYPE_MINE_TRAIN_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_MINE_TRAIN_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_CHAIRLIFT */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_CURVE_VERY_SMALL,
|
/* RIDE_TYPE_CHAIRLIFT */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_CURVE_VERY_SMALL),
|
||||||
/* RIDE_TYPE_CORKSCREW_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HALF_LOOP | TRACK_CORKSCREW | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_CORKSCREW_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HALF_LOOP) | (1UL << TRACK_CORKSCREW) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_MAZE */ 0,
|
/* RIDE_TYPE_MAZE */ 0,
|
||||||
/* RIDE_TYPE_SPIRAL_SLIDE */ 0,
|
/* RIDE_TYPE_SPIRAL_SLIDE */ 0,
|
||||||
/* RIDE_TYPE_GO_KARTS */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_CURVE_VERY_SMALL,
|
/* RIDE_TYPE_GO_KARTS */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_CURVE_VERY_SMALL),
|
||||||
/* RIDE_TYPE_LOG_FLUME */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_LOG_FLUME */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_RIVER_RAPIDS */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_CURVE_VERY_SMALL | TRACK_TOWER_BASE | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_RIVER_RAPIDS */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_CURVE_VERY_SMALL) | (1UL << TRACK_TOWER_BASE) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_DODGEMS */ 0,
|
/* RIDE_TYPE_DODGEMS */ 0,
|
||||||
/* RIDE_TYPE_PIRATE_SHIP */ 0,
|
/* RIDE_TYPE_PIRATE_SHIP */ 0,
|
||||||
/* RIDE_TYPE_SWINGING_INVERTER_SHIP */ 0,
|
/* RIDE_TYPE_SWINGING_INVERTER_SHIP */ 0,
|
||||||
|
@ -323,55 +323,55 @@ const uint64 RideTypePossibleTrackConfigurations[91] = {
|
||||||
/* RIDE_TYPE_3D_CINEMA */ 0,
|
/* RIDE_TYPE_3D_CINEMA */ 0,
|
||||||
/* RIDE_TYPE_TOP_SPIN */ 0,
|
/* RIDE_TYPE_TOP_SPIN */ 0,
|
||||||
/* RIDE_TYPE_SPACE_RINGS */ 0,
|
/* RIDE_TYPE_SPACE_RINGS */ 0,
|
||||||
/* RIDE_TYPE_REVERSE_FREEFALL_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL_STEEP,
|
/* RIDE_TYPE_REVERSE_FREEFALL_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL_STEEP),
|
||||||
/* RIDE_TYPE_LIFT */ TRACK_TOWER_BASE,
|
/* RIDE_TYPE_LIFT */ (1UL << TRACK_TOWER_BASE),
|
||||||
/* RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER */ TRACK_FLAT | TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_LIFT_HILL_STEEP | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_LONG | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO | TRACK_SLOPE_VERTICAL,
|
/* RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER */ (1UL << TRACK_FLAT) | (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_LIFT_HILL_STEEP) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_LONG) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO) | (1UL << TRACK_SLOPE_VERTICAL),
|
||||||
/* RIDE_TYPE_CASH_MACHINE */ 0,
|
/* RIDE_TYPE_CASH_MACHINE */ 0,
|
||||||
/* RIDE_TYPE_TWIST */ 0,
|
/* RIDE_TYPE_TWIST */ 0,
|
||||||
/* RIDE_TYPE_HAUNTED_HOUSE */ 0,
|
/* RIDE_TYPE_HAUNTED_HOUSE */ 0,
|
||||||
/* RIDE_TYPE_FIRST_AID */ 0,
|
/* RIDE_TYPE_FIRST_AID */ 0,
|
||||||
/* RIDE_TYPE_CIRCUS_SHOW */ 0,
|
/* RIDE_TYPE_CIRCUS_SHOW */ 0,
|
||||||
/* RIDE_TYPE_GHOST_TRAIN */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_CURVE_VERY_SMALL | TRACK_CURVE_SMALL | TRACK_BRAKES,
|
/* RIDE_TYPE_GHOST_TRAIN */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_CURVE_VERY_SMALL) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_TWISTER_ROLLER_COASTER */ TRACK_FLAT | TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HALF_LOOP | TRACK_CORKSCREW | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO | TRACK_SLOPE_VERTICAL | TRACK_BARREL_ROLL | TRACK_POWERED_LIFT | TRACK_HALF_LOOP_LARGE,
|
/* RIDE_TYPE_TWISTER_ROLLER_COASTER */ (1UL << TRACK_FLAT) | (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HALF_LOOP) | (1UL << TRACK_CORKSCREW) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO) | (1UL << TRACK_SLOPE_VERTICAL) | (1UL << TRACK_BARREL_ROLL) | (1UL << TRACK_POWERED_LIFT) | (1UL << TRACK_HALF_LOOP_LARGE),
|
||||||
/* RIDE_TYPE_WOODEN_ROLLER_COASTER */ TRACK_FLAT | TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO | TRACK_WATER_SPLASH,
|
/* RIDE_TYPE_WOODEN_ROLLER_COASTER */ (1UL << TRACK_FLAT) | (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO) | (1UL << TRACK_WATER_SPLASH),
|
||||||
/* RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_SLOPE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_BRAKES,
|
/* RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_SLOPE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_WILD_MOUSE */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_LIFT_HILL_STEEP | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_LONG | TRACK_SLOPE_CURVE | TRACK_CURVE_VERY_SMALL | TRACK_CURVE_SMALL | TRACK_BRAKES,
|
/* RIDE_TYPE_WILD_MOUSE */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_LIFT_HILL_STEEP) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_LONG) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_CURVE_VERY_SMALL) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HALF_LOOP | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO | TRACK_SLOPE_VERTICAL,
|
/* RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HALF_LOOP) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO) | (1UL << TRACK_SLOPE_VERTICAL),
|
||||||
/* RIDE_TYPE_38 */ TRACK_STRAIGHT | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_TWIST | TRACK_CORKSCREW | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO | TRACK_SLOPE_VERTICAL,
|
/* RIDE_TYPE_38 */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_TWIST) | (1UL << TRACK_CORKSCREW) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO) | (1UL << TRACK_SLOPE_VERTICAL),
|
||||||
/* RIDE_TYPE_FLYING_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_FLYING_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_3A */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_TWIST | TRACK_HELIX_LARGE | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_3A */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_TWIST) | (1UL << TRACK_HELIX_LARGE) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_VIRGINIA_REEL */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_SLOPE | TRACK_CURVE_VERY_SMALL | TRACK_CURVE_SMALL,
|
/* RIDE_TYPE_VIRGINIA_REEL */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_SLOPE) | (1UL << TRACK_CURVE_VERY_SMALL) | (1UL << TRACK_CURVE_SMALL),
|
||||||
/* RIDE_TYPE_SPLASH_BOATS */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_S_BEND | TRACK_CURVE,
|
/* RIDE_TYPE_SPLASH_BOATS */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE),
|
||||||
/* RIDE_TYPE_MINI_HELICOPTERS */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_CURVE_VERY_SMALL | TRACK_CURVE_SMALL,
|
/* RIDE_TYPE_MINI_HELICOPTERS */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_CURVE_VERY_SMALL) | (1UL << TRACK_CURVE_SMALL),
|
||||||
/* RIDE_TYPE_LAY_DOWN_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_LAY_DOWN_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_SUSPENDED_MONORAIL */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE,
|
/* RIDE_TYPE_SUSPENDED_MONORAIL */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE),
|
||||||
/* RIDE_TYPE_40 */ TRACK_STRAIGHT | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_TWIST | TRACK_HELIX_LARGE | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_40 */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_TWIST) | (1UL << TRACK_HELIX_LARGE) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_REVERSER_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_SLOPE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_BRAKES,
|
/* RIDE_TYPE_REVERSER_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_SLOPE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_HEARTLINE_TWISTER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_LIFT_HILL_STEEP | TRACK_SLOPE | TRACK_SLOPE_STEEP,
|
/* RIDE_TYPE_HEARTLINE_TWISTER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_LIFT_HILL_STEEP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP),
|
||||||
/* RIDE_TYPE_MINI_GOLF */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_CURVE_VERY_SMALL,
|
/* RIDE_TYPE_MINI_GOLF */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_CURVE_VERY_SMALL),
|
||||||
/* RIDE_TYPE_GIGA_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_GIGA_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_ROTO_DROP */ TRACK_TOWER_BASE,
|
/* RIDE_TYPE_ROTO_DROP */ (1UL << TRACK_TOWER_BASE),
|
||||||
/* RIDE_TYPE_FLYING_SAUCERS */ 0,
|
/* RIDE_TYPE_FLYING_SAUCERS */ 0,
|
||||||
/* RIDE_TYPE_CROOKED_HOUSE */ 0,
|
/* RIDE_TYPE_CROOKED_HOUSE */ 0,
|
||||||
/* RIDE_TYPE_MONORAIL_CYCLES */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE,
|
/* RIDE_TYPE_MONORAIL_CYCLES */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE),
|
||||||
/* RIDE_TYPE_COMPACT_INVERTED_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_TWIST | TRACK_HALF_LOOP | TRACK_CORKSCREW | TRACK_HELIX_LARGE | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO | TRACK_SLOPE_VERTICAL,
|
/* RIDE_TYPE_COMPACT_INVERTED_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_TWIST) | (1UL << TRACK_HALF_LOOP) | (1UL << TRACK_CORKSCREW) | (1UL << TRACK_HELIX_LARGE) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO) | (1UL << TRACK_SLOPE_VERTICAL),
|
||||||
/* RIDE_TYPE_WATER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES,
|
/* RIDE_TYPE_WATER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL_STEEP | TRACK_LIFT_HILL_CURVE | TRACK_FLAT_ROLL_BANKING | TRACK_CURVE | TRACK_BRAKES,
|
/* RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL_STEEP) | (1UL << TRACK_LIFT_HILL_CURVE) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_CURVE) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_INVERTED_HAIRPIN_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_LIFT_HILL_STEEP | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_LONG | TRACK_SLOPE_CURVE | TRACK_CURVE_VERY_SMALL | TRACK_CURVE_SMALL | TRACK_BRAKES,
|
/* RIDE_TYPE_INVERTED_HAIRPIN_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_LIFT_HILL_STEEP) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_LONG) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_CURVE_VERY_SMALL) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_MAGIC_CARPET */ 0,
|
/* RIDE_TYPE_MAGIC_CARPET */ 0,
|
||||||
/* RIDE_TYPE_SUBMARINE_RIDE */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_CURVE_VERY_SMALL | TRACK_CURVE_SMALL,
|
/* RIDE_TYPE_SUBMARINE_RIDE */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_CURVE_VERY_SMALL) | (1UL << TRACK_CURVE_SMALL),
|
||||||
/* RIDE_TYPE_RIVER_RAFTS */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_S_BEND | TRACK_CURVE,
|
/* RIDE_TYPE_RIVER_RAFTS */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE),
|
||||||
/* RIDE_TYPE_50 */ 0,
|
/* RIDE_TYPE_50 */ 0,
|
||||||
/* RIDE_TYPE_ENTERPRISE */ 0,
|
/* RIDE_TYPE_ENTERPRISE */ 0,
|
||||||
/* RIDE_TYPE_52 */ 0,
|
/* RIDE_TYPE_52 */ 0,
|
||||||
/* RIDE_TYPE_53 */ 0,
|
/* RIDE_TYPE_53 */ 0,
|
||||||
/* RIDE_TYPE_54 */ 0,
|
/* RIDE_TYPE_54 */ 0,
|
||||||
/* RIDE_TYPE_55 */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_55 */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_INVERTED_IMPULSE_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_VERTICAL,
|
/* RIDE_TYPE_INVERTED_IMPULSE_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_VERTICAL),
|
||||||
/* RIDE_TYPE_MINI_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_BRAKES,
|
/* RIDE_TYPE_MINI_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_MINE_RIDE */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_HELIX_SMALL | TRACK_ON_RIDE_PHOTO,
|
/* RIDE_TYPE_MINE_RIDE */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_ON_RIDE_PHOTO),
|
||||||
/* RIDE_TYPE_59 */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_LIFT_HILL | TRACK_FLAT_ROLL_BANKING | TRACK_SLOPE | TRACK_CURVE_VERY_SMALL | TRACK_CURVE_SMALL | TRACK_BRAKES,
|
/* RIDE_TYPE_59 */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_LIFT_HILL) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_SLOPE) | (1UL << TRACK_CURVE_VERY_SMALL) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_BRAKES),
|
||||||
/* RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER */ TRACK_STRAIGHT | TRACK_STATION_END | TRACK_FLAT_ROLL_BANKING | TRACK_VERTICAL_LOOP | TRACK_SLOPE | TRACK_SLOPE_STEEP | TRACK_SLOPE_CURVE | TRACK_SLOPE_CURVE_STEEP | TRACK_S_BEND | TRACK_CURVE_SMALL | TRACK_CURVE | TRACK_TWIST | TRACK_CORKSCREW | TRACK_HELIX_SMALL | TRACK_BRAKES | TRACK_ON_RIDE_PHOTO | TRACK_SLOPE_VERTICAL
|
/* RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER */ (1UL << TRACK_STRAIGHT) | (1UL << TRACK_STATION_END) | (1UL << TRACK_FLAT_ROLL_BANKING) | (1UL << TRACK_VERTICAL_LOOP) | (1UL << TRACK_SLOPE) | (1UL << TRACK_SLOPE_STEEP) | (1UL << TRACK_SLOPE_CURVE) | (1UL << TRACK_SLOPE_CURVE_STEEP) | (1UL << TRACK_S_BEND) | (1UL << TRACK_CURVE_SMALL) | (1UL << TRACK_CURVE) | (1UL << TRACK_TWIST) | (1UL << TRACK_CORKSCREW) | (1UL << TRACK_HELIX_SMALL) | (1UL << TRACK_BRAKES) | (1UL << TRACK_ON_RIDE_PHOTO) | (1UL << TRACK_SLOPE_VERTICAL)
|
||||||
};
|
};
|
||||||
|
|
||||||
#define TRACK_BLOCK_END { 255, 255, 255, 255, 255, 255, 255 }
|
#define TRACK_BLOCK_END { 255, 255, 255, 255, 255, 255, 255 }
|
||||||
|
|
|
@ -156,10 +156,10 @@ typedef struct {
|
||||||
uint8 guest_count_change_modifier;
|
uint8 guest_count_change_modifier;
|
||||||
uint8 current_research_level;
|
uint8 current_research_level;
|
||||||
uint8 pad_01357400[4];
|
uint8 pad_01357400[4];
|
||||||
uint32 ride_types_researched[8];
|
uint32 researched_ride_types[8];
|
||||||
uint32 ride_entries_researched[8];
|
uint32 researched_ride_entries[8];
|
||||||
uint32 dword_01357444[128];
|
uint32 researched_track_types_a[128];
|
||||||
uint32 dword_01357644[128];
|
uint32 researched_track_types_b[128];
|
||||||
|
|
||||||
// SC6[7]
|
// SC6[7]
|
||||||
uint16 guests_in_park;
|
uint16 guests_in_park;
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "../interface/widget.h"
|
#include "../interface/widget.h"
|
||||||
#include "../interface/window.h"
|
#include "../interface/window.h"
|
||||||
#include "../platform/platform.h"
|
#include "../platform/platform.h"
|
||||||
|
#include "../ride/track_data.h"
|
||||||
#include "../title.h"
|
#include "../title.h"
|
||||||
#include "../util/util.h"
|
#include "../util/util.h"
|
||||||
#include "../world/footpath.h"
|
#include "../world/footpath.h"
|
||||||
|
@ -238,18 +239,17 @@ bool window_editor_bottom_toolbar_check_object_selection()
|
||||||
*/
|
*/
|
||||||
static void sub_66F6E3()
|
static void sub_66F6E3()
|
||||||
{
|
{
|
||||||
RCT2_GLOBAL(0x01357404, uint32) = 0xFFFFFFFF;
|
for (int i = 0; i < 4; i++) {
|
||||||
RCT2_GLOBAL(0x01357408, uint32) = 0xFFFFFFFF;
|
gResearchedRideTypes[i] = 0xFFFFFFFF;
|
||||||
RCT2_GLOBAL(0x0135740C, uint32) = 0xFFFFFFFF;
|
}
|
||||||
RCT2_GLOBAL(0x01357410, uint32) = 0xFFFFFFFF;
|
|
||||||
|
|
||||||
for (int i = 0; i < 128; i++) {
|
for (int i = 0; i < 128; i++) {
|
||||||
RCT2_ADDRESS(0x01357444, uint32)[i] = RCT2_ADDRESS(0x0097C468, uint32)[i];
|
gResearchedTrackTypesA[i] = (RideTypePossibleTrackConfigurations[i] ) & 0xFFFFFFFFULL;
|
||||||
RCT2_ADDRESS(0x01357644, uint32)[i] = RCT2_ADDRESS(0x0097C5D4, uint32)[i];
|
gResearchedTrackTypesB[i] = (RideTypePossibleTrackConfigurations[i] >> 32ULL) & 0xFFFFFFFFULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 8; i++) {
|
for (int i = 0; i < 8; i++) {
|
||||||
RCT2_ADDRESS(0x01357424, uint32)[i] = 0xFFFFFFFF;
|
gResearchedRideEntries[i] = 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
window_new_ride_open();
|
window_new_ride_open();
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "../ride/ride.h"
|
#include "../ride/ride.h"
|
||||||
#include "../ride/ride_data.h"
|
#include "../ride/ride_data.h"
|
||||||
#include "../ride/track.h"
|
#include "../ride/track.h"
|
||||||
|
#include "../ride/track_data.h"
|
||||||
#include "../ride/track_design.h"
|
#include "../ride/track_design.h"
|
||||||
#include "../scenario.h"
|
#include "../scenario.h"
|
||||||
#include "../util/util.h"
|
#include "../util/util.h"
|
||||||
|
@ -1933,18 +1934,17 @@ static int get_object_from_object_selection(uint8 object_type, int y, uint8 *obj
|
||||||
*/
|
*/
|
||||||
static void window_editor_object_selection_manage_tracks()
|
static void window_editor_object_selection_manage_tracks()
|
||||||
{
|
{
|
||||||
RCT2_GLOBAL(0x1357404, sint32) = -1;
|
for (int i = 0; i < 4; i++) {
|
||||||
RCT2_GLOBAL(0x1357408, sint32) = -1;
|
gResearchedRideTypes[i] = 0xFFFFFFFF;
|
||||||
RCT2_GLOBAL(0x135740C, sint32) = -1;
|
|
||||||
RCT2_GLOBAL(0x1357410, sint32) = -1;
|
|
||||||
|
|
||||||
for (int i = 0; i < 128; ++i){
|
|
||||||
RCT2_ADDRESS(0x1357444, uint32)[i] = RCT2_ADDRESS(0x97C468, uint32)[i];
|
|
||||||
RCT2_ADDRESS(0x1357644, uint32)[i] = RCT2_ADDRESS(0x97C5D4, uint32)[i];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 8; ++i){
|
for (int i = 0; i < 128; i++) {
|
||||||
RCT2_ADDRESS(0x1357424, sint32)[i] = -1;
|
gResearchedTrackTypesA[i] = (RideTypePossibleTrackConfigurations[i] ) & 0xFFFFFFFFULL;
|
||||||
|
gResearchedTrackTypesB[i] = (RideTypePossibleTrackConfigurations[i] >> 32ULL) & 0xFFFFFFFFULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
gResearchedRideEntries[i] = 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
RCT2_GLOBAL(0x141F570, uint8) = 7;
|
RCT2_GLOBAL(0x141F570, uint8) = 7;
|
||||||
|
|
|
@ -285,13 +285,11 @@ void window_new_ride_init_vars() {
|
||||||
*/
|
*/
|
||||||
static void window_new_ride_populate_list()
|
static void window_new_ride_populate_list()
|
||||||
{
|
{
|
||||||
int i, quadIndex, bitIndex;
|
|
||||||
|
|
||||||
uint8 currentCategory = _window_new_ride_current_tab;
|
uint8 currentCategory = _window_new_ride_current_tab;
|
||||||
ride_list_item *nextListItem = (ride_list_item*)0x00F43523;
|
ride_list_item *nextListItem = (ride_list_item*)0x00F43523;
|
||||||
|
|
||||||
// For each ride type in the view order list
|
// For each ride type in the view order list
|
||||||
for (i = 0; i < countof(RideTypeViewOrder); i++) {
|
for (int i = 0; i < countof(RideTypeViewOrder); i++) {
|
||||||
uint8 rideType = RideTypeViewOrder[i];
|
uint8 rideType = RideTypeViewOrder[i];
|
||||||
if (rideType == RIDE_TYPE_NULL)
|
if (rideType == RIDE_TYPE_NULL)
|
||||||
continue;
|
continue;
|
||||||
|
@ -304,9 +302,7 @@ static void window_new_ride_populate_list()
|
||||||
char preferredVehicleName[9];
|
char preferredVehicleName[9];
|
||||||
strcpy(preferredVehicleName," ");
|
strcpy(preferredVehicleName," ");
|
||||||
|
|
||||||
quadIndex = rideType >> 5;
|
if (ride_type_is_invented(rideType)) {
|
||||||
bitIndex = rideType & 0x1F;
|
|
||||||
if (RCT2_ADDRESS(0x01357404, uint32)[quadIndex] & (1u << bitIndex)) {
|
|
||||||
int dh = 0;
|
int dh = 0;
|
||||||
uint8 *rideEntryIndexPtr = get_ride_entry_indices_for_ride_type(rideType);
|
uint8 *rideEntryIndexPtr = get_ride_entry_indices_for_ride_type(rideType);
|
||||||
|
|
||||||
|
@ -317,10 +313,8 @@ static void window_new_ride_populate_list()
|
||||||
memcpy(rideEntryName,object_entry_groups[OBJECT_TYPE_RIDE].entries[rideEntryIndex].name,8);
|
memcpy(rideEntryName,object_entry_groups[OBJECT_TYPE_RIDE].entries[rideEntryIndex].name,8);
|
||||||
rideEntryName[8]=0;
|
rideEntryName[8]=0;
|
||||||
|
|
||||||
quadIndex = rideEntryIndex >> 5;
|
|
||||||
bitIndex = rideEntryIndex & 0x1F;
|
|
||||||
// Skip if vehicle type is not invented yet
|
// Skip if vehicle type is not invented yet
|
||||||
if (!(RCT2_ADDRESS(0x01357424, uint32)[quadIndex] & (1u << bitIndex)))
|
if (!ride_entry_is_invented(rideEntryIndex))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Ride entries
|
// Ride entries
|
||||||
|
|
|
@ -1234,7 +1234,7 @@ rct_window *window_ride_open(int rideIndex)
|
||||||
rct_window *w;
|
rct_window *w;
|
||||||
rct_ride *ride;
|
rct_ride *ride;
|
||||||
uint8 *rideEntryIndexPtr;
|
uint8 *rideEntryIndexPtr;
|
||||||
int numSubTypes, quadIndex, bitIndex;
|
int numSubTypes;
|
||||||
|
|
||||||
w = window_create_auto_pos(316, 207, window_ride_page_events[0], WC_RIDE, WF_10 | WF_RESIZABLE);
|
w = window_create_auto_pos(316, 207, window_ride_page_events[0], WC_RIDE, WF_10 | WF_RESIZABLE);
|
||||||
w->widgets = window_ride_page_widgets[0];
|
w->widgets = window_ride_page_widgets[0];
|
||||||
|
@ -1259,12 +1259,9 @@ rct_window *window_ride_open(int rideIndex)
|
||||||
numSubTypes = 0;
|
numSubTypes = 0;
|
||||||
rideEntryIndexPtr = get_ride_entry_indices_for_ride_type(ride->type);
|
rideEntryIndexPtr = get_ride_entry_indices_for_ride_type(ride->type);
|
||||||
for (; *rideEntryIndexPtr != 0xFF; rideEntryIndexPtr++) {
|
for (; *rideEntryIndexPtr != 0xFF; rideEntryIndexPtr++) {
|
||||||
quadIndex = *rideEntryIndexPtr >> 5;
|
if (ride_entry_is_invented(*rideEntryIndexPtr)) {
|
||||||
bitIndex = *rideEntryIndexPtr & 0x1F;
|
numSubTypes++;
|
||||||
if (!(RCT2_ADDRESS(0x01357424, uint32)[quadIndex] & (1 << bitIndex)))
|
}
|
||||||
continue;
|
|
||||||
|
|
||||||
numSubTypes++;
|
|
||||||
}
|
}
|
||||||
var_496(w) = numSubTypes;
|
var_496(w) = numSubTypes;
|
||||||
return w;
|
return w;
|
||||||
|
@ -2175,13 +2172,13 @@ static rct_string_id window_ride_get_status_vehicle(rct_window *w, void *argumen
|
||||||
vehicle = &(g_sprite_list[vehicleSpriteIndex].vehicle);
|
vehicle = &(g_sprite_list[vehicleSpriteIndex].vehicle);
|
||||||
if (vehicle->status != VEHICLE_STATUS_CRASHING && vehicle->status != VEHICLE_STATUS_CRASHED) {
|
if (vehicle->status != VEHICLE_STATUS_CRASHING && vehicle->status != VEHICLE_STATUS_CRASHED) {
|
||||||
int trackType = vehicle->track_type >> 2;
|
int trackType = vehicle->track_type >> 2;
|
||||||
if (trackType == 216 ||
|
if (trackType == TRACK_ELEM_BLOCK_BRAKES ||
|
||||||
trackType == TRACK_ELEM_CABLE_LIFT_HILL ||
|
trackType == TRACK_ELEM_CABLE_LIFT_HILL ||
|
||||||
trackType == TRACK_ELEM_25_DEG_UP_TO_FLAT ||
|
trackType == TRACK_ELEM_25_DEG_UP_TO_FLAT ||
|
||||||
trackType == TRACK_ELEM_60_DEG_UP_TO_FLAT ||
|
trackType == TRACK_ELEM_60_DEG_UP_TO_FLAT ||
|
||||||
trackType == TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT ||
|
trackType == TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT ||
|
||||||
trackType == TRACK_ELEM_DIAG_60_DEG_UP_TO_FLAT) {
|
trackType == TRACK_ELEM_DIAG_60_DEG_UP_TO_FLAT) {
|
||||||
if ((RCT2_ADDRESS(0x01357644, uint32)[ride->type] & 0x40) && vehicle->velocity == 0) {
|
if (track_type_is_invented(ride->type, TRACK_BLOCK_BRAKES) && vehicle->velocity == 0) {
|
||||||
RCT2_GLOBAL((int)arguments + 0, uint16) = STR_STOPPED_BY_BLOCK_BRAKES;
|
RCT2_GLOBAL((int)arguments + 0, uint16) = STR_STOPPED_BY_BLOCK_BRAKES;
|
||||||
return 1191;
|
return 1191;
|
||||||
}
|
}
|
||||||
|
@ -2381,7 +2378,7 @@ static void window_ride_vehicle_mousedown(int widgetIndex, rct_window *w, rct_wi
|
||||||
rct_widget *dropdownWidget = widget - 1;
|
rct_widget *dropdownWidget = widget - 1;
|
||||||
rct_ride *ride;
|
rct_ride *ride;
|
||||||
rct_ride_entry *rideEntry, *currentRideEntry;
|
rct_ride_entry *rideEntry, *currentRideEntry;
|
||||||
int numItems, quadIndex, bitIndex, rideEntryIndex, selectedIndex, rideTypeIterator, rideTypeIteratorMax;
|
int numItems, rideEntryIndex, selectedIndex, rideTypeIterator, rideTypeIteratorMax;
|
||||||
uint8 *rideEntryIndexPtr;
|
uint8 *rideEntryIndexPtr;
|
||||||
bool selectionShouldBeExpanded;
|
bool selectionShouldBeExpanded;
|
||||||
|
|
||||||
|
@ -2421,10 +2418,8 @@ static void window_ride_vehicle_mousedown(int widgetIndex, rct_window *w, rct_wi
|
||||||
if ((currentRideEntry->flags & (RIDE_ENTRY_FLAG_SEPARATE_RIDE | RIDE_ENTRY_FLAG_SEPARATE_RIDE_NAME)) && !(gConfigInterface.select_by_track_type || selectionShouldBeExpanded))
|
if ((currentRideEntry->flags & (RIDE_ENTRY_FLAG_SEPARATE_RIDE | RIDE_ENTRY_FLAG_SEPARATE_RIDE_NAME)) && !(gConfigInterface.select_by_track_type || selectionShouldBeExpanded))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
quadIndex = rideEntryIndex >> 5;
|
|
||||||
bitIndex = rideEntryIndex & 0x1F;
|
|
||||||
// Skip if vehicle type is not invented yet
|
// Skip if vehicle type is not invented yet
|
||||||
if (!(RCT2_ADDRESS(0x01357424, uint32)[quadIndex] & (1u << bitIndex)))
|
if (!ride_entry_is_invented(rideEntryIndex))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (ride->subtype == rideEntryIndex)
|
if (ride->subtype == rideEntryIndex)
|
||||||
|
@ -3087,7 +3082,7 @@ static void window_ride_operating_invalidate(rct_window *w)
|
||||||
w->pressed_widgets &= ~0x44700000;
|
w->pressed_widgets &= ~0x44700000;
|
||||||
|
|
||||||
// Lift hill speed
|
// Lift hill speed
|
||||||
if ((rideEntry->enabledTrackPiecesA & RCT2_ADDRESS(0x01357444, uint32)[ride->type]) & 8) {
|
if ((rideEntry->enabledTrackPiecesA & (1UL << TRACK_LIFT_HILL)) && track_type_is_invented(ride->type, TRACK_LIFT_HILL)) {
|
||||||
window_ride_operating_widgets[WIDX_LIFT_HILL_SPEED_LABEL].type = WWT_24;
|
window_ride_operating_widgets[WIDX_LIFT_HILL_SPEED_LABEL].type = WWT_24;
|
||||||
window_ride_operating_widgets[WIDX_LIFT_HILL_SPEED].type = WWT_SPINNER;
|
window_ride_operating_widgets[WIDX_LIFT_HILL_SPEED].type = WWT_SPINNER;
|
||||||
window_ride_operating_widgets[WIDX_LIFT_HILL_SPEED_INCREASE].type = WWT_DROPDOWN_BUTTON;
|
window_ride_operating_widgets[WIDX_LIFT_HILL_SPEED_INCREASE].type = WWT_DROPDOWN_BUTTON;
|
||||||
|
|
|
@ -2664,8 +2664,8 @@ static void window_ride_construction_update_enabled_track_pieces()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int rideType = _currentTrackCovered & 2 ? RCT2_ADDRESS(0x0097D4F5, uint8)[ride->type * 8] : ride->type;
|
int rideType = _currentTrackCovered & 2 ? RCT2_ADDRESS(0x0097D4F5, uint8)[ride->type * 8] : ride->type;
|
||||||
_enabledRidePieces.a = rideEntry->enabledTrackPiecesA & RCT2_ADDRESS(0x01357444, uint32)[rideType];
|
_enabledRidePieces.a = rideEntry->enabledTrackPiecesA & gResearchedTrackTypesA[rideType];
|
||||||
_enabledRidePieces.b = rideEntry->enabledTrackPiecesB & RCT2_ADDRESS(0x01357644, uint32)[rideType];
|
_enabledRidePieces.b = rideEntry->enabledTrackPiecesB & gResearchedTrackTypesB[rideType];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -98,7 +98,7 @@ void park_init()
|
||||||
finance_init();
|
finance_init();
|
||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
RCT2_ADDRESS(0x01357404, uint32)[i] = 0;
|
gResearchedRideTypes[i] = 0;
|
||||||
|
|
||||||
for (i = 0; i < 56; i++)
|
for (i = 0; i < 56; i++)
|
||||||
RCT2_ADDRESS(0x01357BD0, sint32)[i] = -1;
|
RCT2_ADDRESS(0x01357BD0, sint32)[i] = -1;
|
||||||
|
|
Loading…
Reference in New Issue