diff --git a/src/drawing/sprite.c b/src/drawing/sprite.c index 9f47d9b533..aaa09f1cd2 100644 --- a/src/drawing/sprite.c +++ b/src/drawing/sprite.c @@ -136,6 +136,7 @@ void gfx_bmp_sprite_to_buffer(uint8* palette_pointer, uint8* unknown_pointer, ui uint32 source_line_width = source_image->width * zoom_amount; //Requires use of palette? if (image_type & IMAGE_TYPE_USE_PALETTE){ + assert(palette_pointer != NULL); //Mix with another image?? and colour adjusted if (unknown_pointer!= NULL){ //Not tested. I can't actually work out when this code runs. @@ -182,6 +183,7 @@ void gfx_bmp_sprite_to_buffer(uint8* palette_pointer, uint8* unknown_pointer, ui //Mix with background. It only uses source pointer for //telling if it needs to be drawn not for colour. if (image_type & IMAGE_TYPE_MIX_BACKGROUND){//Not tested + assert(palette_pointer != NULL); for (; height > 0; height -= zoom_amount){ uint8* next_source_pointer = source_pointer + source_line_width; uint8* next_dest_pointer = dest_pointer + dest_line_width; diff --git a/src/input.c b/src/input.c index 947138e16b..cee459a73f 100644 --- a/src/input.c +++ b/src/input.c @@ -428,6 +428,7 @@ static void input_viewport_drag_continue() dx = newDragX - _dragX; dy = newDragY - _dragY; w = window_find_by_number(_dragWindowClass, _dragWindowNumber); + assert(w != NULL); viewport = w->viewport; RCT2_GLOBAL(RCT2_ADDRESS_TICKS_SINCE_DRAG_START, sint16) += RCT2_GLOBAL(RCT2_ADDRESS_TICKS_SINCE_LAST_UPDATE, sint16); diff --git a/src/management/research.c b/src/management/research.c index d8e3f0d116..5873493565 100644 --- a/src/management/research.c +++ b/src/management/research.c @@ -295,7 +295,9 @@ void sub_684AC3(){ ebp = inner_research; } } while ((inner_research++)->entryIndex != RESEARCHED_ITEMS_END); + assert(edx != NULL); edx->entryIndex = research->entryIndex; + assert(ebp != NULL); ebp->entryIndex = (research + 1)->entryIndex; uint8 cat = edx->category; diff --git a/src/rct1.c b/src/rct1.c index b151ee507a..90fe58171d 100644 --- a/src/rct1.c +++ b/src/rct1.c @@ -1528,152 +1528,157 @@ static const RCT1DefaultObjectsGroup RCT1DefaultObjects[10] = { }; // Keep these in the same order as gVehicleHierarchies -char *SpiralRCObjectOrder[] = { "SPDRCR "}; -char *StandupRCObjectOrder[] = { "TOGST "}; -char *SuspendedSWRCObjectOrder[] = { "ARRSW1 ", "VEKVAMP ", "ARRSW2 "}; -char *InvertedRCObjectOrder[] = { "NEMT "}; -char *JuniorCoasterObjectOrder[] = { "ZLDB ", "ZLOG "}; -char *MiniatureRailwayObjectOrder[] = { "NRL ", "NRL2 ", "AML1 ", "TRAM1 "}; -char *MonorailObjectOrder[] = { "MONO1 ", "MONO2 ", "MONO3 "}; -char *MiniSuspendedRCObjectOrder[] = { "BATFL ", "SKYTR "}; -char *BoatRideObjectOrder[] = { "RBOAT ", "BBOAT ", "CBOAT ", "SWANS ", "TRIKE ","JSKI "}; -char *WoodenWMObjectOrder[] = { "WMOUSE ", "WMMINE "}; -char *SteeplechaseObjectOrder[] = { "STEEP1 ", "STEEP2 ", "SBOX "}; -char *CarRideObjectOrder[] = { "SPCAR ", "RCR ", "TRUCK1 ", "VCR ", "CTCAR "}; -char *LaunchedFFObjectOrder[] = { "SSC1 "}; -char *BobsleighRCObjectOrder[] = { "BOB1 ", "INTBOB "}; -char *ObservationTowerObjectOrder[] = { "OBS1 ", "OBS2 "}; -char *LoopingRCObjectOrder[] = { "SCHT1 "}; -char *DinghySlideObjectOrder[] = { "DING1 "}; -char *MineTrainRCObjectOrder[] = { "AMT1 "}; -char *ChairliftObjectOrder[] = { "CLIFT1 ", "CLIFT2 "}; -char *CorkscrewRCObjectOrder[] = { "ARRT1 ", "ARRT2 "}; -char *GoKartsObjectOrder[] = { "KART1 "}; -char *LogFlumeObjectOrder[] = { "LFB1 "}; -char *RiverRapidsObjectOrder[] = { "RAPBOAT "}; -char *ReverseFreefallRCObjectOrder[]= { "REVF1 "}; -char *LiftObjectOrder[] = { "LIFT1 "}; -char *VerticalDropRCObjectOrder[] = { "BMVD "}; -char *GhostTrainObjectOrder[] = { "GTC ", "HMCAR "}; -char *TwisterRCObjectOrder[] = { "BMSD ", "BMSU ", "BMFL ", "BMRB ", "GOLTR "}; -char *WoodenRCObjectOrder[] = { "PTCT1 ", "MFT ", "PTCT2 "}; -char *SideFrictionRCObjectOrder[] = { "SFRIC1 "}; -char *SteelWildMouseObjectOrder[] = { "SMC1 ", "SMC2 ", "WMSPIN "}; -char *MultiDimensionRCObjectOrder[] = { "ARRX "}; -char *FlyingRCObjectOrder[] = { "BMAIR "}; -char *VirginiaReelRCObjectOrder[] = { "VREEL "}; -char *SplashBoatsObjectOrder[] = { "SPBOAT "}; -char *MiniHelicoptersObjectOrder[] = { "HELICAR "}; -char *LayDownRCObjectOrder[] = { "VEKST "}; -char *SuspendedMonorailObjectOrder[]= { "SMONO "}; -char *ReverserRCObjectOrder[] = { "REVCAR "}; -char *HeartlineTwisterObjectOrder[] = { "UTCAR ", "UTCARR "}; -char *GigaRCObjectOrder[] = { "INTST "}; -char *RotoDropObjectOrder[] = { "GDROP1 "}; -char *MonorailCyclesObjectOrder[] = { "MONBK "}; -char *CompactInvertedRCObjectOrder[]= { "SLCT ", "SLCFO ", "VEKDV "}; -char *WaterRCObjectOrder[] = { "CSTBOAT "}; -char *AirPoweredRCObjectOrder[] = { "THCAR "}; -char *InvertedHairpinRCObjectOrder[]= { "IVMC1 "}; -char *SubmarineRideObjectOrder[] = { "SUBMAR "}; -char *RiverRaftsObjectOrder[] = { "RFTBOAT "}; -char *InvertedImpulseRCObjectOrder[]= { "INTINV "}; -char *MiniRCObjectOrder[] = { "WCATC ", "RCKC ", "JSTAR1 "}; -char *MineRideRCObjectOrder[] = { "PMT1 "}; -char *LIMLaunchedRCObjectOrder[] = { "PREMT1 "}; +const char *SpiralRCObjectOrder[] = { "SPDRCR "}; +const char *StandupRCObjectOrder[] = { "TOGST "}; +const char *SuspendedSWRCObjectOrder[] = { "ARRSW1 ", "VEKVAMP ", "ARRSW2 "}; +const char *InvertedRCObjectOrder[] = { "NEMT "}; +const char *JuniorCoasterObjectOrder[] = { "ZLDB ", "ZLOG "}; +const char *MiniatureRailwayObjectOrder[] = { "NRL ", "NRL2 ", "AML1 ", "TRAM1 "}; +const char *MonorailObjectOrder[] = { "MONO1 ", "MONO2 ", "MONO3 "}; +const char *MiniSuspendedRCObjectOrder[] = { "BATFL ", "SKYTR "}; +const char *BoatRideObjectOrder[] = { "RBOAT ", "BBOAT ", "CBOAT ", "SWANS ", "TRIKE ","JSKI "}; +const char *WoodenWMObjectOrder[] = { "WMOUSE ", "WMMINE "}; +const char *SteeplechaseObjectOrder[] = { "STEEP1 ", "STEEP2 ", "SBOX "}; +const char *CarRideObjectOrder[] = { "SPCAR ", "RCR ", "TRUCK1 ", "VCR ", "CTCAR "}; +const char *LaunchedFFObjectOrder[] = { "SSC1 "}; +const char *BobsleighRCObjectOrder[] = { "BOB1 ", "INTBOB "}; +const char *ObservationTowerObjectOrder[] = { "OBS1 ", "OBS2 "}; +const char *LoopingRCObjectOrder[] = { "SCHT1 "}; +const char *DinghySlideObjectOrder[] = { "DING1 "}; +const char *MineTrainRCObjectOrder[] = { "AMT1 "}; +const char *ChairliftObjectOrder[] = { "CLIFT1 ", "CLIFT2 "}; +const char *CorkscrewRCObjectOrder[] = { "ARRT1 ", "ARRT2 "}; +const char *GoKartsObjectOrder[] = { "KART1 "}; +const char *LogFlumeObjectOrder[] = { "LFB1 "}; +const char *RiverRapidsObjectOrder[] = { "RAPBOAT "}; +const char *ReverseFreefallRCObjectOrder[] = { "REVF1 "}; +const char *LiftObjectOrder[] = { "LIFT1 "}; +const char *VerticalDropRCObjectOrder[] = { "BMVD "}; +const char *GhostTrainObjectOrder[] = { "GTC ", "HMCAR "}; +const char *TwisterRCObjectOrder[] = { "BMSD ", "BMSU ", "BMFL ", "BMRB ", "GOLTR "}; +const char *WoodenRCObjectOrder[] = { "PTCT1 ", "MFT ", "PTCT2 "}; +const char *SideFrictionRCObjectOrder[] = { "SFRIC1 "}; +const char *SteelWildMouseObjectOrder[] = { "SMC1 ", "SMC2 ", "WMSPIN "}; +const char *MultiDimensionRCObjectOrder[] = { "ARRX "}; +const char *FlyingRCObjectOrder[] = { "BMAIR "}; +const char *VirginiaReelRCObjectOrder[] = { "VREEL "}; +const char *SplashBoatsObjectOrder[] = { "SPBOAT "}; +const char *MiniHelicoptersObjectOrder[] = { "HELICAR "}; +const char *LayDownRCObjectOrder[] = { "VEKST "}; +const char *SuspendedMonorailObjectOrder[] = { "SMONO "}; +const char *ReverserRCObjectOrder[] = { "REVCAR "}; +const char *HeartlineTwisterObjectOrder[] = { "UTCAR ", "UTCARR "}; +const char *GigaRCObjectOrder[] = { "INTST "}; +const char *RotoDropObjectOrder[] = { "GDROP1 "}; +const char *MonorailCyclesObjectOrder[] = { "MONBK "}; +const char *CompactInvertedRCObjectOrder[] = { "SLCT ", "SLCFO ", "VEKDV "}; +const char *WaterRCObjectOrder[] = { "CSTBOAT "}; +const char *AirPoweredRCObjectOrder[] = { "THCAR "}; +const char *InvertedHairpinRCObjectOrder[] = { "IVMC1 "}; +const char *SubmarineRideObjectOrder[] = { "SUBMAR "}; +const char *RiverRaftsObjectOrder[] = { "RFTBOAT "}; +const char *InvertedImpulseRCObjectOrder[] = { "INTINV "}; +const char *MiniRCObjectOrder[] = { "WCATC ", "RCKC ", "JSTAR1 "}; +const char *MineRideRCObjectOrder[] = { "PMT1 "}; +const char *LIMLaunchedRCObjectOrder[] = { "PREMT1 "}; -char **gVehicleHierarchies[0x60] = { - SpiralRCObjectOrder, // 0 Spiral Roller coaster - StandupRCObjectOrder, // 1 Stand Up Coaster - SuspendedSWRCObjectOrder, // 2 Suspended Swinging - InvertedRCObjectOrder, // 3 Inverted - JuniorCoasterObjectOrder, // 4 Junior RC / Steel Mini Coaster - MiniatureRailwayObjectOrder, // 5 Mini Railroad - MonorailObjectOrder, // 6 Monorail - MiniSuspendedRCObjectOrder, // 7 Mini Suspended Coaster - BoatRideObjectOrder, // 8 Boat ride - WoodenWMObjectOrder, // 9 Wooden Wild Mine/Mouse - SteeplechaseObjectOrder, // a Steeplechase/Motorbike/Soap Box Derby - CarRideObjectOrder, // b Car Ride - LaunchedFFObjectOrder, // c Launched Freefall - BobsleighRCObjectOrder, // d Bobsleigh Coaster - ObservationTowerObjectOrder, // e Observation Tower - LoopingRCObjectOrder, // f Looping Roller Coaster - DinghySlideObjectOrder, // 10 Dinghy Slide - MineTrainRCObjectOrder, // 11 Mine Train Coaster - ChairliftObjectOrder, // 12 Chairlift - CorkscrewRCObjectOrder, // 13 Corkscrew Roller Coaster - NULL, // 14 Maze, N/A - NULL, // 15 Spiral Slide, N/A - GoKartsObjectOrder, // 16 Go Karts - LogFlumeObjectOrder, // 17 Log Flume - RiverRapidsObjectOrder, // 18 River Rapids - NULL, // 19 Dodgems, N/A - NULL, // 1a Pirate Ship, N/A - NULL, // 1b Swinging Inverter Ship, N/A - NULL, // 1c Food Stall, N/A - NULL, // 1d (none), N/A - NULL, // 1e Drink Stall, N/A - NULL, // 1f (none), N/A - NULL, // 20 Shop (all types), N/A - NULL, // 21 Merry Go Round, N/A - NULL, // 22 Balloon Stall (maybe), N/A - NULL, // 23 Information Kiosk, N/A - NULL, // 24 Bathroom, N/A - NULL, // 25 Ferris Wheel, N/A - NULL, // 26 Motion Simulator, N/A - NULL, // 27 3D Cinema, N/A - NULL, // 28 Top Spin, N/A - NULL, // 29 Space Rings, N/A - ReverseFreefallRCObjectOrder, // 2a Reverse Freefall Coaster - LiftObjectOrder, // 2b Lift - VerticalDropRCObjectOrder, // 2c Vertical Drop Roller Coaster - NULL, // 2d ATM, N/A - NULL, // 2e Twist, N/A - NULL, // 2f Haunted House, N/A - NULL, // 30 First Aid, N/A - NULL, // 31 Circus Show, N/A - GhostTrainObjectOrder, // 32 Ghost Train - TwisterRCObjectOrder, // 33 Twister Roller Coaster - WoodenRCObjectOrder, // 34 Wooden Roller Coaster - SideFrictionRCObjectOrder, // 35 Side-Friction Roller Coaster - SteelWildMouseObjectOrder, // 36 Steel Wild Mouse - MultiDimensionRCObjectOrder, // 37 Multi Dimension Coaster - NULL, // 38 (none), N/A - FlyingRCObjectOrder, // 39 Flying Roller Coaster - NULL, // 3a (none), N/A - VirginiaReelRCObjectOrder, // 3b Virginia Reel - SplashBoatsObjectOrder, // 3c Splash Boats - MiniHelicoptersObjectOrder, // 3d Mini Helicopters - LayDownRCObjectOrder, // 3e Lay-down Roller Coaster - SuspendedMonorailObjectOrder, // 3f Suspended Monorail - NULL, // 40 (none), N/A - ReverserRCObjectOrder, // 41 Reverser Roller Coaster - HeartlineTwisterObjectOrder, // 42 Heartline Twister Roller Coaster - NULL, // 43 Mini Golf, N/A - GigaRCObjectOrder, // 44 Giga Coaster - RotoDropObjectOrder, // 45 Roto-Drop - NULL, // 46 Flying Saucers, N/A - NULL, // 47 Crooked House, N/A - MonorailCyclesObjectOrder, // 48 Monorail Cycles - CompactInvertedRCObjectOrder, // 49 Compact Inverted Coaster - WaterRCObjectOrder, // 4a Water Coaster - AirPoweredRCObjectOrder, // 4b Air Powered Vertical Coaster - InvertedHairpinRCObjectOrder, // 4c Inverted Hairpin Coaster - NULL, // 4d Magic Carpet, N/A - SubmarineRideObjectOrder, // 4e Submarine Ride - RiverRaftsObjectOrder, // 4f River Rafts - NULL, // 50 (none), N/A - NULL, // 51 Enterprise, N/A - NULL, // 52 (none), N/A - NULL, // 53 (none), N/A - NULL, // 54 (none), N/A - NULL, // 55 (none), N/A - InvertedImpulseRCObjectOrder, // 56 Inverted Impulse Coaster - MiniRCObjectOrder, // 57 Mini Roller Coaster - MineRideRCObjectOrder, // 58 Mine Ride - NULL, // 59 Unknown Ride - LIMLaunchedRCObjectOrder, // 60 LIM Launched Roller Coaster +typedef struct { + const char **entries; + int count; +} RCT1VehicleHierarchiesGroup; + +RCT1VehicleHierarchiesGroup gVehicleHierarchies[0x60] = { + { SpiralRCObjectOrder, countof(SpiralRCObjectOrder) }, // 0 Spiral Roller coaster + { StandupRCObjectOrder, countof(StandupRCObjectOrder) }, // 1 Stand Up Coaster + { SuspendedSWRCObjectOrder, countof(SuspendedSWRCObjectOrder) }, // 2 Suspended Swinging + { InvertedRCObjectOrder, countof(InvertedRCObjectOrder) }, // 3 Inverted + { JuniorCoasterObjectOrder, countof(JuniorCoasterObjectOrder) }, // 4 Junior RC / Steel Mini Coaster + { MiniatureRailwayObjectOrder, countof(MiniatureRailwayObjectOrder) }, // 5 Mini Railroad + { MonorailObjectOrder, countof(MonorailObjectOrder) }, // 6 Monorail + { MiniSuspendedRCObjectOrder, countof(MiniSuspendedRCObjectOrder) }, // 7 Mini Suspended Coaster + { BoatRideObjectOrder, countof(BoatRideObjectOrder) }, // 8 Boat ride + { WoodenWMObjectOrder, countof(WoodenWMObjectOrder) }, // 9 Wooden Wild Mine/Mouse + { SteeplechaseObjectOrder, countof(SteeplechaseObjectOrder) }, // a Steeplechase/Motorbike/Soap Box Derby + { CarRideObjectOrder, countof(CarRideObjectOrder) }, // b Car Ride + { LaunchedFFObjectOrder, countof(LaunchedFFObjectOrder) }, // c Launched Freefall + { BobsleighRCObjectOrder, countof(BobsleighRCObjectOrder) }, // d Bobsleigh Coaster + { ObservationTowerObjectOrder, countof(ObservationTowerObjectOrder) }, // e Observation Tower + { LoopingRCObjectOrder, countof(LoopingRCObjectOrder) }, // f Looping Roller Coaster + { DinghySlideObjectOrder, countof(DinghySlideObjectOrder) }, // 10 Dinghy Slide + { MineTrainRCObjectOrder, countof(MineTrainRCObjectOrder) }, // 11 Mine Train Coaster + { ChairliftObjectOrder, countof(ChairliftObjectOrder) }, // 12 Chairlift + { CorkscrewRCObjectOrder, countof(CorkscrewRCObjectOrder) }, // 13 Corkscrew Roller Coaster + { NULL, 0 }, // 14 Maze, N/A + { NULL, 0 }, // 15 Spiral Slide, N/A + { GoKartsObjectOrder, countof(GoKartsObjectOrder) }, // 16 Go Karts + { LogFlumeObjectOrder, countof(LogFlumeObjectOrder) }, // 17 Log Flume + { RiverRapidsObjectOrder, countof(RiverRapidsObjectOrder) }, // 18 River Rapids + { NULL, 0 }, // 19 Dodgems, N/A + { NULL, 0 }, // 1a Pirate Ship, N/A + { NULL, 0 }, // 1b Swinging Inverter Ship, N/A + { NULL, 0 }, // 1c Food Stall, N/A + { NULL, 0 }, // 1d (none), N/A + { NULL, 0 }, // 1e Drink Stall, N/A + { NULL, 0 }, // 1f (none), N/A + { NULL, 0 }, // 20 Shop (all types), N/A + { NULL, 0 }, // 21 Merry Go Round, N/A + { NULL, 0 }, // 22 Balloon Stall (maybe), N/A + { NULL, 0 }, // 23 Information Kiosk, N/A + { NULL, 0 }, // 24 Bathroom, N/A + { NULL, 0 }, // 25 Ferris Wheel, N/A + { NULL, 0 }, // 26 Motion Simulator, N/A + { NULL, 0 }, // 27 3D Cinema, N/A + { NULL, 0 }, // 28 Top Spin, N/A + { NULL, 0 }, // 29 Space Rings, N/A + { ReverseFreefallRCObjectOrder, countof(ReverseFreefallRCObjectOrder) }, // 2a Reverse Freefall Coaster + { LiftObjectOrder, countof(LiftObjectOrder) }, // 2b Lift + { VerticalDropRCObjectOrder, countof(VerticalDropRCObjectOrder) }, // 2c Vertical Drop Roller Coaster + { NULL, 0 }, // 2d ATM, N/A + { NULL, 0 }, // 2e Twist, N/A + { NULL, 0 }, // 2f Haunted House, N/A + { NULL, 0 }, // 30 First Aid, N/A + { NULL, 0 }, // 31 Circus Show, N/A + { GhostTrainObjectOrder, countof(GhostTrainObjectOrder) }, // 32 Ghost Train + { TwisterRCObjectOrder, countof(TwisterRCObjectOrder) }, // 33 Twister Roller Coaster + { WoodenRCObjectOrder, countof(WoodenRCObjectOrder) }, // 34 Wooden Roller Coaster + { SideFrictionRCObjectOrder, countof(SideFrictionRCObjectOrder) }, // 35 Side-Friction Roller Coaster + { SteelWildMouseObjectOrder, countof(SteelWildMouseObjectOrder) }, // 36 Steel Wild Mouse + { MultiDimensionRCObjectOrder, countof(MultiDimensionRCObjectOrder) }, // 37 Multi Dimension Coaster + { NULL, 0 }, // 38 (none), N/A + { FlyingRCObjectOrder, countof(FlyingRCObjectOrder) }, // 39 Flying Roller Coaster + { NULL, 0 }, // 3a (none), N/A + { VirginiaReelRCObjectOrder, countof(VirginiaReelRCObjectOrder) }, // 3b Virginia Reel + { SplashBoatsObjectOrder, countof(SplashBoatsObjectOrder) }, // 3c Splash Boats + { MiniHelicoptersObjectOrder, countof(MiniHelicoptersObjectOrder) }, // 3d Mini Helicopters + { LayDownRCObjectOrder, countof(LayDownRCObjectOrder) }, // 3e Lay-down Roller Coaster + { SuspendedMonorailObjectOrder, countof(SuspendedMonorailObjectOrder) }, // 3f Suspended Monorail + { NULL, 0 }, // 40 (none), N/A + { ReverserRCObjectOrder, countof(ReverserRCObjectOrder) }, // 41 Reverser Roller Coaster + { HeartlineTwisterObjectOrder, countof(HeartlineTwisterObjectOrder) }, // 42 Heartline Twister Roller Coaster + { NULL, 0 }, // 43 Mini Golf, N/A + { GigaRCObjectOrder, countof(GigaRCObjectOrder) }, // 44 Giga Coaster + { RotoDropObjectOrder, countof(RotoDropObjectOrder) }, // 45 Roto-Drop + { NULL, 0 }, // 46 Flying Saucers, N/A + { NULL, 0 }, // 47 Crooked House, N/A + { MonorailCyclesObjectOrder, countof(MonorailCyclesObjectOrder) }, // 48 Monorail Cycles + { CompactInvertedRCObjectOrder, countof(CompactInvertedRCObjectOrder) }, // 49 Compact Inverted Coaster + { WaterRCObjectOrder, countof(WaterRCObjectOrder) }, // 4a Water Coaster + { AirPoweredRCObjectOrder, countof(AirPoweredRCObjectOrder) }, // 4b Air Powered Vertical Coaster + { InvertedHairpinRCObjectOrder, countof(InvertedHairpinRCObjectOrder) }, // 4c Inverted Hairpin Coaster + { NULL, 0 }, // 4d Magic Carpet, N/A + { SubmarineRideObjectOrder, countof(SubmarineRideObjectOrder) }, // 4e Submarine Ride + { RiverRaftsObjectOrder, countof(RiverRaftsObjectOrder) }, // 4f River Rafts + { NULL, 0 }, // 50 (none), N/A + { NULL, 0 }, // 51 Enterprise, N/A + { NULL, 0 }, // 52 (none), N/A + { NULL, 0 }, // 53 (none), N/A + { NULL, 0 }, // 54 (none), N/A + { NULL, 0 }, // 55 (none), N/A + { InvertedImpulseRCObjectOrder, countof(InvertedImpulseRCObjectOrder) }, // 56 Inverted Impulse Coaster + { MiniRCObjectOrder, countof(MiniRCObjectOrder) }, // 57 Mini Roller Coaster + { MineRideRCObjectOrder, countof(MineRideRCObjectOrder) }, // 58 Mine Ride + { NULL, 0 }, // 59 Unknown Ride + { LIMLaunchedRCObjectOrder, countof(LIMLaunchedRCObjectOrder) }, // 60 LIM Launched Roller Coaster }; const uint8 gRideCategories[0x60] = { @@ -1774,7 +1779,7 @@ const uint8 gRideCategories[0x60] = { It determines which picture is shown on the new ride tab and which train type is selected by default.*/ bool vehicleIsHigherInHierarchy(int track_type, char *currentVehicleName, char *comparedVehicleName) { - if(currentVehicleName==NULL || comparedVehicleName==NULL || gVehicleHierarchies[track_type]==NULL) { + if(currentVehicleName==NULL || comparedVehicleName==NULL || gVehicleHierarchies[track_type].entries==NULL) { return false; } @@ -1784,14 +1789,14 @@ bool vehicleIsHigherInHierarchy(int track_type, char *currentVehicleName, char * currentVehicleHierarchy=255; comparedVehicleHierarchy=255; - for(int i=0;i