|
1 | 1 | #include "DeveloperBadges.hpp" |
2 | 2 | #include <Geode/binding/FLAlertLayer.hpp> |
3 | 3 | #include <Geode/loader/Mod.hpp> |
4 | | -#include <Geode/utils/ranges.hpp> |
5 | 4 |
|
6 | 5 | using namespace geode::prelude; |
7 | 6 |
|
8 | | -#define BADGE_URL "https://raw.githubusercontent.com/hiimjasmine00/developer-badges/master/badges/{}.json" |
9 | | - |
10 | | -DeveloperBadge DeveloperBadges::badgeForUser(int id) { |
11 | | - auto badge = ranges::find(DEVELOPER_BADGES, [id](const DeveloperBadge& badge) { |
| 7 | +DeveloperBadge& DeveloperBadges::badgeForUser(int id) { |
| 8 | + static DeveloperBadge empty = { 0, "", BadgeType::None }; |
| 9 | + auto badge = std::ranges::find_if(developerBadges, [id](const DeveloperBadge& badge) { |
12 | 10 | return badge.id == id && badge.badge != BadgeType::None; |
13 | 11 | }); |
14 | | - return badge.has_value() ? badge.value() : DeveloperBadge { 0, "", BadgeType::None }; |
| 12 | + return badge != developerBadges.end() ? *badge : empty; |
15 | 13 | } |
16 | 14 |
|
17 | 15 | ccColor3B DeveloperBadges::getCommentColor(BadgeType badge) { |
| 16 | + auto mod = Mod::get(); |
18 | 17 | switch (badge) { |
19 | | - case BadgeType::ModDeveloper: return Mod::get()->getSettingValue<ccColor3B>("mod-developer-color"); |
20 | | - case BadgeType::VerifiedDeveloper: return Mod::get()->getSettingValue<ccColor3B>("verified-developer-color"); |
21 | | - case BadgeType::IndexStaff: return Mod::get()->getSettingValue<ccColor3B>("index-staff-color"); |
22 | | - case BadgeType::LeadDeveloper: return Mod::get()->getSettingValue<ccColor3B>("lead-developer-color"); |
| 18 | + case BadgeType::ModDeveloper: return mod->getSettingValue<ccColor3B>("mod-developer-color"); |
| 19 | + case BadgeType::VerifiedDeveloper: return mod->getSettingValue<ccColor3B>("verified-developer-color"); |
| 20 | + case BadgeType::IndexStaff: return mod->getSettingValue<ccColor3B>("index-staff-color"); |
| 21 | + case BadgeType::LeadDeveloper: return mod->getSettingValue<ccColor3B>("lead-developer-color"); |
23 | 22 | default: return ccColor3B { 255, 255, 255 }; |
24 | 23 | } |
25 | 24 | } |
26 | 25 |
|
27 | 26 | void DeveloperBadges::showBadgeInfo(std::string username, BadgeType type) { |
28 | | - auto badgeName = ""; |
29 | | - auto badgeDesc = ""; |
30 | | - switch (type) { |
31 | | - case BadgeType::ModDeveloper: |
32 | | - badgeName = "Mod Developer"; |
33 | | - badgeDesc = "is a <ca>mod developer</c> for <cy>Geode</c>.\n" |
34 | | - "They have created mods that are available on the <cy>Geode mod index</c>.\n" |
35 | | - "They will have to have new mods and mod updates approved by the <cd>index staff</c>"; |
36 | | - break; |
37 | | - case BadgeType::VerifiedDeveloper: |
38 | | - badgeName = "Verified Developer"; |
39 | | - badgeDesc = "is a <cp>verified mod developer</c> for <cy>Geode</c>.\n" |
40 | | - "They can update their mods on the <cy>Geode mod index</c> without the need for approval.\n" |
41 | | - "They will still have to have new mods approved by the <cd>index staff</c>"; |
42 | | - break; |
43 | | - case BadgeType::IndexStaff: |
44 | | - badgeName = "Index Staff"; |
45 | | - badgeDesc = "is a member of the <cd>index staff</c> for <cy>Geode</c>.\n" |
46 | | - "They can approve or reject mods uploaded to the <cy>Geode mod index</c>"; |
47 | | - break; |
48 | | - case BadgeType::LeadDeveloper: |
49 | | - badgeName = "Lead Developer"; |
50 | | - badgeDesc = "is a <co>lead developer</c> of <cy>Geode</c>.\n" |
51 | | - "They are part of the main development team and have significant contributions to the <cy>Geode ecosystem</c>"; |
52 | | - break; |
53 | | - default: |
54 | | - badgeName = ""; |
55 | | - badgeDesc = ""; |
56 | | - break; |
57 | | - } |
58 | | - |
59 | | - FLAlertLayer::create(badgeName, fmt::format("<cg>{}</c> {}.", username, badgeDesc), "OK")->show(); |
| 27 | + auto badgeType = (int)type; |
| 28 | + FLAlertLayer::create( |
| 29 | + badgeType < badgeNames.size() ? badgeNames[badgeType] : badgeNames[0], |
| 30 | + fmt::format("<cg>{}</c> {}.", username, badgeType < badgeDescriptions.size() ? badgeDescriptions[badgeType] : badgeDescriptions[0]), |
| 31 | + "OK" |
| 32 | + )->show(); |
60 | 33 | } |
0 commit comments