88using namespace geode ::prelude;
99using namespace optional_settings ;
1010
11+ std::map<int , DeveloperBadge> DeveloperBadges::developerBadges;
12+
1113constexpr std::array settings = {
1214 std::make_pair (" mod-developer-color" , " mod-developer-color-toggle" ),
1315 std::make_pair (" verified-developer-color" , " verified-developer-color-toggle" ),
@@ -20,12 +22,8 @@ constexpr std::array settings = {
2022 auto & data = mod->getSavedSettingsData ();
2123 if (!mod->setSavedValue (" migrated-colors" , true )) {
2224 for (auto [key, toggle] : settings) {
23- Result<ccColor3B> oldColorValue = data.get (key).andThen ([](const matjson::Value& v) {
24- return v.as <ccColor3B>();
25- });
26- Result<bool > oldColorEnabled = data.get (toggle).andThen ([](const matjson::Value& v) {
27- return v.asBool ();
28- });
25+ auto oldColorValue = data.get <ccColor3B>(key);
26+ auto oldColorEnabled = data.get <bool >(toggle);
2927 if (oldColorValue.isOk () && oldColorEnabled.isOk ()) {
3028 auto setting = std::static_pointer_cast<OptionalColor3BSetting>(mod->getSetting (key));
3129 setting->setStoredValue (oldColorValue.unwrap ());
@@ -44,32 +42,25 @@ constexpr std::array settings = {
4442 if (!json.isOk ()) return ;
4543
4644 for (auto & value : json.unwrap ()) {
47- Result<int > id = value.get (" id" ).andThen ([](const matjson::Value& v) {
48- return v.as <int >();
49- });
45+ auto id = value.get <int >(" id" );
5046 if (!id.isOkAnd ([](int id) { return id > 0 ; })) continue ;
5147
52- Result<int > type = value.get (" badge" ).andThen ([](const matjson::Value& v) {
53- return v.as <int >();
54- });
48+ auto type = value.get <int >(" badge" );
5549 if (!type.isOkAnd ([](int type) { return type > 0 && type < 5 ; })) continue ;
5650
57- Result<std::string> name = value.get (" name" ).andThen ([](const matjson::Value& v) {
58- return v.asString ();
59- });
51+ auto name = value.get <std::string>(" name" );
6052 if (!name.isOk ()) continue ;
6153
62- DeveloperBadges::developerBadges.emplace_back (id.unwrap (), type.unwrap (), name.unwrap ());
54+ DeveloperBadge badge (id.unwrap (), type.unwrap (), std::move (name).unwrap ());
55+ DeveloperBadges::developerBadges.emplace (badge.id , std::move (badge));
6356 }
6457 });
6558 }, GameEventFilter (GameEventType::Loaded));
6659}
6760
6861DeveloperBadge* DeveloperBadges::badgeForUser (int id) {
69- auto badge = std::ranges::find_if (developerBadges, [id](const DeveloperBadge& badge) {
70- return badge.id == id;
71- });
72- return badge != developerBadges.end () ? std::to_address (badge) : nullptr ;
62+ auto badge = developerBadges.find (id);
63+ return badge != developerBadges.end () ? &badge->second : nullptr ;
7364}
7465
7566constexpr std::array names = {
0 commit comments