diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index 1f12e65b28..c6eef5a738 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -125,6 +125,8 @@ void RideObject::ReadLegacy(IReadObjectContext * context, IStream * stream) void RideObject::Load() { + _legacyType.obj = this; + GetStringTable().Sort(); _legacyType.naming.name = language_allocate_object_string(GetName()); _legacyType.naming.description = language_allocate_object_string(GetDescription()); @@ -709,11 +711,20 @@ void RideObject::ReadJsonVehicleInfo(IReadObjectContext * context, const json_t std::vector RideObject::ReadJsonCars(const json_t * jCars) { std::vector cars; - json_t * jCar; - size_t index; - json_array_foreach(jCars, index, jCar) + + if (json_is_array(jCars)) { - auto car = ReadJsonCar(jCar); + json_t * jCar; + size_t index; + json_array_foreach(jCars, index, jCar) + { + auto car = ReadJsonCar(jCar); + cars.push_back(car); + } + } + else if (json_is_object(jCars)) + { + auto car = ReadJsonCar(jCars); cars.push_back(car); } return cars; diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 67ff350652..a112fd6cf6 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -126,6 +126,7 @@ struct rct_ride_entry { uint8 shop_item; // 0x1C0 uint8 shop_item_secondary; // 0x1C1 rct_string_id capacity; + void * obj; }; #pragma pack(pop)