mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-06 06:32:56 +01:00
Add Classic Stand-Up Roller Coaster
This commit is contained in:
@@ -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 :A looping roller coaster where the riders ride in a standing position
|
||||
STR_0767 :Guest {INT32}
|
||||
STR_0768 :Handyman {INT32}
|
||||
STR_0769 :Mechanic {INT32}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -494,3 +494,4 @@ namespace AlpineRC
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunction(int32_t trackType);
|
||||
}
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionClassicWoodenRC(int32_t trackType);
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionClassicStandUpRC(int32_t trackType);
|
||||
|
||||
61
src/openrct2/ride/coaster/ClassicStandUpRollerCoaster.cpp
Normal file
61
src/openrct2/ride/coaster/ClassicStandUpRollerCoaster.cpp
Normal file
@@ -0,0 +1,61 @@
|
||||
/*****************************************************************************
|
||||
* 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.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "../Track.h"
|
||||
#include "../TrackPaint.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionClassicStandUpRC(int32_t trackType)
|
||||
{
|
||||
switch (trackType)
|
||||
{
|
||||
case TrackElemType::FlatToLeftBank:
|
||||
case TrackElemType::FlatToRightBank:
|
||||
case TrackElemType::LeftBankToFlat:
|
||||
case TrackElemType::RightBankToFlat:
|
||||
case TrackElemType::BankedLeftQuarterTurn5Tiles:
|
||||
case TrackElemType::BankedRightQuarterTurn5Tiles:
|
||||
case TrackElemType::LeftBankToUp25:
|
||||
case TrackElemType::RightBankToUp25:
|
||||
case TrackElemType::Up25ToLeftBank:
|
||||
case TrackElemType::Up25ToRightBank:
|
||||
case TrackElemType::LeftBankToDown25:
|
||||
case TrackElemType::RightBankToDown25:
|
||||
case TrackElemType::Down25ToLeftBank:
|
||||
case TrackElemType::Down25ToRightBank:
|
||||
case TrackElemType::LeftBank:
|
||||
case TrackElemType::RightBank:
|
||||
|
||||
case TrackElemType::LeftEighthBankToDiag:
|
||||
case TrackElemType::RightEighthBankToDiag:
|
||||
case TrackElemType::LeftEighthBankToOrthogonal:
|
||||
case TrackElemType::RightEighthBankToOrthogonal:
|
||||
|
||||
case TrackElemType::LeftBankedQuarterTurn3Tiles:
|
||||
case TrackElemType::RightBankedQuarterTurn3Tiles:
|
||||
case TrackElemType::DiagFlatToLeftBank:
|
||||
case TrackElemType::DiagFlatToRightBank:
|
||||
case TrackElemType::DiagLeftBankToFlat:
|
||||
case TrackElemType::DiagRightBankToFlat:
|
||||
case TrackElemType::DiagLeftBankToUp25:
|
||||
case TrackElemType::DiagRightBankToUp25:
|
||||
case TrackElemType::DiagUp25ToLeftBank:
|
||||
case TrackElemType::DiagUp25ToRightBank:
|
||||
case TrackElemType::DiagLeftBankToDown25:
|
||||
case TrackElemType::DiagRightBankToDown25:
|
||||
case TrackElemType::DiagDown25ToLeftBank:
|
||||
case TrackElemType::DiagDown25ToRightBank:
|
||||
case TrackElemType::DiagLeftBank:
|
||||
case TrackElemType::DiagRightBank:
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return GetTrackPaintFunctionStandUpRC(trackType);
|
||||
}
|
||||
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 = { 25, 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 },
|
||||
|
||||
Reference in New Issue
Block a user