Fix Track Invocation Spam (#738)

* Update main.c

* Update TrackBrowser.cpp

* Add TrackBrowser_ResetSelectedTrack function declaration

* Add void keyword to function declarations

* Rename global track variable for clarity

* Update TrackBrowser.h
This commit is contained in:
MegaMech
2026-08-11 18:40:18 -06:00
committed by GitHub
parent 33817cd110
commit 701d877dbb
3 changed files with 17 additions and 4 deletions
+12 -2
View File
@@ -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) {
+3 -2
View File
@@ -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
#endif // TRACKBROWSER_H
+2
View File
@@ -40,6 +40,7 @@
#include "port/Game.h"
#include "port/Engine.h"
#include "engine/Matrix.h"
#include "engine/TrackBrowser.h"
// Declarations (not in this file)
void func_80091B78(void);
@@ -1108,6 +1109,7 @@ void update_gamestate(void) {
*/
// init_segment_racing();
setup_race();
TrackBrowser_ResetSelectedTrack(); // Same function as gCurrentlyLoadedTrackAddr
break;
case ENDING:
gCurrentlyLoadedTrackAddr = NULL;