mirror of
https://github.com/OpenRCT2/OpenRCT2.git
synced 2025-01-22 18:31:59 -05:00
Merge pull request #21642 from Gymnasiast/feature/classic-standup-2024
Add Classic Stand-Up Roller Coaster
This commit is contained in:
commit
457d40bf2b
17 changed files with 1700 additions and 9 deletions
|
@ -64,9 +64,9 @@ set(TITLE_SEQUENCE_VERSION "0.4.6")
|
|||
set(TITLE_SEQUENCE_URL "https://github.com/OpenRCT2/title-sequences/releases/download/v${TITLE_SEQUENCE_VERSION}/title-sequences.zip")
|
||||
set(TITLE_SEQUENCE_SHA1 "80fefc6ebbabc42a6f4703412daa5c62f661420d")
|
||||
|
||||
set(OBJECTS_VERSION "1.4.0")
|
||||
set(OBJECTS_VERSION "1.4.2")
|
||||
set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v${OBJECTS_VERSION}/objects.zip")
|
||||
set(OBJECTS_SHA1 "f512e230ffa2f16109209e4f30e7d7bf4fe21fc0")
|
||||
set(OBJECTS_SHA1 "2adc4cb66a6446533d67097bdf44cd9c5882fea3")
|
||||
|
||||
set(OPENSFX_VERSION "1.0.5")
|
||||
set(OPENSFX_URL "https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v${OPENSFX_VERSION}/opensound.zip")
|
||||
|
|
|
@ -98,6 +98,7 @@ STR_0093 :Hybrid Coaster
|
|||
STR_0094 :Single Rail Roller Coaster
|
||||
STR_0095 :Alpine Coaster
|
||||
STR_0096 :Classic Wooden Roller Coaster
|
||||
STR_0097 :Classic Stand-up Roller Coaster
|
||||
STR_0512 :A compact roller coaster with a spiral lift hill and smooth, twisting drops.
|
||||
STR_0513 :A looping roller coaster where the riders ride in a standing position
|
||||
STR_0514 :Trains suspended beneath the roller coaster track swing out to the side around corners
|
||||
|
@ -181,6 +182,7 @@ STR_0603 :A wooden style roller coaster with a steel track, allowing for stee
|
|||
STR_0604 :Riders ride single file on a narrow monorail track, as they race through tight inversions and direction changes
|
||||
STR_0605 :Riders toboggan down a meandering steel track, braking to control their speed
|
||||
STR_0606 :An older-style wooden roller coaster with a fast and rough ride, with plenty of air-time, some lateral G’s, and designed to feel ‘out-of-control’
|
||||
STR_0607 :An intense, older-style steel looping roller coaster where the riders ride in a standing position
|
||||
STR_0767 :Guest {INT32}
|
||||
STR_0768 :Handyman {INT32}
|
||||
STR_0769 :Mechanic {INT32}
|
||||
|
|
|
@ -1,9 +1,18 @@
|
|||
0.4.10 (in development)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [#18171] Add port of the RCT1 Stand-Up Roller Coaster.
|
||||
- Feature: [#21636] Add shortcut key for sorting tile elements.
|
||||
- Feature: [objects#294] Add scenery versions of wooden truss supports.
|
||||
- Feature: [objects#295] Flipped version of wooden post.
|
||||
- Improved: [#21424] Extra viewports can now rotate independently from the main viewport.
|
||||
- Improved: [#21561, #21631] Enable more features in Android build (plugins, networking, multiplayer, audio formats).
|
||||
- Improved: [#21599] Currency signs now use non-breaking spaces.
|
||||
- Improved: [objects#157] Added sloped images for many walls.
|
||||
- Improved: [objects#288] Better map colours and more sensible prices for RCT1 land surfaces.
|
||||
- Improved: [objects#292] Vehicle colour cleanups for WW/TT vehicles.
|
||||
- Improved: [objects#299] More accurate ratings modifiers for RCT1 vehicles.
|
||||
- Improved: [objects#309] Updated names for dodgems and flying saucers vehicles.
|
||||
- Improved: [objects#313] buildMenuPriority for dodgems and flying saucers vehicles.
|
||||
- Change: [#21529] Classify “Southern Sands”, “Tiny Towers”, “Nevermore Park”, “Pacifica” as expert scenarios.
|
||||
- Fix: [#910] Extra viewport does not preserve the location when rotating.
|
||||
- Fix: [#18413] Crash when mouse over a hacked train.
|
||||
|
@ -13,6 +22,11 @@
|
|||
- Fix: [#21543] Crash with creating a TrackIterator with invalid arguments.
|
||||
- Fix: [#21635] Tile inspector hotkey can set wall slope for non-slopeable objects.
|
||||
- Fix: [#21641] Crash when creating track iterator from an invalid tile element.
|
||||
- Fix: [objects#290] “Haunted Mansion” cars have a non-functional third remap colour.
|
||||
- Fix: [objects#296] Incorrect wall placement around large Kremlin/drab pieces.
|
||||
- Fix: [objects#300] Incorrect Colosseum and volcano corner clearances.
|
||||
- Fix: [objects#319] Incorrect diagonal slope images used for RCT1 corkscrew.
|
||||
- Fix: [objects#320] Incorrect Mandarin Duck boats capacity.
|
||||
|
||||
0.4.9 (2024-03-02)
|
||||
------------------------------------------------------------------------
|
||||
|
|
|
@ -45,8 +45,8 @@
|
|||
<LibsSha1 Condition="'$(Platform)'=='ARM64'">bd338aa3da9a357fb996dcaa6cea02c4f906718c</LibsSha1>
|
||||
<TitleSequencesUrl>https://github.com/OpenRCT2/title-sequences/releases/download/v0.4.6/title-sequences.zip</TitleSequencesUrl>
|
||||
<TitleSequencesSha1>80fefc6ebbabc42a6f4703412daa5c62f661420d</TitleSequencesSha1>
|
||||
<ObjectsUrl>https://github.com/OpenRCT2/objects/releases/download/v1.4.0/objects.zip</ObjectsUrl>
|
||||
<ObjectsSha1>f512e230ffa2f16109209e4f30e7d7bf4fe21fc0</ObjectsSha1>
|
||||
<ObjectsUrl>https://github.com/OpenRCT2/objects/releases/download/v1.4.2/objects.zip</ObjectsUrl>
|
||||
<ObjectsSha1>2adc4cb66a6446533d67097bdf44cd9c5882fea3</ObjectsSha1>
|
||||
<OpenSFXUrl>https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v1.0.5/opensound.zip</OpenSFXUrl>
|
||||
<OpenSFXSha1>b1b1f1b241d2cbff63a1889c4dc5a09bdf769bfb</OpenSFXSha1>
|
||||
<OpenMSXUrl>https://github.com/OpenRCT2/OpenMusic/releases/download/v1.5/openmusic.zip</OpenMSXUrl>
|
||||
|
|
|
@ -80,6 +80,7 @@ namespace OpenRCT2::Ui::Windows
|
|||
RIDE_TYPE_MINE_TRAIN_COASTER,
|
||||
RIDE_TYPE_LOOPING_ROLLER_COASTER,
|
||||
RIDE_TYPE_STAND_UP_ROLLER_COASTER,
|
||||
RIDE_TYPE_CLASSIC_STAND_UP_ROLLER_COASTER,
|
||||
RIDE_TYPE_CORKSCREW_ROLLER_COASTER,
|
||||
RIDE_TYPE_HYPERCOASTER,
|
||||
RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER,
|
||||
|
|
|
@ -396,6 +396,7 @@
|
|||
<ClInclude Include="ride\coaster\meta\AlpineCoaster.h" />
|
||||
<ClInclude Include="ride\coaster\meta\BobsleighCoaster.h" />
|
||||
<ClInclude Include="ride\coaster\meta\ClassicMiniRollerCoaster.h" />
|
||||
<ClInclude Include="ride\coaster\meta\ClassicStandUpRollerCoaster.h" />
|
||||
<ClInclude Include="ride\coaster\meta\ClassicWoodenRollerCoaster.h" />
|
||||
<ClInclude Include="ride\coaster\meta\CompactInvertedCoaster.h" />
|
||||
<ClInclude Include="ride\coaster\meta\CorkscrewRollerCoaster.h" />
|
||||
|
@ -901,6 +902,7 @@
|
|||
<ClCompile Include="ride\coaster\AirPoweredVerticalCoaster.cpp" />
|
||||
<ClCompile Include="ride\coaster\AlpineCoaster.cpp" />
|
||||
<ClCompile Include="ride\coaster\BobsleighCoaster.cpp" />
|
||||
<ClCompile Include="ride\coaster\ClassicStandUpRollerCoaster.cpp" />
|
||||
<ClCompile Include="ride\coaster\ClassicWoodenRollerCoaster.cpp" />
|
||||
<ClCompile Include="ride\coaster\CompactInvertedCoaster.cpp" />
|
||||
<ClCompile Include="ride\coaster\CorkscrewRollerCoaster.cpp" />
|
||||
|
|
|
@ -113,6 +113,7 @@ enum : uint16_t
|
|||
STR_RIDE_NAME_SINGLE_RAIL_ROLLER_COASTER = 94,
|
||||
STR_RIDE_NAME_ALPINE_COASTER = 95,
|
||||
STR_RIDE_NAME_CLASSIC_WOODEN_ROLLER_COASTER = 96,
|
||||
STR_RIDE_NAME_CLASSIC_STAND_UP_ROLLER_COASTER = 97,
|
||||
|
||||
STR_RIDE_DESCRIPTION_SPIRAL_ROLLER_COASTER = 512,
|
||||
STR_RIDE_DESCRIPTION_STAND_UP_ROLLER_COASTER = 513,
|
||||
|
@ -206,6 +207,7 @@ enum : uint16_t
|
|||
STR_RIDE_DESCRIPTION_SINGLE_RAIL_ROLLER_COASTER = 604,
|
||||
STR_RIDE_DESCRIPTION_ALPINE_COASTER = 605,
|
||||
STR_RIDE_DESCRIPTION_CLASSIC_WOODEN_ROLLER_COASTER = 606,
|
||||
STR_RIDE_DESCRIPTION_CLASSIC_STAND_UP_ROLLER_COASTER = 607,
|
||||
|
||||
STR_GUEST_X = 767,
|
||||
STR_HANDYMAN_X = 768,
|
||||
|
|
|
@ -178,6 +178,26 @@ static constexpr uint8_t metal_supports_slope_image_map[] = {
|
|||
};
|
||||
// clang-format on
|
||||
|
||||
static constexpr MetalSupportPlace kMetalSupportPlacementRotated[][NumOrthogonalDirections] = {
|
||||
{ MetalSupportPlace::TopCorner, MetalSupportPlace::RightCorner, MetalSupportPlace::BottomCorner,
|
||||
MetalSupportPlace::LeftCorner },
|
||||
{ MetalSupportPlace::LeftCorner, MetalSupportPlace::TopCorner, MetalSupportPlace::RightCorner,
|
||||
MetalSupportPlace::BottomCorner },
|
||||
{ MetalSupportPlace::RightCorner, MetalSupportPlace::BottomCorner, MetalSupportPlace::LeftCorner,
|
||||
MetalSupportPlace::TopCorner },
|
||||
{ MetalSupportPlace::BottomCorner, MetalSupportPlace::LeftCorner, MetalSupportPlace::TopCorner,
|
||||
MetalSupportPlace::RightCorner },
|
||||
{ MetalSupportPlace::Centre, MetalSupportPlace::Centre, MetalSupportPlace::Centre, MetalSupportPlace::Centre },
|
||||
{ MetalSupportPlace::TopLeftSide, MetalSupportPlace::TopRightSide, MetalSupportPlace::BottomRightSide,
|
||||
MetalSupportPlace::BottomLeftSide },
|
||||
{ MetalSupportPlace::TopRightSide, MetalSupportPlace::BottomRightSide, MetalSupportPlace::BottomLeftSide,
|
||||
MetalSupportPlace::TopLeftSide },
|
||||
{ MetalSupportPlace::BottomLeftSide, MetalSupportPlace::BottomLeftSide, MetalSupportPlace::TopLeftSide,
|
||||
MetalSupportPlace::TopRightSide },
|
||||
{ MetalSupportPlace::BottomRightSide, MetalSupportPlace::TopLeftSide, MetalSupportPlace::TopRightSide,
|
||||
MetalSupportPlace::BottomRightSide },
|
||||
};
|
||||
|
||||
/**
|
||||
* Metal pole supports
|
||||
* @param supportType (edi)
|
||||
|
@ -374,6 +394,14 @@ bool MetalASupportsPaintSetup(
|
|||
return true;
|
||||
}
|
||||
|
||||
bool MetalASupportsPaintSetupRotated(
|
||||
PaintSession& session, MetalSupportType supportTypeMember, MetalSupportPlace placement, Direction direction,
|
||||
int32_t special, int32_t height, ImageId imageTemplate)
|
||||
{
|
||||
placement = kMetalSupportPlacementRotated[EnumValue(placement)][direction];
|
||||
return MetalASupportsPaintSetup(session, supportTypeMember, placement, special, height, imageTemplate);
|
||||
}
|
||||
|
||||
/**
|
||||
* Metal pole supports
|
||||
* rct2: 0x00663584
|
||||
|
@ -559,6 +587,14 @@ bool MetalBSupportsPaintSetup(
|
|||
return false; // AND
|
||||
}
|
||||
|
||||
bool MetalBSupportsPaintSetupRotated(
|
||||
PaintSession& session, MetalSupportType supportTypeMember, MetalSupportPlace placement, Direction direction,
|
||||
int32_t special, int32_t height, ImageId imageTemplate)
|
||||
{
|
||||
placement = kMetalSupportPlacementRotated[EnumValue(placement)][direction];
|
||||
return MetalBSupportsPaintSetup(session, supportTypeMember, placement, special, height, imageTemplate);
|
||||
}
|
||||
|
||||
constexpr uint8_t MetalSupportTypeCount = 13;
|
||||
constexpr MetalSupportType RotatedMetalSupports[MetalSupportTypeCount][NumOrthogonalDirections] = {
|
||||
{ MetalSupportType::Tubes, MetalSupportType::Tubes, MetalSupportType::Tubes, MetalSupportType::Tubes },
|
||||
|
|
|
@ -95,9 +95,15 @@ struct PaintSession;
|
|||
bool MetalASupportsPaintSetup(
|
||||
PaintSession& session, MetalSupportType supportTypeMember, MetalSupportPlace placement, int32_t special, int32_t height,
|
||||
ImageId imageTemplate);
|
||||
bool MetalASupportsPaintSetupRotated(
|
||||
PaintSession& session, MetalSupportType supportTypeMember, MetalSupportPlace placement, Direction direction,
|
||||
int32_t special, int32_t height, ImageId imageTemplate);
|
||||
bool MetalBSupportsPaintSetup(
|
||||
PaintSession& session, MetalSupportType supportTypeMember, MetalSupportPlace placement, int32_t special, int32_t height,
|
||||
ImageId imageTemplate);
|
||||
bool MetalBSupportsPaintSetupRotated(
|
||||
PaintSession& session, MetalSupportType supportTypeMember, MetalSupportPlace placement, Direction direction,
|
||||
int32_t special, int32_t height, ImageId imageTemplate);
|
||||
void DrawSupportsSideBySide(
|
||||
PaintSession& session, Direction direction, uint16_t height, ImageId colour, MetalSupportType type, int32_t special = 0);
|
||||
bool PathPoleSupportsPaintSetup(
|
||||
|
|
|
@ -173,7 +173,7 @@ namespace RCT1
|
|||
static uint8_t map[] =
|
||||
{
|
||||
RIDE_TYPE_CLASSIC_WOODEN_ROLLER_COASTER,// RCT1_RIDE_TYPE_WOODEN_ROLLER_COASTER
|
||||
RIDE_TYPE_STAND_UP_ROLLER_COASTER, // RCT1_RIDE_TYPE_STAND_UP_STEEL_ROLLER_COASTER
|
||||
RIDE_TYPE_CLASSIC_STAND_UP_ROLLER_COASTER, // RCT1_RIDE_TYPE_STAND_UP_STEEL_ROLLER_COASTER
|
||||
RIDE_TYPE_SUSPENDED_SWINGING_COASTER, // RCT1_RIDE_TYPE_SUSPENDED_ROLLER_COASTER
|
||||
RIDE_TYPE_INVERTED_ROLLER_COASTER, // RCT1_RIDE_TYPE_INVERTED_ROLLER_COASTER
|
||||
RIDE_TYPE_CLASSIC_MINI_ROLLER_COASTER, // RCT1_RIDE_TYPE_STEEL_MINI_ROLLER_COASTER
|
||||
|
@ -275,7 +275,7 @@ namespace RCT1
|
|||
{ COPY_COLOUR_1, COPY_COLOUR_2, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_INVERTED_COASTER_TRAIN, // Not in RCT2
|
||||
{ COPY_COLOUR_1, COPY_COLOUR_2, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_CARS,
|
||||
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_LADYBIRD_CARS,
|
||||
{ COPY_COLOUR_1, COPY_COLOUR_1, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_STANDUP_ROLLER_COASTER_CARS,
|
||||
{ COPY_COLOUR_1, COPY_COLOUR_2, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_STANDUP_ROLLER_COASTER_CARS,
|
||||
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SPINNING_CARS,
|
||||
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SINGLE_PERSON_SWINGING_CHAIRS,
|
||||
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SWANS_PEDAL_BOATS,
|
||||
|
@ -705,7 +705,7 @@ namespace RCT1
|
|||
static constexpr const char * map[] =
|
||||
{
|
||||
"rct1.ride.wooden_rc_trains", // RCT1_RIDE_TYPE_WOODEN_ROLLER_COASTER
|
||||
"rct2.ride.togst", // RCT1_RIDE_TYPE_STAND_UP_STEEL_ROLLER_COASTER
|
||||
"rct1.ride.stand_up_trains", // RCT1_RIDE_TYPE_STAND_UP_STEEL_ROLLER_COASTER
|
||||
"rct1.ride.suspended_swinging_cars", // RCT1_RIDE_TYPE_SUSPENDED_ROLLER_COASTER
|
||||
"rct1ll.ride.4_across_inverted_trains", // RCT1_RIDE_TYPE_INVERTED_ROLLER_COASTER
|
||||
"rct1.ride.ladybird_trains", // RCT1_RIDE_TYPE_STEEL_MINI_ROLLER_COASTER
|
||||
|
@ -807,7 +807,7 @@ namespace RCT1
|
|||
"rct1.ride.inverted_trains", // VehicleType::InvertedCoasterTrain//NotinRCT2
|
||||
"rct1.ride.suspended_swinging_cars", // VehicleType::SuspendedSwingingCars
|
||||
"rct1.ride.ladybird_trains", // VehicleType::LadybirdCars
|
||||
"rct2.ride.togst", // VehicleType::StandupRollerCoasterCars
|
||||
"rct1.ride.stand_up_trains", // VehicleType::StandupRollerCoasterCars
|
||||
"rct2.ride.wmspin", // VehicleType::SpinningCars
|
||||
"rct1.ride.single_person_swinging_cars", // VehicleType::SinglePersonSwingingChairs
|
||||
"rct2.ride.swans", // VehicleType::SwansPedalBoats
|
||||
|
|
|
@ -611,6 +611,7 @@ enum
|
|||
RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER,
|
||||
RIDE_TYPE_ALPINE_COASTER,
|
||||
RIDE_TYPE_CLASSIC_WOODEN_ROLLER_COASTER,
|
||||
RIDE_TYPE_CLASSIC_STAND_UP_ROLLER_COASTER,
|
||||
|
||||
RIDE_TYPE_COUNT
|
||||
};
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "coaster/meta/AlpineCoaster.h"
|
||||
#include "coaster/meta/BobsleighCoaster.h"
|
||||
#include "coaster/meta/ClassicMiniRollerCoaster.h"
|
||||
#include "coaster/meta/ClassicStandUpRollerCoaster.h"
|
||||
#include "coaster/meta/ClassicWoodenRollerCoaster.h"
|
||||
#include "coaster/meta/CompactInvertedCoaster.h"
|
||||
#include "coaster/meta/CorkscrewRollerCoaster.h"
|
||||
|
@ -350,6 +351,7 @@ constexpr RideTypeDescriptor RideTypeDescriptors[RIDE_TYPE_COUNT] = {
|
|||
/* RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER */ SingleRailRollerCoasterRTD,
|
||||
/* RIDE_TYPE_ALPINE_COASTER */ AlpineCoasterRTD,
|
||||
/* RIDE_TYPE_CLASSIC_WOODEN_ROLLER_COASTER */ ClassicWoodenRollerCoasterRTD,
|
||||
/* RIDE_TYPE_CLASSIC_STAND_UP_ROLLER_COASTER */ ClassicStandUpRollerCoasterRTD,
|
||||
};
|
||||
|
||||
bool RideTypeDescriptor::HasFlag(uint64_t flag) const
|
||||
|
|
|
@ -1347,6 +1347,13 @@ const uint8_t mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[] = {
|
|||
6, 4, 5, 3, 1, 2, 0,
|
||||
};
|
||||
|
||||
const uint8_t mapReversedDiagonalStraight[4] = {
|
||||
3,
|
||||
2,
|
||||
1,
|
||||
0,
|
||||
};
|
||||
|
||||
constexpr CoordsXY defaultRightQuarterTurn5TilesOffsets[4][5] = {
|
||||
{
|
||||
{ 0, 6 },
|
||||
|
|
|
@ -247,6 +247,8 @@ extern const uint32_t trackSpritesSubmarineRideMiniHelicoptersQuarterTurn3Tiles[
|
|||
extern const uint32_t trackSpritesSubmarineRideMiniHelicoptersQuarterTurn1Tile[4];
|
||||
|
||||
extern const uint8_t mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[];
|
||||
extern const Direction mapReversedDiagonalStraight[];
|
||||
|
||||
extern const CoordsXY defaultRightQuarterTurn5TilesOffsets[4][5];
|
||||
extern const CoordsXYZ defaultRightQuarterTurn5TilesBoundOffsets[4][5];
|
||||
extern const CoordsXY defaultRightQuarterTurn5TilesBoundLengths[4][5];
|
||||
|
@ -494,3 +496,4 @@ namespace AlpineRC
|
|||
TRACK_PAINT_FUNCTION GetTrackPaintFunction(int32_t trackType);
|
||||
}
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionClassicWoodenRC(int32_t trackType);
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionClassicStandUpRC(int32_t trackType);
|
||||
|
|
1528
src/openrct2/ride/coaster/ClassicStandUpRollerCoaster.cpp
Normal file
1528
src/openrct2/ride/coaster/ClassicStandUpRollerCoaster.cpp
Normal file
File diff suppressed because it is too large
Load diff
87
src/openrct2/ride/coaster/meta/ClassicStandUpRollerCoaster.h
Normal file
87
src/openrct2/ride/coaster/meta/ClassicStandUpRollerCoaster.h
Normal file
|
@ -0,0 +1,87 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2024 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
*
|
||||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../../../sprites.h"
|
||||
#include "../../RideData.h"
|
||||
#include "../../ShopItem.h"
|
||||
#include "../../Track.h"
|
||||
|
||||
// clang-format off
|
||||
constexpr RideTypeDescriptor ClassicStandUpRollerCoasterRTD =
|
||||
{
|
||||
.AlternateType = RIDE_TYPE_NULL,
|
||||
.Category = RIDE_CATEGORY_ROLLERCOASTER,
|
||||
.EnabledTrackPieces = {TRACK_STRAIGHT, TRACK_STATION_END, TRACK_LIFT_HILL, TRACK_FLAT_ROLL_BANKING, TRACK_VERTICAL_LOOP, TRACK_SLOPE, TRACK_SLOPE_STEEP_UP, TRACK_SLOPE_STEEP_DOWN, TRACK_SLOPE_CURVE, TRACK_S_BEND, TRACK_CURVE_SMALL, TRACK_CURVE, TRACK_CURVE_LARGE, TRACK_HALF_LOOP, TRACK_CORKSCREW, TRACK_BRAKES, TRACK_ON_RIDE_PHOTO, TRACK_BLOCK_BRAKES, TRACK_DIAG_BRAKES, TRACK_DIAG_BLOCK_BRAKES},
|
||||
.ExtraTrackPieces = {},
|
||||
.CoveredTrackPieces = {},
|
||||
.StartTrackPiece = TrackElemType::EndStation,
|
||||
.TrackPaintFunctions = TrackDrawerDescriptor(GetTrackPaintFunctionClassicStandUpRC),
|
||||
.Flags = RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT |
|
||||
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
RIDE_TYPE_FLAG_ALLOW_REVERSED_TRAINS,
|
||||
.RideModes = EnumsToFlags(RideMode::ContinuousCircuit, RideMode::ContinuousCircuitBlockSectioned, RideMode::ReverseInclineLaunchedShuttle, RideMode::PoweredLaunchPasstrough, RideMode::PoweredLaunch),
|
||||
.DefaultMode = RideMode::ContinuousCircuit,
|
||||
.OperatingSettings = { 7, 27, 0, 0, 0, 0 },
|
||||
.Naming = { STR_RIDE_NAME_CLASSIC_STAND_UP_ROLLER_COASTER, STR_RIDE_DESCRIPTION_CLASSIC_STAND_UP_ROLLER_COASTER },
|
||||
.NameConvention = { RideComponentType::Train, RideComponentType::Track, RideComponentType::Station },
|
||||
.EnumName = nameof(RIDE_TYPE_CLASSIC_STAND_UP_ROLLER_COASTER),
|
||||
.AvailableBreakdowns = (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE),
|
||||
.Heights = { 30, 24, 9, 11, },
|
||||
.MaxMass = 18,
|
||||
.LiftData = { OpenRCT2::Audio::SoundId::LiftClassic, 4, 6 },
|
||||
.RatingsMultipliers = { 50, 30, 10 },
|
||||
.UpkeepCosts = { 40, 20, 80, 10, 3, 10 },
|
||||
.BuildCosts = { 50.00_GBP, 2.50_GBP, 50, },
|
||||
.DefaultPrices = { 20, 20 },
|
||||
.DefaultMusic = MUSIC_OBJECT_TECHNO,
|
||||
.PhotoItem = ShopItem::Photo,
|
||||
.BonusValue = 90,
|
||||
.ColourPresets = TRACK_COLOUR_PRESETS(
|
||||
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_BLACK },
|
||||
{ COLOUR_BLACK, COLOUR_LIGHT_BLUE, COLOUR_BLACK },
|
||||
{ COLOUR_LIGHT_ORANGE, COLOUR_WHITE, COLOUR_LIGHT_ORANGE },
|
||||
{ COLOUR_BORDEAUX_RED, COLOUR_YELLOW, COLOUR_BORDEAUX_RED },
|
||||
{ COLOUR_MOSS_GREEN, COLOUR_MOSS_GREEN, COLOUR_WHITE },
|
||||
{ COLOUR_SATURATED_BROWN, COLOUR_LIGHT_ORANGE, COLOUR_SATURATED_BROWN },
|
||||
),
|
||||
.ColourPreview = { SPR_RIDE_DESIGN_PREVIEW_STAND_UP_ROLLER_COASTER_TRACK, SPR_RIDE_DESIGN_PREVIEW_STAND_UP_ROLLER_COASTER_SUPPORTS },
|
||||
.ColourKey = RideColourKey::Ride,
|
||||
.Name = "classic_stand_up_rc",
|
||||
.RatingsData =
|
||||
{
|
||||
RatingsCalculationType::Normal,
|
||||
{ RIDE_RATING(2, 50), RIDE_RATING(3, 00), RIDE_RATING(3, 00) },
|
||||
17,
|
||||
-1,
|
||||
false,
|
||||
{
|
||||
{ RatingsModifierType::BonusLength, 6000, 764, 0, 0 },
|
||||
{ RatingsModifierType::BonusSynchronisation, 0, RIDE_RATING(0, 40), RIDE_RATING(0, 10), 0 },
|
||||
{ RatingsModifierType::BonusTrainLength, 0, 187245, 0, 0 },
|
||||
{ RatingsModifierType::BonusMaxSpeed, 0, 44281, 123987, 35424 },
|
||||
{ RatingsModifierType::BonusAverageSpeed, 0, 291271, 436906, 0 },
|
||||
{ RatingsModifierType::BonusDuration, 150, 26214, 0, 0 },
|
||||
{ RatingsModifierType::BonusGForces, 0, 24576, 35746, 59578 },
|
||||
{ RatingsModifierType::BonusTurns, 0, 26749, 34767, 45749 },
|
||||
{ RatingsModifierType::BonusDrops, 0, 34952, 46811, 49152 },
|
||||
{ RatingsModifierType::BonusSheltered, 0, 12850, 28398, 30427 },
|
||||
{ RatingsModifierType::BonusReversedTrains, 0, 2, 20, 30 },
|
||||
{ RatingsModifierType::BonusProximity, 0, 17893, 0, 0 },
|
||||
{ RatingsModifierType::BonusScenery, 0, 5577, 0, 0 },
|
||||
{ RatingsModifierType::RequirementDropHeight, 12, 2, 2, 2 },
|
||||
{ RatingsModifierType::RequirementMaxSpeed, 0xA0000, 2, 2, 2 },
|
||||
{ RatingsModifierType::RequirementNegativeGs, FIXED_2DP(0, 50), 2, 2, 2 },
|
||||
{ RatingsModifierType::PenaltyLateralGs, 0, 24576, 35746, 59578 },
|
||||
},
|
||||
},
|
||||
};
|
||||
// clang-format on
|
|
@ -28,7 +28,7 @@ constexpr RideTypeDescriptor StandUpRollerCoasterRTD =
|
|||
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT |
|
||||
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
RIDE_TYPE_FLAG_ALLOW_REVERSED_TRAINS,
|
||||
.RideModes = EnumsToFlags(RideMode::ContinuousCircuit, RideMode::ContinuousCircuitBlockSectioned, RideMode::ReverseInclineLaunchedShuttle, RideMode::PoweredLaunchPasstrough, RideMode::PoweredLaunch),
|
||||
.RideModes = EnumsToFlags(RideMode::ContinuousCircuit, RideMode::ContinuousCircuitBlockSectioned),
|
||||
.DefaultMode = RideMode::ContinuousCircuit,
|
||||
.OperatingSettings = { 7, 27, 0, 0, 0, 0 },
|
||||
.Naming = { STR_RIDE_NAME_STAND_UP_ROLLER_COASTER, STR_RIDE_DESCRIPTION_STAND_UP_ROLLER_COASTER },
|
||||
|
|
Loading…
Reference in a new issue