4#include <libultraship.h>
16 std::vector<const TrackInfo*> mTracks;
17 size_t mTrackIndex = 0;
20 static TrackBrowser* Instance;
22 TrackBrowser(
const Registry<TrackInfo>& registry) {
25 RemovePodiumCeremony();
27 std::sort(mTracks.begin(), mTracks.end(), [](
const TrackInfo* a,
const TrackInfo* b) {
33 void FindCustomTracks();
35 void Refresh(
const Registry<TrackInfo>& registry) {
39 RemovePodiumCeremony();
41 std::sort(mTracks.begin(), mTracks.end(), [](
const TrackInfo* a,
const TrackInfo* b) {
52 void RemovePodiumCeremony() {
54 std::remove_if(mTracks.begin(), mTracks.end(),
55 [](
const TrackInfo* track) {
56 return track && track->ResourceName ==
"mk:podium_ceremony";
62 void SetTrack(std::string name) {
66 throw std::runtime_error(
"[World] [SetTrack()] Track name not found in Track list: " + name);
71 if (mTracks.empty())
return;
73 mTrackIndex = (mTrackIndex + 1) % mTracks.size();
77 void PreviousTrack() {
78 if (mTracks.empty())
return;
80 mTrackIndex = (mTrackIndex + mTracks.size() - 1) % mTracks.size();
84 size_t GetTrackIndex() {
88 const char* GetTrackName() {
89 if (mTracks.empty())
return "";
91 if (mTracks[mTrackIndex]) {
92 return mTracks[mTrackIndex]->Name.c_str();
97 const char* GetTrackDebugName() {
98 if (mTracks.empty())
return "";
100 if (mTracks[mTrackIndex]) {
101 return mTracks[mTrackIndex]->DebugName.c_str();
106 const char* GetTrackLength() {
107 if (mTracks.empty())
return "";
109 if (mTracks[mTrackIndex]) {
110 return mTracks[mTrackIndex]->Length.c_str();
125 void SetTrackByIdx(
size_t trackIndex) {
126 if (trackIndex >= mTracks.size()) {
127 printf(
"[TrackBrowser] [SetTrackById] Error: trackIndex %zu out of bounds (max %zu)\n", trackIndex, mTracks.size());
130 if (
nullptr == mTracks[mTrackIndex]) {
131 printf(
"[TrackBrowser] [SetTrackById] Error: TrackInfo at index %zu is null\n", mTrackIndex);
134 mTrackIndex = trackIndex;
138 const char* GetTrackNameByIdx(
size_t trackIndex) {
139 if (trackIndex >= mTracks.size()) {
140 printf(
"[TrackBrowser] [GetTrackNameByIdx] Error: trackIndex %zu out of bounds (max %zu)\n", trackIndex, mTracks.size());
143 if (
nullptr == mTracks[trackIndex]) {
144 printf(
"[TrackBrowser] [GetTrackNameByIdx] Error: TrackInfo at index %zu is null\n", trackIndex);
147 return mTracks[trackIndex]->Name.c_str();
150 const char* GetTrackDebugNameByIdx(
size_t trackIndex) {
151 if (trackIndex >= mTracks.size()) {
152 printf(
"[TrackBrowser] [GetTrackDebugNameByIdx] Error: trackIndex %zu out of bounds (max %zu)\n", trackIndex, mTracks.size());
155 if (
nullptr == mTracks[trackIndex]) {
156 printf(
"[TrackBrowser] [GetTrackDebugNameByIdx] Error: TrackInfo at index %zu is null\n", trackIndex);
159 return mTracks[trackIndex]->DebugName.c_str();
162 const char* GetTrackLengthByIdx(
size_t trackIndex) {
163 if (trackIndex >= mTracks.size()) {
164 printf(
"[TrackBrowser] [GetTrackLengthByIdx] Error: trackIndex %zu out of bounds (max %zu)\n", trackIndex, mTracks.size());
167 if (
nullptr == mTracks[trackIndex]) {
168 printf(
"[TrackBrowser] [GetTrackLengthByIdx] Error: TrackInfo at index %zu is null\n", trackIndex);
171 return mTracks[trackIndex]->Length.c_str();
174 const char* GetMinimapTextureByIdx(
size_t trackIndex) {
175 if (trackIndex >= mTracks.size()) {
176 printf(
"[TrackBrowser] [GetTrackMinimapTextureByIdx] Error: trackIndex %zu out of bounds (max %zu)\n", trackIndex, mTracks.size());
179 if (
nullptr == mTracks[trackIndex]) {
180 printf(
"[TrackBrowser] [GetTrackMinimapTextureByIdx] Error: TrackInfo at index %zu is null\n", trackIndex);
183 return mTracks[trackIndex]->MinimapTexture;
Registry< TrackInfo > gTrackRegistry
Definition Game.cpp:78
const char * TrackBrowser_GetTrackLengthByIdx(size_t trackIndex)
Definition TrackBrowser.cpp:124
void TrackBrowser_PreviousTrack(void)
Definition TrackBrowser.cpp:91
const char * TrackBrowser_GetTrackName(void)
Definition TrackBrowser.cpp:99
void TrackBrowser_NextTrack(void)
Definition TrackBrowser.cpp:87
void TrackBrowser_SetTrack(const char *name)
Definition TrackBrowser.cpp:79
void TrackBrowser_SetTrackByIdx(size_t trackIndex)
Definition TrackBrowser.cpp:112
const char * TrackBrowser_GetTrackLength(void)
Definition TrackBrowser.cpp:108
const char * TrackBrowser_GetTrackNameByIdx(size_t trackIndex)
Definition TrackBrowser.cpp:116
size_t TrackBrowser_GetTrackIndex(void)
Definition TrackBrowser.cpp:95
const char * TrackBrowser_GetTrackDebugName(void)
Definition TrackBrowser.cpp:103
const char * TrackBrowser_GetMinimapTextureByIdx(size_t trackIndex)
Definition TrackBrowser.cpp:128
const char * TrackBrowser_GetTrackDebugNameByIdx(size_t trackIndex)
Definition TrackBrowser.cpp:120
void TrackBrowser_SetTrackFromCup(void)
Definition TrackBrowser.cpp:83
std::vector< const TInfo * > GetAllInfo() const
Definition Registry.h:101
#define NULL
Definition miniaudio.h:3851