summaryrefslogtreecommitdiff
path: root/src/engine/Cup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/Cup.cpp')
-rw-r--r--src/engine/Cup.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/engine/Cup.cpp b/src/engine/Cup.cpp
index cc85ebca8..89088189f 100644
--- a/src/engine/Cup.cpp
+++ b/src/engine/Cup.cpp
@@ -45,3 +45,22 @@ void Cup::ShuffleTracks() {
// std::mt19937 g(rd());
//std::shuffle(mTracks.begin(), mTracks.end(), g);
}
+
+void Cup::ValidateTrackIds(const Registry<TrackInfo>& registry) const {
+ std::vector<std::string> invalidTracks;
+
+ for (const auto& trackId : mTracks) {
+ if (!registry.Find(trackId)) {
+ invalidTracks.push_back(trackId);
+ }
+ }
+
+ if (!invalidTracks.empty()) {
+ std::string errorMsg = "Cup '" + Id + "' contains invalid track IDs: ";
+ for (size_t i = 0; i < invalidTracks.size(); ++i) {
+ if (i > 0) errorMsg += ", ";
+ errorMsg += "'" + invalidTracks[i] + "'";
+ }
+ throw std::invalid_argument(errorMsg);
+ }
+}