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) {
24 std::sort(mTracks.begin(), mTracks.end(), [](
const TrackInfo* a,
const TrackInfo* b) {
30 void FindCustomTracks();
32 void Refresh(
const Registry<TrackInfo>& registry) {
35 std::sort(mTracks.begin(), mTracks.end(), [](
const TrackInfo* a,
const TrackInfo* b) {
45 void SetTrack(std::string name) {
49 throw std::runtime_error(
"[World] [SetTrack()] Track name not found in Track list: " + name);
54 if (mTracks.empty())
return;
56 mTrackIndex = (mTrackIndex + 1) % mTracks.size();
60 void PreviousTrack() {
61 if (mTracks.empty())
return;
63 mTrackIndex = (mTrackIndex + mTracks.size() - 1) % mTracks.size();
67 size_t GetTrackIndex() {
71 const char* GetTrackName() {
72 if (mTracks.empty())
return "";
74 if (mTracks[mTrackIndex]) {
75 return mTracks[mTrackIndex]->Name.c_str();
80 const char* GetTrackDebugName() {
81 if (mTracks.empty())
return "";
83 if (mTracks[mTrackIndex]) {
84 return mTracks[mTrackIndex]->DebugName.c_str();
89 const char* GetTrackLength() {
90 if (mTracks.empty())
return "";
92 if (mTracks[mTrackIndex]) {
93 return mTracks[mTrackIndex]->Length.c_str();
108 void SetTrackByIdx(
size_t trackIndex) {
109 if (trackIndex >= mTracks.size()) {
110 printf(
"[TrackBrowser] [SetTrackById] Error: trackIndex %zu out of bounds (max %zu)\n", trackIndex, mTracks.size());
113 if (
nullptr == mTracks[mTrackIndex]) {
114 printf(
"[TrackBrowser] [SetTrackById] Error: TrackInfo at index %zu is null\n", mTrackIndex);
117 mTrackIndex = trackIndex;
121 const char* GetTrackNameByIdx(
size_t trackIndex) {
122 if (trackIndex >= mTracks.size()) {
123 printf(
"[TrackBrowser] [GetTrackNameByIdx] Error: trackIndex %zu out of bounds (max %zu)\n", trackIndex, mTracks.size());
126 if (
nullptr == mTracks[trackIndex]) {
127 printf(
"[TrackBrowser] [GetTrackNameByIdx] Error: TrackInfo at index %zu is null\n", trackIndex);
130 return mTracks[trackIndex]->Name.c_str();
133 const char* GetTrackDebugNameByIdx(
size_t trackIndex) {
134 if (trackIndex >= mTracks.size()) {
135 printf(
"[TrackBrowser] [GetTrackDebugNameByIdx] Error: trackIndex %zu out of bounds (max %zu)\n", trackIndex, mTracks.size());
138 if (
nullptr == mTracks[trackIndex]) {
139 printf(
"[TrackBrowser] [GetTrackDebugNameByIdx] Error: TrackInfo at index %zu is null\n", trackIndex);
142 return mTracks[trackIndex]->DebugName.c_str();
145 const char* GetTrackLengthByIdx(
size_t trackIndex) {
146 if (trackIndex >= mTracks.size()) {
147 printf(
"[TrackBrowser] [GetTrackLengthByIdx] Error: trackIndex %zu out of bounds (max %zu)\n", trackIndex, mTracks.size());
150 if (
nullptr == mTracks[trackIndex]) {
151 printf(
"[TrackBrowser] [GetTrackLengthByIdx] Error: TrackInfo at index %zu is null\n", trackIndex);
154 return mTracks[trackIndex]->Length.c_str();
157 const char* GetMinimapTextureByIdx(
size_t trackIndex) {
158 if (trackIndex >= mTracks.size()) {
159 printf(
"[TrackBrowser] [GetTrackMinimapTextureByIdx] Error: trackIndex %zu out of bounds (max %zu)\n", trackIndex, mTracks.size());
162 if (
nullptr == mTracks[trackIndex]) {
163 printf(
"[TrackBrowser] [GetTrackMinimapTextureByIdx] Error: TrackInfo at index %zu is null\n", trackIndex);
166 return mTracks[trackIndex]->MinimapTexture;
Registry< TrackInfo > gTrackRegistry
Definition Game.cpp:76
const char * TrackBrowser_GetTrackLengthByIdx(size_t trackIndex)
Definition TrackBrowser.cpp:123
void TrackBrowser_PreviousTrack(void)
Definition TrackBrowser.cpp:90
const char * TrackBrowser_GetTrackName(void)
Definition TrackBrowser.cpp:98
void TrackBrowser_NextTrack(void)
Definition TrackBrowser.cpp:86
void TrackBrowser_SetTrack(const char *name)
Definition TrackBrowser.cpp:78
void TrackBrowser_SetTrackByIdx(size_t trackIndex)
Definition TrackBrowser.cpp:111
const char * TrackBrowser_GetTrackLength(void)
Definition TrackBrowser.cpp:107
const char * TrackBrowser_GetTrackNameByIdx(size_t trackIndex)
Definition TrackBrowser.cpp:115
size_t TrackBrowser_GetTrackIndex(void)
Definition TrackBrowser.cpp:94
const char * TrackBrowser_GetTrackDebugName(void)
Definition TrackBrowser.cpp:102
const char * TrackBrowser_GetMinimapTextureByIdx(size_t trackIndex)
Definition TrackBrowser.cpp:127
const char * TrackBrowser_GetTrackDebugNameByIdx(size_t trackIndex)
Definition TrackBrowser.cpp:119
void TrackBrowser_SetTrackFromCup(void)
Definition TrackBrowser.cpp:82
std::vector< const TInfo * > GetAllInfo() const
Definition Registry.h:91
#define NULL
Definition miniaudio.h:3851