mirror of https://github.com/OpenRCT2/OpenRCT2.git
Add MusicTrackOffsetLength field to RTD (#17684)
This commit is contained in:
parent
2202f8d060
commit
a21d9183e6
|
@ -283,13 +283,13 @@ namespace OpenRCT2::RideAudio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::pair<size_t, size_t> RideMusicGetTrackOffsetLength(const Ride& ride)
|
std::pair<size_t, size_t> RideMusicGetTrackOffsetLength_Circus(const Ride& ride)
|
||||||
{
|
{
|
||||||
if (ride.type == RIDE_TYPE_CIRCUS)
|
return { 1378, 12427456 };
|
||||||
{
|
}
|
||||||
return { 1378, 12427456 };
|
|
||||||
}
|
|
||||||
|
|
||||||
|
std::pair<size_t, size_t> RideMusicGetTrackOffsetLength_Default(const Ride& ride)
|
||||||
|
{
|
||||||
auto& objManager = GetContext()->GetObjectManager();
|
auto& objManager = GetContext()->GetObjectManager();
|
||||||
auto musicObj = static_cast<MusicObject*>(objManager.GetLoadedObject(ObjectType::Music, ride.music));
|
auto musicObj = static_cast<MusicObject*>(objManager.GetLoadedObject(ObjectType::Music, ride.music));
|
||||||
if (musicObj != nullptr)
|
if (musicObj != nullptr)
|
||||||
|
@ -304,6 +304,12 @@ namespace OpenRCT2::RideAudio
|
||||||
return { 0, 0 };
|
return { 0, 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static std::pair<size_t, size_t> RideMusicGetTrackOffsetLength(const Ride& ride)
|
||||||
|
{
|
||||||
|
const auto& rtd = ride.GetRideTypeDescriptor();
|
||||||
|
return rtd.MusicTrackOffsetLength(ride);
|
||||||
|
}
|
||||||
|
|
||||||
static void RideUpdateMusicPosition(Ride& ride)
|
static void RideUpdateMusicPosition(Ride& ride)
|
||||||
{
|
{
|
||||||
auto [trackOffset, trackLength] = RideMusicGetTrackOffsetLength(ride);
|
auto [trackOffset, trackLength] = RideMusicGetTrackOffsetLength(ride);
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include "../Identifiers.h"
|
#include "../Identifiers.h"
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
struct CoordsXYZ;
|
struct CoordsXYZ;
|
||||||
struct Ride;
|
struct Ride;
|
||||||
|
@ -40,4 +41,7 @@ namespace OpenRCT2::RideAudio
|
||||||
|
|
||||||
void DefaultStartRideMusicChannel(const ViewportRideMusicInstance& instance);
|
void DefaultStartRideMusicChannel(const ViewportRideMusicInstance& instance);
|
||||||
void CircusStartRideMusicChannel(const ViewportRideMusicInstance& instance);
|
void CircusStartRideMusicChannel(const ViewportRideMusicInstance& instance);
|
||||||
|
|
||||||
|
std::pair<size_t, size_t> RideMusicGetTrackOffsetLength_Circus(const Ride& ride);
|
||||||
|
std::pair<size_t, size_t> RideMusicGetTrackOffsetLength_Default(const Ride& ride);
|
||||||
} // namespace OpenRCT2::RideAudio
|
} // namespace OpenRCT2::RideAudio
|
||||||
|
|
|
@ -161,6 +161,7 @@ using PeepUpdateRideLeaveEntranceFunc = void (*)(Guest*, Ride*, CoordsXYZD&);
|
||||||
using StartRideMusicFunction = void (*)(const OpenRCT2::RideAudio::ViewportRideMusicInstance&);
|
using StartRideMusicFunction = void (*)(const OpenRCT2::RideAudio::ViewportRideMusicInstance&);
|
||||||
using LightFXAddLightsMagicVehicleFunction = void (*)(const Vehicle* vehicle);
|
using LightFXAddLightsMagicVehicleFunction = void (*)(const Vehicle* vehicle);
|
||||||
using RideUpdateMeasurementsSpecialElementsFunc = void (*)(Ride* ride, const track_type_t trackType);
|
using RideUpdateMeasurementsSpecialElementsFunc = void (*)(Ride* ride, const track_type_t trackType);
|
||||||
|
using MusicTrackOffsetLengthFunc = std::pair<size_t, size_t> (*)(const Ride& ride);
|
||||||
|
|
||||||
enum class RideConstructionWindowContext : uint8_t
|
enum class RideConstructionWindowContext : uint8_t
|
||||||
{
|
{
|
||||||
|
@ -230,6 +231,8 @@ struct RideTypeDescriptor
|
||||||
|
|
||||||
RideUpdateMeasurementsSpecialElementsFunc UpdateMeasurementsSpecialElements = RideUpdateMeasurementsSpecialElements_Default;
|
RideUpdateMeasurementsSpecialElementsFunc UpdateMeasurementsSpecialElements = RideUpdateMeasurementsSpecialElements_Default;
|
||||||
|
|
||||||
|
MusicTrackOffsetLengthFunc MusicTrackOffsetLength = OpenRCT2::RideAudio::RideMusicGetTrackOffsetLength_Default;
|
||||||
|
|
||||||
bool HasFlag(uint64_t flag) const;
|
bool HasFlag(uint64_t flag) const;
|
||||||
void GetAvailableTrackPieces(RideTrackGroup& res) const;
|
void GetAvailableTrackPieces(RideTrackGroup& res) const;
|
||||||
bool SupportsTrackPiece(const uint64_t trackPiece) const;
|
bool SupportsTrackPiece(const uint64_t trackPiece) const;
|
||||||
|
|
|
@ -54,5 +54,10 @@ constexpr const RideTypeDescriptor CircusRTD =
|
||||||
SET_FIELD(StartRideMusic, OpenRCT2::RideAudio::CircusStartRideMusicChannel),
|
SET_FIELD(StartRideMusic, OpenRCT2::RideAudio::CircusStartRideMusicChannel),
|
||||||
SET_FIELD(DesignCreateMode, TrackDesignCreateMode::Default),
|
SET_FIELD(DesignCreateMode, TrackDesignCreateMode::Default),
|
||||||
SET_FIELD(MusicUpdateFunction, CircusMusicUpdate),
|
SET_FIELD(MusicUpdateFunction, CircusMusicUpdate),
|
||||||
|
SET_FIELD(Classification,RideClassification::Ride),
|
||||||
|
SET_FIELD(UpdateLeaveEntrance,PeepUpdateRideLeaveEntranceDefault),
|
||||||
|
SET_FIELD(ConstructionWindowContext, RideConstructionWindowContext::Default),
|
||||||
|
SET_FIELD(UpdateMeasurementsSpecialElements, RideUpdateMeasurementsSpecialElements_Default),
|
||||||
|
SET_FIELD(MusicTrackOffsetLength, OpenRCT2::RideAudio::RideMusicGetTrackOffsetLength_Circus),
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
Loading…
Reference in New Issue