mirror of https://github.com/OpenRCT2/OpenRCT2.git
Extract new struct
This commit is contained in:
parent
e4fadc5a66
commit
0fd42f408a
|
@ -1585,7 +1585,7 @@ void viewport_track_paint_setup(uint8 direction, int height, rct_map_element *ma
|
||||||
if ((RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & VIEWPORT_FLAG_TRACK_HEIGHTS) && dpi->zoom_level == 0) {
|
if ((RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & VIEWPORT_FLAG_TRACK_HEIGHTS) && dpi->zoom_level == 0) {
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_PAINT_SETUP_CURRENT_TYPE, uint8) = 0;
|
RCT2_GLOBAL(RCT2_ADDRESS_PAINT_SETUP_CURRENT_TYPE, uint8) = 0;
|
||||||
if (RCT2_ADDRESS(0x00999694, uint32)[trackType] & (1 << trackSequence)) {
|
if (RCT2_ADDRESS(0x00999694, uint32)[trackType] & (1 << trackSequence)) {
|
||||||
uint16 ax = RCT2_GLOBAL(0x0097D21A + (ride->type * 8), uint8);
|
uint16 ax = RideData5[ride->type].z_offset;
|
||||||
uint32 ebx = 0x20381689 + (height + 8) / 16;
|
uint32 ebx = 0x20381689 + (height + 8) / 16;
|
||||||
ebx += RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_HEIGHT_MARKERS, uint16);
|
ebx += RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_HEIGHT_MARKERS, uint16);
|
||||||
ebx -= RCT2_GLOBAL(0x01359208, uint16);
|
ebx -= RCT2_GLOBAL(0x01359208, uint16);
|
||||||
|
|
|
@ -1902,7 +1902,7 @@ void peep_update_ride_sub_state_1(rct_peep* peep){
|
||||||
RCT2_GLOBAL(0xF1AECA, uint16) += 4;
|
RCT2_GLOBAL(0xF1AECA, uint16) += 4;
|
||||||
|
|
||||||
if (xy_distance < RCT2_GLOBAL(0xF1AECA, uint16)){
|
if (xy_distance < RCT2_GLOBAL(0xF1AECA, uint16)){
|
||||||
z += RCT2_ADDRESS(0x0097D21C, uint8)[ride->type * 8];
|
z += RideData5[ride->type].z;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprite_move(x, y, z, (rct_sprite*)peep);
|
sprite_move(x, y, z, (rct_sprite*)peep);
|
||||||
|
@ -2078,7 +2078,7 @@ void peep_update_ride_sub_state_1(rct_peep* peep){
|
||||||
* rct2: 0x0069321D
|
* rct2: 0x0069321D
|
||||||
*/
|
*/
|
||||||
static void peep_go_to_ride_exit(rct_peep* peep, rct_ride* ride, sint16 x, sint16 y, sint16 z, uint8 exit_direction){
|
static void peep_go_to_ride_exit(rct_peep* peep, rct_ride* ride, sint16 x, sint16 y, sint16 z, uint8 exit_direction){
|
||||||
z += RCT2_ADDRESS(0x0097D21C, uint8)[ride->type * 8];
|
z += RideData5[ride->type].z;
|
||||||
|
|
||||||
sprite_move(x, y, z, (rct_sprite*)peep);
|
sprite_move(x, y, z, (rct_sprite*)peep);
|
||||||
invalidate_sprite_2((rct_sprite*)peep);
|
invalidate_sprite_2((rct_sprite*)peep);
|
||||||
|
@ -2537,7 +2537,7 @@ void peep_update_ride_sub_state_7(rct_peep* peep){
|
||||||
sint16 exit_y = y + vehicle_type->peep_loading_positions[(peep->var_37 + 1) * 2 + 2];
|
sint16 exit_y = y + vehicle_type->peep_loading_positions[(peep->var_37 + 1) * 2 + 2];
|
||||||
|
|
||||||
z *= 8;
|
z *= 8;
|
||||||
z += RCT2_ADDRESS(0x0097D21C, uint8)[ride->type * 8];
|
z += RideData5[ride->type].z;
|
||||||
|
|
||||||
if (ride->type == RIDE_TYPE_MOTION_SIMULATOR)
|
if (ride->type == RIDE_TYPE_MOTION_SIMULATOR)
|
||||||
z += 15;
|
z += 15;
|
||||||
|
@ -2627,7 +2627,7 @@ static void peep_update_ride_sub_state_9(rct_peep* peep){
|
||||||
if (xy_distance >= 16){
|
if (xy_distance >= 16){
|
||||||
sint16 z = ride->station_heights[peep->current_ride_station] * 8;
|
sint16 z = ride->station_heights[peep->current_ride_station] * 8;
|
||||||
|
|
||||||
z += RCT2_ADDRESS(0x97D21C, uint8)[ride->type * 8];
|
z += RideData5[ride->type].z;
|
||||||
sprite_move(x, y, z, (rct_sprite*)peep);
|
sprite_move(x, y, z, (rct_sprite*)peep);
|
||||||
invalidate_sprite_2((rct_sprite*)peep);
|
invalidate_sprite_2((rct_sprite*)peep);
|
||||||
return;
|
return;
|
||||||
|
@ -4005,7 +4005,7 @@ static bool peep_update_fixing_sub_state_14(bool firstRun, rct_peep *peep, rct_r
|
||||||
uint16 z = ride->station_heights[peep->current_ride_station] * 8;
|
uint16 z = ride->station_heights[peep->current_ride_station] * 8;
|
||||||
|
|
||||||
if (xy_distance >= 16) {
|
if (xy_distance >= 16) {
|
||||||
z += RCT2_ADDRESS(0x0097D21C, uint8)[ride->type * 8];
|
z += RideData5[ride->type].z;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprite_move(x, y, z, (rct_sprite *) peep);
|
sprite_move(x, y, z, (rct_sprite *) peep);
|
||||||
|
@ -5063,7 +5063,7 @@ static void peep_update_heading_to_inspect(rct_peep* peep){
|
||||||
int z = ride->station_heights[peep->current_ride_station] * 8;
|
int z = ride->station_heights[peep->current_ride_station] * 8;
|
||||||
|
|
||||||
if (delta_y < 20){
|
if (delta_y < 20){
|
||||||
z += RCT2_ADDRESS(0x0097D21C, uint8)[ride->type * 8];
|
z += RideData5[ride->type].z;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprite_move(x, y, z, (rct_sprite*)peep);
|
sprite_move(x, y, z, (rct_sprite*)peep);
|
||||||
|
@ -5176,7 +5176,7 @@ static void peep_update_answering(rct_peep* peep){
|
||||||
int z = ride->station_heights[peep->current_ride_station] * 8;
|
int z = ride->station_heights[peep->current_ride_station] * 8;
|
||||||
|
|
||||||
if (delta_y < 20){
|
if (delta_y < 20){
|
||||||
z += RCT2_ADDRESS(0x0097D21C, uint8)[ride->type * 8];
|
z += RideData5[ride->type].z;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprite_move(x, y, z, (rct_sprite*)peep);
|
sprite_move(x, y, z, (rct_sprite*)peep);
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "cable_lift.h"
|
#include "cable_lift.h"
|
||||||
#include "ride.h"
|
#include "ride.h"
|
||||||
#include "track.h"
|
#include "track.h"
|
||||||
|
#include "ride_data.h"
|
||||||
|
|
||||||
static void cable_lift_update_moving_to_end_of_station(rct_vehicle *vehicle);
|
static void cable_lift_update_moving_to_end_of_station(rct_vehicle *vehicle);
|
||||||
static void cable_lift_update_waiting_to_depart(rct_vehicle *vehicle);
|
static void cable_lift_update_waiting_to_depart(rct_vehicle *vehicle);
|
||||||
|
@ -58,7 +59,7 @@ rct_vehicle *cable_lift_segment_create(int rideIndex, int x, int y, int z, int d
|
||||||
|
|
||||||
z = z * 8;
|
z = z * 8;
|
||||||
current->track_z = z;
|
current->track_z = z;
|
||||||
z += RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8);
|
z += RideData5[ride->type].z_offset;
|
||||||
|
|
||||||
sprite_move(16, 16, z, (rct_sprite*)current);
|
sprite_move(16, 16, z, (rct_sprite*)current);
|
||||||
current->track_type = (TRACK_ELEM_CABLE_LIFT_HILL << 2) | (current->sprite_direction >> 3);
|
current->track_type = (TRACK_ELEM_CABLE_LIFT_HILL << 2) | (current->sprite_direction >> 3);
|
||||||
|
@ -262,7 +263,7 @@ bool sub_6DF01A_loop(rct_vehicle* vehicle) {
|
||||||
unk.z += vehicle->track_z;
|
unk.z += vehicle->track_z;
|
||||||
|
|
||||||
uint8 bx = 0;
|
uint8 bx = 0;
|
||||||
unk.z += RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8);
|
unk.z += RideData5[ride->type].z_offset;
|
||||||
if (unk.x != unk_F64E20->x)
|
if (unk.x != unk_F64E20->x)
|
||||||
bx |= (1 << 0);
|
bx |= (1 << 0);
|
||||||
if (unk.y != unk_F64E20->y)
|
if (unk.y != unk_F64E20->y)
|
||||||
|
@ -348,7 +349,7 @@ bool sub_6DF21B_loop(rct_vehicle* vehicle) {
|
||||||
unk.z += vehicle->track_z;
|
unk.z += vehicle->track_z;
|
||||||
|
|
||||||
uint8 bx = 0;
|
uint8 bx = 0;
|
||||||
unk.z += RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8);
|
unk.z += RideData5[ride->type].z_offset;
|
||||||
if (unk.x != unk_F64E20->x)
|
if (unk.x != unk_F64E20->x)
|
||||||
bx |= (1 << 0);
|
bx |= (1 << 0);
|
||||||
if (unk.y != unk_F64E20->y)
|
if (unk.y != unk_F64E20->y)
|
||||||
|
|
|
@ -4437,7 +4437,7 @@ rct_vehicle *vehicle_create_car(
|
||||||
vehicle->track_z = z;
|
vehicle->track_z = z;
|
||||||
vehicle->current_station = map_get_station(mapElement);
|
vehicle->current_station = map_get_station(mapElement);
|
||||||
|
|
||||||
z += RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8);
|
z += RideData5[ride->type].z_offset;
|
||||||
|
|
||||||
vehicle->track_type = mapElement->properties.track.type << 2;
|
vehicle->track_type = mapElement->properties.track.type << 2;
|
||||||
vehicle->track_progress = 0;
|
vehicle->track_progress = 0;
|
||||||
|
@ -4511,7 +4511,7 @@ rct_vehicle *vehicle_create_car(
|
||||||
|
|
||||||
vehicle->current_station = map_get_station(mapElement);
|
vehicle->current_station = map_get_station(mapElement);
|
||||||
z = mapElement->base_height * 8;
|
z = mapElement->base_height * 8;
|
||||||
z += RCT2_GLOBAL(0x0097D21A + (ride->type * 8), uint8);
|
z += RideData5[ride->type].z_offset;
|
||||||
|
|
||||||
sprite_move(x, y, z, (rct_sprite*)vehicle);
|
sprite_move(x, y, z, (rct_sprite*)vehicle);
|
||||||
vehicle->track_type = (mapElement->properties.track.type << 2) | (vehicle->sprite_direction >> 3);
|
vehicle->track_type = (mapElement->properties.track.type << 2) | (vehicle->sprite_direction >> 3);
|
||||||
|
@ -7427,7 +7427,7 @@ void ride_update_max_vehicles(int rideIndex)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
stationLength = (stationLength * 0x44180) - 0x16B2A;
|
stationLength = (stationLength * 0x44180) - 0x16B2A;
|
||||||
int maxFriction = RCT2_GLOBAL(0x0097D21B + (ride->type * 8), uint8) << 8;
|
int maxFriction = RideData5[ride->type].max_friction << 8;
|
||||||
int maxCarsPerTrain = 1;
|
int maxCarsPerTrain = 1;
|
||||||
for (int numCars = rideEntry->max_cars_in_train; numCars > 0; numCars--) {
|
for (int numCars = rideEntry->max_cars_in_train; numCars > 0; numCars--) {
|
||||||
ride_entry_get_train_layout(ride->subtype, numCars, trainLayout);
|
ride_entry_get_train_layout(ride->subtype, numCars, trainLayout);
|
||||||
|
|
|
@ -1177,6 +1177,100 @@ const ride_cost RideTrackCosts[91] = {
|
||||||
{ 95, 5 }, // RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER
|
{ 95, 5 }, // RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 0x0097D218
|
||||||
|
const rct_ride_data_5 RideData5[91] = {
|
||||||
|
{ 19, 24, 9, 31, 11, 50, 85, 0 }, // RIDE_TYPE_SPIRAL_ROLLER_COASTER
|
||||||
|
{ 25, 24, 9, 18, 11, 50, 90, 0 }, // RIDE_TYPE_STAND_UP_ROLLER_COASTER
|
||||||
|
{ 24, 40, 29, 26, 8, 50, 90, 0 }, // RIDE_TYPE_SUSPENDED_SWINGING_COASTER
|
||||||
|
{ 38, 40, 29, 27, 8, 50, 100, 0 }, // RIDE_TYPE_INVERTED_ROLLER_COASTER
|
||||||
|
{ 12, 24, 4, 10, 7, 40, 60, 0 }, // RIDE_TYPE_JUNIOR_ROLLER_COASTER
|
||||||
|
{ 7, 32, 5, 39, 9, 50, 50, 0 }, // RIDE_TYPE_MINIATURE_RAILWAY
|
||||||
|
{ 8, 32, 8, 78, 9, 50, 60, 0 }, // RIDE_TYPE_MONORAIL
|
||||||
|
{ 10, 24, 24, 3, 8, 40, 50, 0 }, // RIDE_TYPE_MINI_SUSPENDED_COASTER
|
||||||
|
{ 255, 16, 0, 255, 3, 5, 40, 0 }, // RIDE_TYPE_BOAT_RIDE
|
||||||
|
{ 14, 24, 4, 4, 7, 40, 55, 0 }, // RIDE_TYPE_WOODEN_WILD_MOUSE
|
||||||
|
{ 14, 24, 7, 4, 7, 40, 60, 0 }, // RIDE_TYPE_STEEPLECHASE
|
||||||
|
{ 6, 24, 4, 2, 7, 30, 50, 0 }, // RIDE_TYPE_CAR_RIDE
|
||||||
|
{ 255, 32, 3, 15, 2, 4, 65, 0 }, // RIDE_TYPE_LAUNCHED_FREEFALL
|
||||||
|
{ 19, 24, 5, 25, 7, 45, 75, 0 }, // RIDE_TYPE_BOBSLEIGH_COASTER
|
||||||
|
{ 255, 32, 3, 15, 2, 4, 45, 0 }, // RIDE_TYPE_OBSERVATION_TOWER
|
||||||
|
{ 35, 24, 5, 18, 7, 50, 95, 0 }, // RIDE_TYPE_LOOPING_ROLLER_COASTER
|
||||||
|
{ 15, 24, 5, 5, 7, 40, 55, 0 }, // RIDE_TYPE_DINGHY_SLIDE
|
||||||
|
{ 21, 24, 4, 15, 7, 50, 85, 0 }, // RIDE_TYPE_MINE_TRAIN_COASTER
|
||||||
|
{ 40, 32, 28, 18, 2, 30, 55, 0 }, // RIDE_TYPE_CHAIRLIFT
|
||||||
|
{ 28, 24, 8, 18, 11, 50, 100, 0 }, // RIDE_TYPE_CORKSCREW_ROLLER_COASTER
|
||||||
|
{ 6, 24, 0, 18, 1, 8, 40, 0 }, // RIDE_TYPE_MAZE
|
||||||
|
{ 15, 128, 0, 255, 2, 1, 40, 0 }, // RIDE_TYPE_SPIRAL_SLIDE
|
||||||
|
{ 7, 24, 2, 255, 1, 20, 55, 0 }, // RIDE_TYPE_GO_KARTS
|
||||||
|
{ 9, 24, 7, 255, 9, 40, 65, 0 }, // RIDE_TYPE_LOG_FLUME
|
||||||
|
{ 9, 32, 14, 255, 15, 40, 70, 0 }, // RIDE_TYPE_RIVER_RAPIDS
|
||||||
|
{ 9, 48, 2, 255, 2, 1, 35, 0 }, // RIDE_TYPE_DODGEMS
|
||||||
|
{ 12, 112, 7, 255, 11, 1, 35, 0 }, // RIDE_TYPE_PIRATE_SHIP
|
||||||
|
{ 15, 176, 7, 255, 11, 1, 35, 0 }, // RIDE_TYPE_SWINGING_INVERTER_SHIP
|
||||||
|
{ 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_FOOD_STALL
|
||||||
|
{ 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_1D
|
||||||
|
{ 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_DRINK_STALL
|
||||||
|
{ 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_1F
|
||||||
|
{ 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_SHOP
|
||||||
|
{ 12, 64, 3, 255, 2, 1, 45, 0 }, // RIDE_TYPE_MERRY_GO_ROUND
|
||||||
|
{ 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_22
|
||||||
|
{ 12, 48, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_INFORMATION_KIOSK
|
||||||
|
{ 12, 32, 0, 255, 0, 1, 5, 0 }, // RIDE_TYPE_TOILETS
|
||||||
|
{ 16, 176, 3, 255, 2, 1, 45, 0 }, // RIDE_TYPE_FERRIS_WHEEL
|
||||||
|
{ 12, 64, 3, 255, 2, 1, 45, 0 }, // RIDE_TYPE_MOTION_SIMULATOR
|
||||||
|
{ 12, 128, 3, 255, 2, 1, 45, 0 }, // RIDE_TYPE_3D_CINEMA
|
||||||
|
{ 16, 112, 3, 255, 2, 1, 55, 0 }, // RIDE_TYPE_TOP_SPIN
|
||||||
|
{ 16, 48, 3, 255, 2, 1, 30, 0 }, // RIDE_TYPE_SPACE_RINGS
|
||||||
|
{ 255, 32, 4, 255, 7, 45, 70, 0 }, // RIDE_TYPE_REVERSE_FREEFALL_COASTER
|
||||||
|
{ 255, 32, 3, 15, 2, 4, 45, 0 }, // RIDE_TYPE_LIFT
|
||||||
|
{ 53, 24, 8, 25, 11, 42, 95, 0 }, // RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER
|
||||||
|
{ 12, 32, 0, 255, 0, 1, 5, 0 }, // RIDE_TYPE_CASH_MACHINE
|
||||||
|
{ 12, 64, 3, 255, 2, 1, 40, 0 }, // RIDE_TYPE_TWIST
|
||||||
|
{ 16, 160, 3, 255, 2, 1, 22, 0 }, // RIDE_TYPE_HAUNTED_HOUSE
|
||||||
|
{ 12, 48, 0, 255, 0, 1, 5, 0 }, // RIDE_TYPE_FIRST_AID
|
||||||
|
{ 12, 128, 3, 255, 2, 1, 39, 0 }, // RIDE_TYPE_CIRCUS_SHOW
|
||||||
|
{ 8, 24, 6, 2, 7, 30, 50, 0 }, // RIDE_TYPE_GHOST_TRAIN
|
||||||
|
{ 54, 24, 8, 31, 9, 55, 120, 0 }, // RIDE_TYPE_TWISTER_ROLLER_COASTER
|
||||||
|
{ 41, 24, 8, 15, 11, 50, 105, 0 }, // RIDE_TYPE_WOODEN_ROLLER_COASTER
|
||||||
|
{ 15, 24, 4, 15, 11, 37, 65, 0 }, // RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER
|
||||||
|
{ 16, 24, 4, 4, 7, 40, 55, 0 }, // RIDE_TYPE_WILD_MOUSE
|
||||||
|
{ 40, 24, 8, 78, 11, 50, 100, 0 }, // RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER
|
||||||
|
{ 40, 24, 8, 78, 11, 50, 100, 0 }, // RIDE_TYPE_38
|
||||||
|
{ 30, 24, 8, 35, 11, 50, 100, 0 }, // RIDE_TYPE_FLYING_ROLLER_COASTER
|
||||||
|
{ 30, 24, 8, 35, 11, 50, 100, 0 }, // RIDE_TYPE_3A
|
||||||
|
{ 14, 24, 6, 15, 7, 25, 50, 0 }, // RIDE_TYPE_VIRGINIA_REEL
|
||||||
|
{ 16, 24, 7, 255, 11, 30, 65, 0 }, // RIDE_TYPE_SPLASH_BOATS
|
||||||
|
{ 7, 24, 4, 2, 7, 30, 45, 0 }, // RIDE_TYPE_MINI_HELICOPTERS
|
||||||
|
{ 26, 24, 8, 25, 11, 50, 100, 0 }, // RIDE_TYPE_LAY_DOWN_ROLLER_COASTER
|
||||||
|
{ 12, 40, 32, 78, 8, 50, 60, 0 }, // RIDE_TYPE_SUSPENDED_MONORAIL
|
||||||
|
{ 26, 24, 8, 25, 11, 50, 100, 0 }, // RIDE_TYPE_40
|
||||||
|
{ 18, 24, 8, 15, 11, 37, 65, 0 }, // RIDE_TYPE_REVERSER_ROLLER_COASTER
|
||||||
|
{ 22, 24, 15, 18, 9, 30, 35, 0 }, // RIDE_TYPE_HEARTLINE_TWISTER_COASTER
|
||||||
|
{ 7, 32, 2, 255, 2, 20, 23, 0 }, // RIDE_TYPE_MINI_GOLF
|
||||||
|
{ 86, 24, 9, 31, 11, 55, 120, 0 }, // RIDE_TYPE_GIGA_COASTER
|
||||||
|
{ 255, 32, 3, 15, 2, 4, 45, 0 }, // RIDE_TYPE_ROTO_DROP
|
||||||
|
{ 9, 48, 2, 255, 2, 1, 35, 0 }, // RIDE_TYPE_FLYING_SAUCERS
|
||||||
|
{ 16, 96, 3, 255, 2, 1, 22, 0 }, // RIDE_TYPE_CROOKED_HOUSE
|
||||||
|
{ 5, 24, 8, 2, 7, 30, 45, 0 }, // RIDE_TYPE_MONORAIL_CYCLES
|
||||||
|
{ 27, 40, 29, 18, 8, 50, 80, 0 }, // RIDE_TYPE_COMPACT_INVERTED_COASTER
|
||||||
|
{ 18, 24, 4, 13, 7, 40, 60, 0 }, // RIDE_TYPE_WATER_COASTER
|
||||||
|
{ 255, 32, 4, 255, 7, 45, 70, 0 }, // RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER
|
||||||
|
{ 16, 24, 24, 4, 7, 40, 55, 0 }, // RIDE_TYPE_INVERTED_HAIRPIN_COASTER
|
||||||
|
{ 15, 176, 7, 255, 11, 1, 35, 0 }, // RIDE_TYPE_MAGIC_CARPET
|
||||||
|
{ 255, 16, 0, 255, 3, 5, 40, 0 }, // RIDE_TYPE_SUBMARINE_RIDE
|
||||||
|
{ 12, 24, 7, 255, 11, 30, 65, 0 }, // RIDE_TYPE_RIVER_RAFTS
|
||||||
|
{ 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_50
|
||||||
|
{ 16, 160, 3, 255, 2, 1, 45, 0 }, // RIDE_TYPE_ENTERPRISE
|
||||||
|
{ 12, 48, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_52
|
||||||
|
{ 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_53
|
||||||
|
{ 12, 48, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_54
|
||||||
|
{ 44, 24, 8, 18, 11, 50, 100, 0 }, // RIDE_TYPE_55
|
||||||
|
{ 45, 40, 29, 23, 8, 25, 75, 0 }, // RIDE_TYPE_INVERTED_IMPULSE_COASTER
|
||||||
|
{ 16, 24, 9, 10, 11, 40, 60, 0 }, // RIDE_TYPE_MINI_ROLLER_COASTER
|
||||||
|
{ 13, 24, 9, 27, 11, 40, 70, 0 }, // RIDE_TYPE_MINE_RIDE
|
||||||
|
{ 16, 24, 4, 4, 7, 40, 55, 0 }, // RIDE_TYPE_59
|
||||||
|
{ 35, 24, 5, 18, 7, 50, 95, 0 }, // RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// rct2: 0x00982358
|
// rct2: 0x00982358
|
||||||
|
|
|
@ -61,6 +61,17 @@ typedef struct {
|
||||||
uint16 support_price;
|
uint16 support_price;
|
||||||
} ride_cost;
|
} ride_cost;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint8 max_height;
|
||||||
|
uint8 clearance_height;
|
||||||
|
sint8 z_offset;
|
||||||
|
uint8 max_friction;
|
||||||
|
uint8 z;
|
||||||
|
uint8 price;
|
||||||
|
uint8 bonus_value; // Deprecated. Use rideBonusValue instead
|
||||||
|
uint8 pad;
|
||||||
|
} rct_ride_data_5;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8 sound_id;
|
uint8 sound_id;
|
||||||
uint8 minimum_speed;
|
uint8 minimum_speed;
|
||||||
|
@ -105,6 +116,7 @@ extern const rct_ride_lift_data RideLiftData[91];
|
||||||
|
|
||||||
extern const rct_ride_data_4 RideData4[91];
|
extern const rct_ride_data_4 RideData4[91];
|
||||||
extern const ride_cost RideTrackCosts[91];
|
extern const ride_cost RideTrackCosts[91];
|
||||||
|
extern const rct_ride_data_5 RideData5[91];
|
||||||
|
|
||||||
extern const money8 DefaultShopItemPrice[SHOP_ITEM_COUNT];
|
extern const money8 DefaultShopItemPrice[SHOP_ITEM_COUNT];
|
||||||
extern const rct_shop_item_string_types ShopItemStringIds[SHOP_ITEM_COUNT];
|
extern const rct_shop_item_string_types ShopItemStringIds[SHOP_ITEM_COUNT];
|
||||||
|
|
|
@ -3438,7 +3438,7 @@ money32 place_maze_design(uint8 flags, uint8 rideIndex, uint16 mazeEntry, sint16
|
||||||
uint8 supportZ = (z + 32) >> 3;
|
uint8 supportZ = (z + 32) >> 3;
|
||||||
if (supportZ > mapElement->base_height) {
|
if (supportZ > mapElement->base_height) {
|
||||||
uint8 supportHeight = (supportZ - mapElement->base_height) / 2;
|
uint8 supportHeight = (supportZ - mapElement->base_height) / 2;
|
||||||
uint8 maxSupportHeight = RCT2_GLOBAL(0x0097D218 + (RIDE_TYPE_MAZE * 8), uint8);
|
uint8 maxSupportHeight = RideData5[RIDE_TYPE_MAZE].max_height;
|
||||||
if (supportHeight > maxSupportHeight) {
|
if (supportHeight > maxSupportHeight) {
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_TOO_HIGH_FOR_SUPPORTS;
|
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_TOO_HIGH_FOR_SUPPORTS;
|
||||||
return MONEY32_UNDEFINED;
|
return MONEY32_UNDEFINED;
|
||||||
|
@ -4570,11 +4570,11 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
|
||||||
int baseZ = (originZ + trackBlock->z) / 8;
|
int baseZ = (originZ + trackBlock->z) / 8;
|
||||||
|
|
||||||
int clearanceZ = trackBlock->var_07;
|
int clearanceZ = trackBlock->var_07;
|
||||||
if (trackBlock->var_09 & (1 << 2) && RCT2_GLOBAL(0x0097D219 + (ride->type * 8), uint8) > 24){
|
if (trackBlock->var_09 & (1 << 2) && RideData5[ride->type].clearance_height > 24) {
|
||||||
clearanceZ += 24;
|
clearanceZ += 24;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
clearanceZ += RCT2_GLOBAL(0x0097D219 + (ride->type * 8), uint8);
|
clearanceZ += RideData5[ride->type].clearance_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
clearanceZ = (clearanceZ / 8) + baseZ;
|
clearanceZ = (clearanceZ / 8) + baseZ;
|
||||||
|
@ -4718,7 +4718,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
|
||||||
if (ride_height >= 0) {
|
if (ride_height >= 0) {
|
||||||
int maxHeight = rideEntry->max_height;
|
int maxHeight = rideEntry->max_height;
|
||||||
if (maxHeight == 0) {
|
if (maxHeight == 0) {
|
||||||
maxHeight = RCT2_GLOBAL(0x0097D218 + (ride->type * 8), uint8);
|
maxHeight = RideData5[ride->type].max_height;
|
||||||
}
|
}
|
||||||
ride_height /= 2;
|
ride_height /= 2;
|
||||||
if (ride_height > maxHeight && !(RCT2_GLOBAL(0x009D8150, uint8) & 1)) {
|
if (ride_height > maxHeight && !(RCT2_GLOBAL(0x009D8150, uint8) & 1)) {
|
||||||
|
@ -5264,7 +5264,7 @@ money32 set_maze_track(uint16 x, uint8 flags, uint8 direction, uint16 y, uint8 r
|
||||||
if (heightDifference >= 0 && !gCheatsDisableSupportLimits) {
|
if (heightDifference >= 0 && !gCheatsDisableSupportLimits) {
|
||||||
heightDifference = heightDifference >> 1;
|
heightDifference = heightDifference >> 1;
|
||||||
|
|
||||||
if (heightDifference > RCT2_GLOBAL(0x0097D218 + (RIDE_TYPE_MAZE * 8), uint8)) {
|
if (heightDifference > RideData5[RIDE_TYPE_MAZE].max_height) {
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_TOO_HIGH_FOR_SUPPORTS;
|
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_TOO_HIGH_FOR_SUPPORTS;
|
||||||
return MONEY32_UNDEFINED;
|
return MONEY32_UNDEFINED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6917,7 +6917,7 @@ loc_6DAEB9:
|
||||||
);
|
);
|
||||||
sint16 x = vehicle->track_x + moveInfo->x;
|
sint16 x = vehicle->track_x + moveInfo->x;
|
||||||
sint16 y = vehicle->track_y + moveInfo->y;
|
sint16 y = vehicle->track_y + moveInfo->y;
|
||||||
sint16 z = vehicle->track_z + moveInfo->z + RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8);
|
sint16 z = vehicle->track_z + moveInfo->z + RideData5[ride->type].z_offset;
|
||||||
|
|
||||||
trackType = vehicle->track_type >> 2;
|
trackType = vehicle->track_type >> 2;
|
||||||
regs.ebx = 0;
|
regs.ebx = 0;
|
||||||
|
@ -7226,7 +7226,7 @@ loc_6DBA33:;
|
||||||
|
|
||||||
sint16 x = vehicle->track_x + moveInfo->x;
|
sint16 x = vehicle->track_x + moveInfo->x;
|
||||||
sint16 y = vehicle->track_y + moveInfo->y;
|
sint16 y = vehicle->track_y + moveInfo->y;
|
||||||
sint16 z = vehicle->track_z + moveInfo->z + RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8);
|
sint16 z = vehicle->track_z + moveInfo->z + RideData5[ride->type].z_offset;
|
||||||
|
|
||||||
regs.ebx = 0;
|
regs.ebx = 0;
|
||||||
if (x != unk_F64E20->x) { regs.ebx |= 1; }
|
if (x != unk_F64E20->x) { regs.ebx |= 1; }
|
||||||
|
@ -7559,7 +7559,7 @@ loc_6DC743:
|
||||||
// loc_6DC8A1
|
// loc_6DC8A1
|
||||||
x = vehicle->track_x + moveInfo->x;
|
x = vehicle->track_x + moveInfo->x;
|
||||||
y = vehicle->track_y + moveInfo->y;
|
y = vehicle->track_y + moveInfo->y;
|
||||||
z = vehicle->track_z + moveInfo->z + RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8);
|
z = vehicle->track_z + moveInfo->z + RideData5[ride->type].z_offset;
|
||||||
|
|
||||||
// Investigate redundant code
|
// Investigate redundant code
|
||||||
regs.ebx = 0;
|
regs.ebx = 0;
|
||||||
|
@ -7699,7 +7699,7 @@ loc_6DCC2C:
|
||||||
moveInfo = vehicle_get_move_info(vehicle->var_CD, vehicle->track_type, vehicle->track_progress);
|
moveInfo = vehicle_get_move_info(vehicle->var_CD, vehicle->track_type, vehicle->track_progress);
|
||||||
x = vehicle->track_x + moveInfo->x;
|
x = vehicle->track_x + moveInfo->x;
|
||||||
y = vehicle->track_y + moveInfo->y;
|
y = vehicle->track_y + moveInfo->y;
|
||||||
z = vehicle->track_z + moveInfo->z + RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8);
|
z = vehicle->track_z + moveInfo->z + RideData5[ride->type].z_offset;
|
||||||
|
|
||||||
// Investigate redundant code
|
// Investigate redundant code
|
||||||
regs.ebx = 0;
|
regs.ebx = 0;
|
||||||
|
|
|
@ -918,7 +918,7 @@ static void window_new_ride_paint_ride_information(rct_window *w, rct_drawpixeli
|
||||||
} else {
|
} else {
|
||||||
price *= RCT2_ADDRESS(0x0099DA34, uint32)[unk2];
|
price *= RCT2_ADDRESS(0x0099DA34, uint32)[unk2];
|
||||||
}
|
}
|
||||||
price = (price >> 17) * 10 * RCT2_GLOBAL(0x0097D21D + (item.type * 8), uint8);
|
price = (price >> 17) * 10 * RideData5[item.type].price;
|
||||||
|
|
||||||
//
|
//
|
||||||
rct_string_id stringId = 1691;
|
rct_string_id stringId = 1691;
|
||||||
|
|
|
@ -2328,7 +2328,7 @@ static void sub_6CBCE2(
|
||||||
x = originX + offsetX;
|
x = originX + offsetX;
|
||||||
y = originY + offsetY;
|
y = originY + offsetY;
|
||||||
baseZ = (originZ + trackBlock->z) >> 3;
|
baseZ = (originZ + trackBlock->z) >> 3;
|
||||||
clearanceZ = ((trackBlock->var_07 + RCT2_GLOBAL(0x0097D219 + (ride->type * 8), uint8)) >> 3) + baseZ + 4;
|
clearanceZ = ((trackBlock->var_07 + RideData5[ride->type].clearance_height) >> 3) + baseZ + 4;
|
||||||
|
|
||||||
int tileX = x >> 5;
|
int tileX = x >> 5;
|
||||||
int tileY = y >> 5;
|
int tileY = y >> 5;
|
||||||
|
|
|
@ -1682,7 +1682,7 @@ static money32 map_set_land_height(int flags, int x, int y, int height, int styl
|
||||||
int rideIndex = mapElement->properties.track.ride_index;
|
int rideIndex = mapElement->properties.track.ride_index;
|
||||||
int maxHeight = get_ride_entry_by_ride(get_ride(rideIndex))->max_height;
|
int maxHeight = get_ride_entry_by_ride(get_ride(rideIndex))->max_height;
|
||||||
if(maxHeight == 0)
|
if(maxHeight == 0)
|
||||||
maxHeight = RCT2_GLOBAL(0x97D218 + 8 * get_ride(rideIndex)->type, uint8);
|
maxHeight = RideData5[get_ride(rideIndex)->type].max_height;
|
||||||
int zDelta = mapElement->clearance_height - height;
|
int zDelta = mapElement->clearance_height - height;
|
||||||
if(zDelta >= 0 && zDelta/2 > maxHeight)
|
if(zDelta >= 0 && zDelta/2 > maxHeight)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue