Define RCT1 vehicles as constants and use a lookup table

This commit is contained in:
Gymnasiast 2016-02-25 22:34:06 +01:00 committed by Ted John
parent 74d0c2aed8
commit caefc1d9cc
2 changed files with 188 additions and 82 deletions

View File

@ -1106,6 +1106,99 @@ static const rct_object_entry RCT1DefaultObjectsRides[] = {
{ 0x00008000, { "AML1 " }, 0 }
};
// A value of 255 means the default vehicle for the respective track type should be used.
static const uint8 RCT1AlternativeVehicleMappings[89] = {
255, // RCT1_VEHICLE_TYPE_STEEL_ROLLER_COASTER_TRAIN
255, // RCT1_VEHICLE_TYPE_STEEL_ROLLER_COASTER_TRAIN_BACKWARDS
255, // RCT1_VEHICLE_TYPE_WOODEN_ROLLER_COASTER_TRAIN
73, // RCT1_VEHICLE_TYPE_INVERTED_COASTER_TRAIN // Not in RCT2
255, // RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_CARS
255, // RCT1_VEHICLE_TYPE_LADYBIRD_CARS
255, // RCT1_VEHICLE_TYPE_STANDUP_ROLLER_COASTER_CARS
85, // RCT1_VEHICLE_TYPE_SPINNING_CARS
255, // RCT1_VEHICLE_TYPE_SINGLE_PERSON_SWINGING_CHAIRS
86, // RCT1_VEHICLE_TYPE_SWANS_PEDAL_BOATS
87, // RCT1_VEHICLE_TYPE_LARGE_MONORAIL_TRAIN
88, // RCT1_VEHICLE_TYPE_CANOES
255, // RCT1_VEHICLE_TYPE_ROWING_BOATS
255, // RCT1_VEHICLE_TYPE_STEAM_TRAIN
255, // RCT1_VEHICLE_TYPE_WOODEN_MOUSE_CARS
89, // RCT1_VEHICLE_TYPE_BUMPER_BOATS
255, // RCT1_VEHICLE_TYPE_WOODEN_ROLLER_COASTER_TRAIN_BACKWARDS
90, // RCT1_VEHICLE_TYPE_ROCKET_CARS
255, // RCT1_VEHICLE_TYPE_HORSES // Steeplechase
255, // RCT1_VEHICLE_TYPE_SPORTSCARS
91, // RCT1_VEHICLE_TYPE_LYING_DOWN_SWINGING_CARS // Inverted single-rail
92, // RCT1_VEHICLE_TYPE_WOODEN_MINE_CARS
93, // RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_AIRPLANE_CARS
255, // RCT1_VEHICLE_TYPE_SMALL_MONORAIL_CARS
94, // RCT1_VEHICLE_TYPE_WATER_TRICYCLES
255, // RCT1_VEHICLE_TYPE_LAUNCHED_FREEFALL_CAR
255, // RCT1_VEHICLE_TYPE_BOBSLEIGH_CARS
255, // RCT1_VEHICLE_TYPE_DINGHIES
255, // RCT1_VEHICLE_TYPE_ROTATING_CABIN
255, // RCT1_VEHICLE_TYPE_MINE_TRAIN
255, // RCT1_VEHICLE_TYPE_CHAIRLIFT_CARS
255, // RCT1_VEHICLE_TYPE_CORKSCREW_ROLLER_COASTER_TRAIN
95, // RCT1_VEHICLE_TYPE_MOTORBIKES
96, // RCT1_VEHICLE_TYPE_RACING_CARS
97, // RCT1_VEHICLE_TYPE_TRUCKS
255, // RCT1_VEHICLE_TYPE_GO_KARTS
255, // RCT1_VEHICLE_TYPE_RAPIDS_BOATS
255, // RCT1_VEHICLE_TYPE_LOG_FLUME_BOATS
255, // RCT1_VEHICLE_TYPE_DODGEMS
255, // RCT1_VEHICLE_TYPE_SWINGING_SHIP
255, // RCT1_VEHICLE_TYPE_SWINGING_INVERTER_SHIP
255, // RCT1_VEHICLE_TYPE_MERRY_GO_ROUND
255, // RCT1_VEHICLE_TYPE_FERRIS_WHEEL
255, // RCT1_VEHICLE_TYPE_SIMULATOR_POD
255, // RCT1_VEHICLE_TYPE_CINEMA_BUILDING
255, // RCT1_VEHICLE_TYPE_TOPSPIN_CAR
255, // RCT1_VEHICLE_TYPE_SPACE_RINGS
255, // RCT1_VEHICLE_TYPE_REVERSE_FREEFALL_ROLLER_COASTER_CAR
255, // RCT1_VEHICLE_TYPE_VERTICAL_ROLLER_COASTER_CARS
98, // RCT1_VEHICLE_TYPE_CAT_CARS
255, // RCT1_VEHICLE_TYPE_TWIST_ARMS_AND_CARS
255, // RCT1_VEHICLE_TYPE_HAUNTED_HOUSE_BUILDING
99, // RCT1_VEHICLE_TYPE_LOG_CARS
255, // RCT1_VEHICLE_TYPE_CIRCUS_TENT
255, // RCT1_VEHICLE_TYPE_GHOST_TRAIN_CARS
255, // RCT1_VEHICLE_TYPE_STEEL_TWISTER_ROLLER_COASTER_TRAIN
255, // RCT1_VEHICLE_TYPE_WOODEN_TWISTER_ROLLER_COASTER_TRAIN
255, // RCT1_VEHICLE_TYPE_WOODEN_SIDE_FRICTION_CARS
100, // RCT1_VEHICLE_TYPE_VINTAGE_CARS
101, // RCT1_VEHICLE_TYPE_STEAM_TRAIN_COVERED_CARS
102, // RCT1_VEHICLE_TYPE_STAND_UP_STEEL_TWISTER_ROLLER_COASTER_TRAIN
103, // RCT1_VEHICLE_TYPE_FLOORLESS_STEEL_TWISTER_ROLLER_COASTER_TRAIN
255, // RCT1_VEHICLE_TYPE_STEEL_MOUSE_CARS
104, // RCT1_VEHICLE_TYPE_CHAIRLIFT_CARS_ALTERNATIVE
255, // RCT1_VEHICLE_TYPE_SUSPENDED_MONORAIL_TRAIN
255, // RCT1_VEHICLE_TYPE_HELICOPTER_CARS
255, // RCT1_VEHICLE_TYPE_VIRGINIA_REEL_TUBS
255, // RCT1_VEHICLE_TYPE_REVERSER_CARS
255, // RCT1_VEHICLE_TYPE_GOLFERS
255, // RCT1_VEHICLE_TYPE_RIVER_RIDE_BOATS
255, // RCT1_VEHICLE_TYPE_FLYING_ROLLER_COASTER_TRAIN
105, // RCT1_VEHICLE_TYPE_NON_LOOPING_STEEL_TWISTER_ROLLER_COASTER_TRAIN
255, // RCT1_VEHICLE_TYPE_HEARTLINE_TWISTER_CARS
106, // RCT1_VEHICLE_TYPE_HEARTLINE_TWISTER_CARS_REVERSED
255, // RCT1_VEHICLE_TYPE_RESERVED
255, // RCT1_VEHICLE_TYPE_ROTODROP_CAR
255, // RCT1_VEHICLE_TYPE_FLYING_SAUCERS
255, // RCT1_VEHICLE_TYPE_CROOKED_HOUSE_BUILDING
255, // RCT1_VEHICLE_TYPE_BICYCLES
107, // RCT1_VEHICLE_TYPE_HYPERCOASTER_TRAIN
255, // RCT1_VEHICLE_TYPE_4_ACROSS_INVERTED_COASTER_TRAIN
255, // RCT1_VEHICLE_TYPE_WATER_COASTER_BOATS
108, // RCT1_VEHICLE_TYPE_FACEOFF_CARS
255, // RCT1_VEHICLE_TYPE_JET_SKIS
255, // RCT1_VEHICLE_TYPE_RAFT_BOATS
109, // RCT1_VEHICLE_TYPE_AMERICAN_STYLE_STEAM_TRAIN
255, // RCT1_VEHICLE_TYPE_AIR_POWERED_COASTER_TRAIN
255, // RCT1_VEHICLE_TYPE_SUSPENDED_WILD_MOUSE_CARS // Inverted Hairpin in RCT2
255 // RCT1_VEHICLE_TYPE_ENTERPRISE_WHEEL
};
// rct2: 0x0098BD0E
static const rct_object_entry RCT1DefaultObjectsSmallScenery[] = {
{ 0x00000081, { "TL0 " }, 0 },
@ -2084,89 +2177,10 @@ static void rct1_import_ride(rct1_s4 *s4, rct_ride *dst, rct1_ride *src)
// Make sure the right vehicle is chosen.
// https://github.com/OpenRCT2/OpenRCT2/wiki/RCT1-ride-and-vehicle-types-and-their-RCT2-equivalents
switch(src->vehicle_type)
{
case 3:
dst->subtype = 73;
break;
case 7:
dst->subtype = 85;
break;
case 9:
dst->subtype = 86;
break;
case 10:
dst->subtype = 87;
break;
case 11:
dst->subtype = 88;
break;
case 15:
dst->subtype = 89;
break;
case 17:
dst->subtype = 90;
break;
case 20:
dst->subtype = 91;
break;
case 21:
dst->subtype = 92;
break;
case 22:
dst->subtype = 93;
break;
case 24:
dst->subtype = 94;
break;
case 32:
dst->subtype = 95;
break;
case 33:
dst->subtype = 96;
break;
case 34:
dst->subtype = 97;
break;
case 49:
dst->subtype = 98;
break;
case 52:
dst->subtype = 99;
break;
case 58:
dst->subtype = 100;
break;
case 59:
dst->subtype = 101;
break;
case 60:
dst->subtype = 102;
break;
case 61:
dst->subtype = 103;
break;
case 63:
dst->subtype = 104;
break;
case 71:
dst->subtype = 105;
break;
case 73:
dst->subtype = 106;
break;
case 79:
dst->subtype = 107;
break;
case 82:
dst->subtype = 108;
break;
case 85:
dst->subtype = 109;
break;
default:
if (RCT1AlternativeVehicleMappings[src->vehicle_type] != 255)
dst->subtype = RCT1AlternativeVehicleMappings[src->vehicle_type];
else
dst->subtype = src->type;
}
rideEntry = get_ride_entry(dst->subtype);

View File

@ -426,6 +426,98 @@ enum {
RCT1_RIDE_TYPE_LEMONADE_STALL
};
enum {
RCT1_VEHICLE_TYPE_STEEL_ROLLER_COASTER_TRAIN = 0,
RCT1_VEHICLE_TYPE_STEEL_ROLLER_COASTER_TRAIN_BACKWARDS,
RCT1_VEHICLE_TYPE_WOODEN_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_INVERTED_COASTER_TRAIN, // Not in RCT2
RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_CARS,
RCT1_VEHICLE_TYPE_LADYBIRD_CARS,
RCT1_VEHICLE_TYPE_STANDUP_ROLLER_COASTER_CARS,
RCT1_VEHICLE_TYPE_SPINNING_CARS,
RCT1_VEHICLE_TYPE_SINGLE_PERSON_SWINGING_CHAIRS,
RCT1_VEHICLE_TYPE_SWANS_PEDAL_BOATS,
RCT1_VEHICLE_TYPE_LARGE_MONORAIL_TRAIN,
RCT1_VEHICLE_TYPE_CANOES,
RCT1_VEHICLE_TYPE_ROWING_BOATS,
RCT1_VEHICLE_TYPE_STEAM_TRAIN,
RCT1_VEHICLE_TYPE_WOODEN_MOUSE_CARS,
RCT1_VEHICLE_TYPE_BUMPER_BOATS,
RCT1_VEHICLE_TYPE_WOODEN_ROLLER_COASTER_TRAIN_BACKWARDS,
RCT1_VEHICLE_TYPE_ROCKET_CARS,
RCT1_VEHICLE_TYPE_HORSES, // Steeplechase
RCT1_VEHICLE_TYPE_SPORTSCARS,
RCT1_VEHICLE_TYPE_LYING_DOWN_SWINGING_CARS, // Inverted single-rail
RCT1_VEHICLE_TYPE_WOODEN_MINE_CARS,
RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_AIRPLANE_CARS,
RCT1_VEHICLE_TYPE_SMALL_MONORAIL_CARS,
RCT1_VEHICLE_TYPE_WATER_TRICYCLES,
RCT1_VEHICLE_TYPE_LAUNCHED_FREEFALL_CAR,
RCT1_VEHICLE_TYPE_BOBSLEIGH_CARS,
RCT1_VEHICLE_TYPE_DINGHIES,
RCT1_VEHICLE_TYPE_ROTATING_CABIN,
RCT1_VEHICLE_TYPE_MINE_TRAIN,
RCT1_VEHICLE_TYPE_CHAIRLIFT_CARS,
RCT1_VEHICLE_TYPE_CORKSCREW_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_MOTORBIKES,
RCT1_VEHICLE_TYPE_RACING_CARS,
RCT1_VEHICLE_TYPE_TRUCKS,
RCT1_VEHICLE_TYPE_GO_KARTS,
RCT1_VEHICLE_TYPE_RAPIDS_BOATS,
RCT1_VEHICLE_TYPE_LOG_FLUME_BOATS,
RCT1_VEHICLE_TYPE_DODGEMS,
RCT1_VEHICLE_TYPE_SWINGING_SHIP,
RCT1_VEHICLE_TYPE_SWINGING_INVERTER_SHIP,
RCT1_VEHICLE_TYPE_MERRY_GO_ROUND,
RCT1_VEHICLE_TYPE_FERRIS_WHEEL,
RCT1_VEHICLE_TYPE_SIMULATOR_POD,
RCT1_VEHICLE_TYPE_CINEMA_BUILDING,
RCT1_VEHICLE_TYPE_TOPSPIN_CAR,
RCT1_VEHICLE_TYPE_SPACE_RINGS,
RCT1_VEHICLE_TYPE_REVERSE_FREEFALL_ROLLER_COASTER_CAR,
RCT1_VEHICLE_TYPE_VERTICAL_ROLLER_COASTER_CARS,
RCT1_VEHICLE_TYPE_CAT_CARS,
RCT1_VEHICLE_TYPE_TWIST_ARMS_AND_CARS,
RCT1_VEHICLE_TYPE_HAUNTED_HOUSE_BUILDING,
RCT1_VEHICLE_TYPE_LOG_CARS,
RCT1_VEHICLE_TYPE_CIRCUS_TENT,
RCT1_VEHICLE_TYPE_GHOST_TRAIN_CARS,
RCT1_VEHICLE_TYPE_STEEL_TWISTER_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_WOODEN_TWISTER_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_WOODEN_SIDE_FRICTION_CARS,
RCT1_VEHICLE_TYPE_VINTAGE_CARS,
RCT1_VEHICLE_TYPE_STEAM_TRAIN_COVERED_CARS,
RCT1_VEHICLE_TYPE_STAND_UP_STEEL_TWISTER_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_FLOORLESS_STEEL_TWISTER_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_STEEL_MOUSE_CARS,
RCT1_VEHICLE_TYPE_CHAIRLIFT_CARS_ALTERNATIVE,
RCT1_VEHICLE_TYPE_SUSPENDED_MONORAIL_TRAIN,
RCT1_VEHICLE_TYPE_HELICOPTER_CARS,
RCT1_VEHICLE_TYPE_VIRGINIA_REEL_TUBS,
RCT1_VEHICLE_TYPE_REVERSER_CARS,
RCT1_VEHICLE_TYPE_GOLFERS,
RCT1_VEHICLE_TYPE_RIVER_RIDE_BOATS,
RCT1_VEHICLE_TYPE_FLYING_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_NON_LOOPING_STEEL_TWISTER_ROLLER_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_HEARTLINE_TWISTER_CARS,
RCT1_VEHICLE_TYPE_HEARTLINE_TWISTER_CARS_REVERSED,
RCT1_VEHICLE_TYPE_RESERVED,
RCT1_VEHICLE_TYPE_ROTODROP_CAR,
RCT1_VEHICLE_TYPE_FLYING_SAUCERS,
RCT1_VEHICLE_TYPE_CROOKED_HOUSE_BUILDING,
RCT1_VEHICLE_TYPE_BICYCLES,
RCT1_VEHICLE_TYPE_HYPERCOASTER_TRAIN,
RCT1_VEHICLE_TYPE_4_ACROSS_INVERTED_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_WATER_COASTER_BOATS,
RCT1_VEHICLE_TYPE_FACEOFF_CARS,
RCT1_VEHICLE_TYPE_JET_SKIS,
RCT1_VEHICLE_TYPE_RAFT_BOATS,
RCT1_VEHICLE_TYPE_AMERICAN_STYLE_STEAM_TRAIN,
RCT1_VEHICLE_TYPE_AIR_POWERED_COASTER_TRAIN,
RCT1_VEHICLE_TYPE_SUSPENDED_WILD_MOUSE_CARS, // Inverted Hairpin in RCT2
RCT1_VEHICLE_TYPE_ENTERPRISE_WHEEL
};
enum{
RCT1_TRACK_ELEM_BOOSTER = 100
};