/***************************************************************************** * Copyright (c) 2014 Ted John * OpenRCT2, an open source clone of Roller Coaster Tycoon 2. * * This file is part of OpenRCT2. * * OpenRCT2 is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see . *****************************************************************************/ #ifndef _RIDE_H_ #define _RIDE_H_ #include "rct2.h" /** * Ride structure. * size: 0x0260 */ typedef struct { uint8 type; // 0x000 uint32 var_001; uint8 pad_005[0x44]; uint8 status; // 0x049 uint16 var_04A; uint32 var_04C; uint16 var_050; // 0x050 uint8 pad_052[0x18]; uint16 var_06A[4]; // probably entrance map coordinates uint8 pad_072[0x14]; uint16 var_086[1]; uint8 pad_088[0x68]; sint16 excitement; // 0x0F0 sint16 intensity; // 0x0F2 sint16 nausea; // 0x0F4 uint8 pad_0F6[0x2E]; sint16 var_124; sint16 var_126; sint16 var_128; sint16 var_12A; sint16 var_12C; sint16 var_12E; uint16 age; // 0x130 sint16 running_cost; // 0x132 sint16 var_134; sint16 var_136; uint8 pad_138[0x08]; sint16 var_140; sint16 var_142; uint16 pad_144; uint16 reliability; // 0x146 uint16 pad_148; uint16 var_14A; uint8 pad_14C; uint8 var_14D; uint8 pad_14E[0x0A]; uint16 var_158; uint8 pad_15A[0x3C]; uint16 var_196; uint8 pad_198; uint8 var_199; uint8 pad_19A[0x1A]; sint32 profit; // 0x1B4 uint8 queue_time[4]; // 0x1B8 uint8 pad_1BC[0x12]; uint16 guests_favourite; // 0x1CE uint32 var_1D0; uint8 pad_1D4[0x2C]; uint16 queue_length[4]; // 0x200 uint8 pad_208[0x58]; } rct_ride; /** * Ride measurement structure. * size: 0x04B0C */ typedef struct { uint8 var_00; uint8 pad_01[0x4B0B]; } rct_ride_measurement; enum { RIDE_CLASS_RIDE, RIDE_CLASS_SHOP_OR_STALL, RIDE_CLASS_KIOSK_OR_FACILITY }; enum { RIDE_TYPE_NULL = 255, RIDE_TYPE_SPIRAL_ROLLER_COASTER = 0, RIDE_TYPE_STAND_UP_ROLLER_COASTER, RIDE_TYPE_SUSPENDED_SWINGING_COASTER, RIDE_TYPE_INVERTED_ROLLER_COASTER, RIDE_TYPE_JUNIOR_ROLLER_COASTER, RIDE_TYPE_MINIATURE_RAILWAY, RIDE_TYPE_MONORAIL, RIDE_TYPE_MINI_SUSPENDED_COASTER, RIDE_TYPE_BUMPER_BOATS, RIDE_TYPE_WOODEN_WILD_MOUSE, RIDE_TYPE_STEEPLECHASE, RIDE_TYPE_CAR_RIDE, RIDE_TYPE_LAUNCHED_FREEFALL, RIDE_TYPE_BOBSLEIGH_COASTER, RIDE_TYPE_OBSERVATION_TOWER, RIDE_TYPE_LOOPING_ROLLER_COASTER, RIDE_TYPE_DINGHY_SLIDE, RIDE_TYPE_MINE_TRAIN_COASTER, RIDE_TYPE_CHAIRLIFT, RIDE_TYPE_CORKSCREW_ROLLER_COASTER, RIDE_TYPE_MAZE, RIDE_TYPE_SPIRAL_SLIDE, RIDE_TYPE_GO_KARTS, RIDE_TYPE_LOG_FLUME, RIDE_TYPE_RIVER_RAPIDS, RIDE_TYPE_BUMPER_CARS, RIDE_TYPE_PIRATE_SHIP, RIDE_TYPE_SWINGING_INVERTER_SHIP, RIDE_TYPE_FOOD_STALL, RIDE_TYPE_1D, RIDE_TYPE_DRINK_STALL, RIDE_TYPE_1F, RIDE_TYPE_SHOP, RIDE_TYPE_MERRY_GO_ROUND, RIDE_TYPE_22, RIDE_TYPE_INFORMATION_KIOSK, RIDE_TYPE_BATHROOM, RIDE_TYPE_FERRIS_WHEEL, RIDE_TYPE_MOTION_SIMULATOR, RIDE_TYPE_3D_CINEMA, RIDE_TYPE_TOP_SPIN, RIDE_TYPE_SPACE_RINGS, RIDE_TYPE_REVERSE_FREEFALL_COASTER, RIDE_TYPE_ELEVATOR, RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER, RIDE_TYPE_ATM, RIDE_TYPE_TWIST, RIDE_TYPE_HAUNTED_HOUSE, RIDE_TYPE_FIRST_AID, RIDE_TYPE_CIRCUS_SHOW, RIDE_TYPE_GHOST_TRAIN, RIDE_TYPE_TWISTER_ROLLER_COASTER, RIDE_TYPE_WOODEN_ROLLER_COASTER, RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER, RIDE_TYPE_WILD_MOUSE, RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER, RIDE_TYPE_38, RIDE_TYPE_FLYING_ROLLER_COASTER, RIDE_TYPE_3A, RIDE_TYPE_VIRGINIA_REEL, RIDE_TYPE_SPLASH_BOATS, RIDE_TYPE_MINI_HELICOPTERS, RIDE_TYPE_LAY_DOWN_ROLLER_COASTER, RIDE_TYPE_SUSPENDED_MONORAIL, RIDE_TYPE_40, RIDE_TYPE_REVERSER_ROLLER_COASTER, RIDE_TYPE_HEARTLINE_TWISTER_COASTER, RIDE_TYPE_MINI_GOLF, RIDE_TYPE_GIGA_COASTER, RIDE_TYPE_ROTO_DROP, RIDE_TYPE_FLYING_SAUCERS, RIDE_TYPE_CROOKED_HOUSE, RIDE_TYPE_MONORAIL_CYCLES, RIDE_TYPE_COMPACT_INVERTED_COASTER, RIDE_TYPE_WATER_COASTER, RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER, RIDE_TYPE_INVERTED_HAIRPIN_COASTER, RIDE_TYPE_MAGIC_CARPET, RIDE_TYPE_SUBMARINE_RIDE, RIDE_TYPE_RIVER_RAFTS, RIDE_TYPE_50, RIDE_TYPE_ENTERPRISE, RIDE_TYPE_52, RIDE_TYPE_53, RIDE_TYPE_54, RIDE_TYPE_55, RIDE_TYPE_INVERTED_IMPULSE_COASTER, RIDE_TYPE_MINI_ROLLER_COASTER, RIDE_TYPE_MINE_RIDE, RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER }; enum { RIDE_STATUS_CLOSED, RIDE_STATUS_OPEN, RIDE_STATUS_TESTING }; #define MAX_RIDES 255 #define MAX_RIDE_MEASUREMENTS 8 extern const uint8 gRideClassifications[255]; int ride_get_count(); int ride_get_total_queue_length(rct_ride *ride); int ride_get_max_queue_time(rct_ride *ride); void ride_init_all(); #endif