diff --git a/scenarioloaderuilayer.cpp b/scenarioloaderuilayer.cpp index 49279ffe..7a193709 100644 --- a/scenarioloaderuilayer.cpp +++ b/scenarioloaderuilayer.cpp @@ -49,8 +49,15 @@ std::vector scenarioloader_ui::get_random_trivia() lang = "en"; } + if (triviaData[lang].empty()) + { + ErrorLog("No trivia entries found for language \"" + lang + "\"."); + return trivia; + } + + // select random trivia - int i = Random(0, triviaData[lang].size() - 1); + int i = RandomInt(0, triviaData[lang].size() - 1); std::string triviaStr = triviaData[lang][i]["text"]; std::string background = triviaData[lang][i]["background"]; diff --git a/utilities.cpp b/utilities.cpp index bc1608bf..d96bb016 100644 --- a/utilities.cpp +++ b/utilities.cpp @@ -112,6 +112,13 @@ double Random(double a, double b) return interpolate(a, b, (double)val / Global.random_engine.max()); } +int RandomInt(int min, int max) +{ + std::uniform_int_distribution dist(min, max); + return dist(Global.random_engine); +} + + double LocalRandom(double a, double b) { uint32_t val = Global.local_random_engine(); diff --git a/utilities.h b/utilities.h index 4b2c557d..cd8ca7c9 100644 --- a/utilities.h +++ b/utilities.h @@ -60,7 +60,8 @@ inline long Round(double const f) } double Random(double a, double b); -double LocalRandom( double a, double b ); +int RandomInt(int min, int max); +double LocalRandom(double a, double b); inline double Random() {