Allow Inverted RC to draw boosters

This commit is contained in:
AuraSpecs 2022-11-05 12:59:31 +01:00 committed by GitHub
parent a9a92c4fb9
commit 4c218ba443
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 29 additions and 3 deletions

View File

@ -4,6 +4,7 @@
- Improved: [#18192] Tycoon Park has been added Extras tab.
- Improved: [#18214] Competition scenarios have received their own section.
- Improved: [#18250] Added modern style file and folder pickers on Windows.
- Improved: [#18332] Allow Inverted Roller Coaster to draw boosters.
- Improved: [#18422] Allow adding images to music objects.
- Improved: [#18428] [Plugin] Add widget description interfaces to documentation.
- Change: [#17998] Show cursor when using inverted mouse dragging.

View File

@ -43,7 +43,7 @@
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
#define NETWORK_STREAM_VERSION "8"
#define NETWORK_STREAM_VERSION "9"
#define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION

View File

@ -10499,6 +10499,28 @@ static void inverted_rc_track_right_banked_25_deg_down_to_flat(
inverted_rc_track_flat_to_left_banked_25_deg_up(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
}
// Added by OpenRCT2
static void inverted_rc_track_booster(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
const auto imageId = (direction & 1) ? SPR_G2_BM_INVERT_BOOSTER_2 : SPR_G2_BM_INVERT_BOOSTER_1;
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { 0, 0, height + 29 }, { 32, 20, 1 },
{ 0, 6, height + 29 });
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
if (track_paint_util_should_paint_supports(session.MapPosition))
{
MetalASupportsPaintSetup(session, METAL_SUPPORTS_BOXED, 4, 0, height + 44, session.TrackColours[SCHEME_SUPPORTS]);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_INVERTED_3);
PaintUtilSetGeneralSupportHeight(session, height + 48, 0x20);
}
TRACK_PAINT_FUNCTION get_track_paint_function_inverted_rc(int32_t trackType)
{
switch (trackType)
@ -10793,6 +10815,9 @@ TRACK_PAINT_FUNCTION get_track_paint_function_inverted_rc(int32_t trackType)
return inverted_rc_track_left_banked_25_deg_down_to_flat;
case TrackElemType::RightBankedDown25ToFlat:
return inverted_rc_track_right_banked_25_deg_down_to_flat;
case TrackElemType::Booster:
return inverted_rc_track_booster;
}
return nullptr;
}

View File

@ -20,7 +20,7 @@ constexpr const RideTypeDescriptor InvertedRollerCoasterRTD =
SET_FIELD(AlternateType, RIDE_TYPE_NULL),
SET_FIELD(Category, RIDE_CATEGORY_ROLLERCOASTER),
SET_FIELD(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_SLOPE_CURVE_STEEP, TRACK_S_BEND, TRACK_CURVE_SMALL, TRACK_CURVE, TRACK_TWIST, TRACK_HALF_LOOP, TRACK_CORKSCREW, TRACK_HELIX_LARGE, TRACK_BRAKES, TRACK_ON_RIDE_PHOTO, TRACK_HALF_LOOP_LARGE, TRACK_BLOCK_BRAKES, TRACK_SLOPE_ROLL_BANKING}),
SET_FIELD(ExtraTrackPieces, {}),
SET_FIELD(ExtraTrackPieces, {TRACK_BOOSTER}),
SET_FIELD(CoveredTrackPieces, {}),
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
SET_FIELD(TrackPaintFunction, get_track_paint_function_inverted_rc),
@ -29,7 +29,7 @@ constexpr const RideTypeDescriptor InvertedRollerCoasterRTD =
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_IS_SUSPENDED),
SET_FIELD(RideModes, EnumsToFlags(RideMode::ContinuousCircuit, RideMode::ContinuousCircuitBlockSectioned, RideMode::PoweredLaunchPasstrough, RideMode::PoweredLaunch)),
SET_FIELD(DefaultMode, RideMode::ContinuousCircuit),
SET_FIELD(OperatingSettings, { 7, 27, 0, 0, 0, 0 }),
SET_FIELD(OperatingSettings, { 7, 27, 0, 0, 38, 0 }),
SET_FIELD(Naming, { STR_RIDE_NAME_INVERTED_ROLLER_COASTER, STR_RIDE_DESCRIPTION_INVERTED_ROLLER_COASTER }),
SET_FIELD(NameConvention, { RideComponentType::Train, RideComponentType::Track, RideComponentType::Station }),
SET_FIELD(EnumName, nameof(RIDE_TYPE_INVERTED_ROLLER_COASTER)),