Skip to content

Commit 0d265a7

Browse files
committed
The big funny
1 parent 3388bec commit 0d265a7

File tree

9 files changed

+66
-74
lines changed

9 files changed

+66
-74
lines changed

.github/workflows/build.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ jobs:
3636
- name: Build the mod
3737
uses: hiimjasmine00/build-geode-mod@main
3838
with:
39-
sdk: nightly
4039
build-config: ${{ matrix.config.build-config || 'Release' }}
4140
export-pdb: true
4241
export-symbols: true

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64")
55
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
66
set(GEODE_DISABLE_PRECOMPILED_HEADERS ON)
77

8-
project(DeveloperBadges VERSION 1.1.2)
8+
project(DeveloperBadges VERSION 1.1.3)
99

1010
add_library(${PROJECT_NAME} SHARED
1111
src/hooks/CommentCell.cpp

changelog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
# Developer Badges Changelog
2+
## v1.1.3 (2025-04-01)
3+
- Internal code changes (April Fools' Day)
4+
25
## v1.1.2 (2025-02-09)
36
- I don't want to talk about it
47

mod.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
2-
"geode": "4.2.0",
2+
"geode": "4.3.1",
33
"gd": {
44
"android": "2.2074",
55
"win": "2.2074",
66
"mac": "2.2074"
77
},
8-
"version": "v1.1.2",
8+
"version": "v1.1.3",
99
"id": "hiimjustin000.developer_badges",
1010
"name": "Developer Badges",
1111
"developer": "hiimjasmine00",
@@ -81,7 +81,7 @@
8181
"links": {
8282
"community": "https://discord.gg/QVKmbvBXA7",
8383
"source": "https://github.com/hiimjasmine00/DeveloperBadges",
84-
"homepage": "https://www.hiimjustin000.com"
84+
"homepage": "https://www.hiimjasmine00.com"
8585
},
8686
"tags": [
8787
"content",

src/DeveloperBadges.cpp

Lines changed: 15 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,33 @@
11
#include "DeveloperBadges.hpp"
22
#include <Geode/binding/FLAlertLayer.hpp>
33
#include <Geode/loader/Mod.hpp>
4-
#include <Geode/utils/ranges.hpp>
54

65
using namespace geode::prelude;
76

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) {
1210
return badge.id == id && badge.badge != BadgeType::None;
1311
});
14-
return badge.has_value() ? badge.value() : DeveloperBadge { 0, "", BadgeType::None };
12+
return badge != developerBadges.end() ? *badge : empty;
1513
}
1614

1715
ccColor3B DeveloperBadges::getCommentColor(BadgeType badge) {
16+
auto mod = Mod::get();
1817
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");
2322
default: return ccColor3B { 255, 255, 255 };
2423
}
2524
}
2625

2726
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();
6033
}

src/DeveloperBadges.hpp

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,29 @@ struct DeveloperBadge {
1616

1717
class DeveloperBadges {
1818
public:
19-
static inline std::vector<DeveloperBadge> DEVELOPER_BADGES;
20-
static inline std::set<int> LOADED_IDS;
19+
static inline constexpr std::array badgeNames = {
20+
"No Badge",
21+
"Mod Developer",
22+
"Verified Developer",
23+
"Index Staff",
24+
"Lead Developer"
25+
};
26+
static inline constexpr std::array badgeDescriptions = {
27+
"does not have a badge",
28+
"is a <ca>mod developer</c> for <cy>Geode</c>.\n"
29+
"They have created mods that are available on the <cy>Geode mod index</c>.\n"
30+
"They will have to have new mods and mod updates approved by the <cd>index staff</c>",
31+
"is a <cp>verified mod developer</c> for <cy>Geode</c>.\n"
32+
"They can update their mods on the <cy>Geode mod index</c> without the need for approval.\n"
33+
"They will still have to have new mods approved by the <cd>index staff</c>",
34+
"is a member of the <cd>index staff</c> for <cy>Geode</c>.\n"
35+
"They can approve or reject mods uploaded to the <cy>Geode mod index</c>",
36+
"is a <co>lead developer</c> of <cy>Geode</c>.\n"
37+
"They are part of the main development team and have significant contributions to the <cy>Geode ecosystem</c>"
38+
};
39+
static inline std::vector<DeveloperBadge> developerBadges;
2140

22-
static DeveloperBadge badgeForUser(int);
41+
static DeveloperBadge& badgeForUser(int);
2342
static cocos2d::ccColor3B getCommentColor(BadgeType);
2443
static void showBadgeInfo(std::string, BadgeType);
2544
};

src/hooks/CommentCell.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,15 @@ class $modify(DBCommentCell, CommentCell) {
2727
usernameMenu->addChild(badgeButton);
2828
usernameMenu->updateLayout();
2929

30-
auto savedLevel = GameLevelManager::get()->getSavedLevel(m_comment->m_levelID);
31-
if (m_accountComment || m_comment->m_modBadge > 0 || (savedLevel && savedLevel->m_userID == m_comment->m_userID)) return;
32-
if (badge.badge == BadgeType::ModDeveloper && !Mod::get()->getSettingValue<bool>("mod-developer-color-toggle")) return;
33-
if (badge.badge == BadgeType::VerifiedDeveloper && !Mod::get()->getSettingValue<bool>("verified-developer-color-toggle")) return;
34-
if (badge.badge == BadgeType::IndexStaff && !Mod::get()->getSettingValue<bool>("index-staff-color-toggle")) return;
35-
if (badge.badge == BadgeType::LeadDeveloper && !Mod::get()->getSettingValue<bool>("lead-developer-color-toggle")) return;
30+
if (m_accountComment || comment->m_modBadge > 0) return;
31+
if (auto savedLevel = GameLevelManager::get()->getSavedLevel(comment->m_levelID);
32+
savedLevel && savedLevel->m_userID == comment->m_userID) return;
33+
34+
auto mod = Mod::get();
35+
if (badge.badge == BadgeType::ModDeveloper && !mod->getSettingValue<bool>("mod-developer-color-toggle")) return;
36+
if (badge.badge == BadgeType::VerifiedDeveloper && !mod->getSettingValue<bool>("verified-developer-color-toggle")) return;
37+
if (badge.badge == BadgeType::IndexStaff && !mod->getSettingValue<bool>("index-staff-color-toggle")) return;
38+
if (badge.badge == BadgeType::LeadDeveloper && !mod->getSettingValue<bool>("lead-developer-color-toggle")) return;
3639

3740
if (auto commentTextLabel = static_cast<CCLabelBMFont*>(m_mainLayer->getChildByID("comment-text-label")))
3841
commentTextLabel->setColor(DeveloperBadges::getCommentColor(badge.badge));
@@ -53,6 +56,6 @@ class $modify(DBCommentCell, CommentCell) {
5356

5457
void onBadge(CCObject* sender) {
5558
auto badgeName = static_cast<CCString*>(static_cast<CCNode*>(sender)->getUserObject("badge-name"_spr));
56-
DeveloperBadges::showBadgeInfo(badgeName ? badgeName->getCString() : m_comment->m_userScore->m_userName, (BadgeType)sender->getTag());
59+
DeveloperBadges::showBadgeInfo(badgeName ? badgeName->m_sString : m_comment->m_userScore->m_userName, (BadgeType)sender->getTag());
5760
}
5861
};

src/hooks/MenuLayer.cpp

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,13 @@
66
using namespace geode::prelude;
77

88
class $modify(DBMenuLayer, MenuLayer) {
9-
struct Fields {
10-
inline static bool TRIED_LOADING;
11-
};
9+
inline static bool triedLoading = false;
1210

1311
bool init() override {
1412
if (!MenuLayer::init()) return false;
1513

16-
if (Fields::TRIED_LOADING) return true;
17-
Fields::TRIED_LOADING = true;
14+
if (triedLoading) return true;
15+
triedLoading = true;
1816

1917
static std::optional<web::WebTask> task;
2018
task = web::WebRequest().get(BADGES_URL).map([](web::WebResponse* res) {
@@ -23,17 +21,15 @@ class $modify(DBMenuLayer, MenuLayer) {
2321
auto badges = res->json().unwrapOr(std::vector<matjson::Value>());
2422
if (!badges.isArray()) return task = std::nullopt, *res;
2523

26-
DeveloperBadges::DEVELOPER_BADGES = ranges::map<std::vector<DeveloperBadge>>(ranges::filter(badges.asArray().unwrap(),
27-
[](const matjson::Value& value) {
28-
return value.contains("id") && value["id"].isNumber() && value["id"].asInt().unwrap() > 0
24+
DeveloperBadges::developerBadges = ranges::reduce<std::vector<DeveloperBadge>>(badges.asArray().unwrap(),
25+
[](std::vector<DeveloperBadge> & vec, const matjson::Value& value) {
26+
if (value.contains("id") && value["id"].isNumber() && value["id"].asInt().unwrap() > 0
2927
&& value.contains("name") && value["name"].isString()
30-
&& value.contains("badge") && value["badge"].isNumber() && value["badge"].asInt().unwrap() > 0;
31-
}), [](const matjson::Value& value) {
32-
return DeveloperBadge {
33-
.id = (int)value["id"].asInt().unwrap(),
34-
.name = value["name"].asString().unwrap(),
35-
.badge = (BadgeType)value["badge"].asInt().unwrap()
36-
};
28+
&& value.contains("badge") && value["badge"].isNumber() && value["badge"].asInt().unwrap() > 0) vec.push_back({
29+
.id = (int)value["id"].asInt().unwrap(),
30+
.name = value["name"].asString().unwrap(),
31+
.badge = (BadgeType)value["badge"].asInt().unwrap()
32+
});
3733
});
3834

3935
return task = std::nullopt, *res;

src/hooks/ProfilePage.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#include "../DeveloperBadges.hpp"
22
#include <Geode/binding/GJUserScore.hpp>
33
#include <Geode/modify/ProfilePage.hpp>
4-
#include <Geode/utils/ranges.hpp>
54

65
using namespace geode::prelude;
76

@@ -37,6 +36,6 @@ class $modify(DBProfilePage, ProfilePage) {
3736

3837
void onBadge(CCObject* sender) {
3938
auto badgeName = static_cast<CCString*>(static_cast<CCNode*>(sender)->getUserObject("badge-name"_spr));
40-
DeveloperBadges::showBadgeInfo(badgeName ? badgeName->getCString() : m_score->m_userName, (BadgeType)sender->getTag());
39+
DeveloperBadges::showBadgeInfo(badgeName ? badgeName->m_sString : m_score->m_userName, (BadgeType)sender->getTag());
4140
}
4241
};

0 commit comments

Comments
 (0)