diff options
Diffstat (limited to 'src/engine')
| -rw-r--r-- | src/engine/TrackBrowser.cpp | 14 | ||||
| -rw-r--r-- | src/engine/TrackBrowser.h | 5 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/engine/TrackBrowser.cpp b/src/engine/TrackBrowser.cpp index 7d7b958c8..d7c3907c0 100644 --- a/src/engine/TrackBrowser.cpp +++ b/src/engine/TrackBrowser.cpp @@ -80,8 +80,18 @@ extern "C" void TrackBrowser_SetTrack(const char* name) { TrackBrowser::Instance->SetTrack(std::string(name)); } -extern "C" void TrackBrowser_SetTrackFromCup() { - TrackBrowser::Instance->SetTrack(GetWorld()->GetCurrentCup()->GetTrack()); +static std::string sCurrentlySelectedTrack = ""; +extern "C" void TrackBrowser_SetTrackFromCup(void) { + const std::string& track = GetWorld()->GetCurrentCup()->GetTrack(); + // Prevent repeated invoke spams + if (track != sCurrentlySelectedTrack) { + sCurrentlySelectedTrack = track; + TrackBrowser::Instance->SetTrack(track); + } +} + +extern "C" void TrackBrowser_ResetSelectedTrack(void) { + sCurrentlySelectedTrack = ""; } extern "C" void TrackBrowser_NextTrack(void) { diff --git a/src/engine/TrackBrowser.h b/src/engine/TrackBrowser.h index 89dec2f00..0a8f95ef9 100644 --- a/src/engine/TrackBrowser.h +++ b/src/engine/TrackBrowser.h @@ -59,7 +59,7 @@ public: ); } - void SetTrack(std::string name) { + void SetTrack(const std::string& name) { if (gTrackRegistry.Find(name)) { gTrackRegistry.Invoke(name); } else { @@ -191,6 +191,7 @@ extern "C" { #endif // __cplusplus void TrackBrowser_SetTrack(const char* name); void TrackBrowser_SetTrackFromCup(void); // <-- Not in TrackBrowser class +void TrackBrowser_ResetSelectedTrack(void); void TrackBrowser_NextTrack(void); void TrackBrowser_PreviousTrack(void); size_t TrackBrowser_GetTrackIndex(void); @@ -206,4 +207,4 @@ const char* TrackBrowser_GetMinimapTextureByIdx(size_t trackIndex); } #endif // __cplusplus -#endif // TRACKBROWSER_H
\ No newline at end of file +#endif // TRACKBROWSER_H |
