From b93429052cc0a98b3c13535e65a77debc8fb2ef5 Mon Sep 17 00:00:00 2001 From: Ted John Date: Sun, 17 Apr 2016 22:18:54 +0100 Subject: [PATCH] fix more import bugs --- src/rct1/S4Importer.cpp | 13 ++++++++++--- src/rct1/import.h | 2 ++ src/rct1/tables.cpp | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/rct1/S4Importer.cpp b/src/rct1/S4Importer.cpp index 5756e17cc9..2b132a0976 100644 --- a/src/rct1/S4Importer.cpp +++ b/src/rct1/S4Importer.cpp @@ -343,7 +343,14 @@ void S4Importer::ImportRide(rct_ride * dst, rct1_ride * src) memset(dst, 0, sizeof(rct_ride)); dst->type = RCT1::GetRideType(src->type); - dst->subtype = _vehicleTypeToRideEntryMap[src->vehicle_type]; + if (RCT1::RideTypeHasVehicle(src->type)) + { + dst->subtype = _rideTypeToRideEntryMap[src->type]; + } + else + { + dst->subtype = _vehicleTypeToRideEntryMap[src->vehicle_type]; + } rct_ride_entry * rideEntry = get_ride_entry(dst->subtype); @@ -1263,8 +1270,8 @@ void S4Importer::FixMapElementEntryTypes() mapElement->properties.fence.type = _wallTypeToEntryMap[mapElement->properties.fence.type]; if (mapElement->properties.fence.type == 255) { - map_element_remove(mapElement); - map_element_iterator_restart_for_tile(&it); + // map_element_remove(mapElement); + // map_element_iterator_restart_for_tile(&it); } break; } diff --git a/src/rct1/import.h b/src/rct1/import.h index 9509ac5841..22958969e3 100644 --- a/src/rct1/import.h +++ b/src/rct1/import.h @@ -10,6 +10,8 @@ namespace RCT1 uint8 GetTerrainEdge(uint8 terrainEdge); uint8 GetRideType(uint8 rideType); + bool RideTypeHasVehicle(uint8 rideType); + const char * GetRideTypeObject(uint8 rideType); const char * GetVehicleObject(uint8 vehicleType); const char * GetSmallSceneryObject(uint8 smallSceneryType); diff --git a/src/rct1/tables.cpp b/src/rct1/tables.cpp index ebd2b9cf3c..6c364ac6e6 100644 --- a/src/rct1/tables.cpp +++ b/src/rct1/tables.cpp @@ -5,6 +5,7 @@ extern "C" { #include "../interface/colour.h" + #include "../rct1.h" #include "../ride/ride.h" } @@ -193,6 +194,39 @@ namespace RCT1 return map[rideType]; } + bool RideTypeHasVehicle(uint8 rideType) + { + switch (rideType) { + case RCT1_RIDE_TYPE_HEDGE_MAZE: + case RCT1_RIDE_TYPE_SPIRAL_SLIDE: + case RCT1_RIDE_TYPE_ICE_CREAM_STALL: + case RCT1_RIDE_TYPE_FRIES_STALL: + case RCT1_RIDE_TYPE_DRINK_STALL: + case RCT1_RIDE_TYPE_COTTON_CANDY_STALL: + case RCT1_RIDE_TYPE_BURGER_BAR: + case RCT1_RIDE_TYPE_BALLOON_STALL: + case RCT1_RIDE_TYPE_INFORMATION_KIOSK: + case RCT1_RIDE_TYPE_TOILETS: + case RCT1_RIDE_TYPE_SOUVENIR_STALL: + case RCT1_RIDE_TYPE_PIZZA_STALL: + case RCT1_RIDE_TYPE_POPCORN_STALL: + case RCT1_RIDE_TYPE_HOT_DOG_STALL: + case RCT1_RIDE_TYPE_EXOTIC_SEA_FOOD_STALL: + case RCT1_RIDE_TYPE_HAT_STALL: + case RCT1_RIDE_TYPE_CANDY_APPLE_STAND: + case RCT1_RIDE_TYPE_40: + case RCT1_RIDE_TYPE_44: + case RCT1_RIDE_TYPE_T_SHIRT_STALL: + case RCT1_RIDE_TYPE_DOUGHNUT_SHOP: + case RCT1_RIDE_TYPE_COFFEE_SHOP: + case RCT1_RIDE_TYPE_FRIED_CHICKEN_STALL: + case RCT1_RIDE_TYPE_LEMONADE_STALL: + return true; + default: + return false; + } + } + const char * GetRideTypeObject(uint8 rideType) { static const char * map[] =