Skip to content

Commit 83af12e

Browse files
committed
imma just use nlohmann json idc
1 parent 906241a commit 83af12e

File tree

3 files changed

+63
-14
lines changed

3 files changed

+63
-14
lines changed

res/layers.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,47 +18,47 @@
1818
"layers": {
1919
"1": {
2020
"name": "MenuLayer",
21-
"mod": "robtop.geometrydash"
21+
"mod": "gd"
2222
},
2323
"2": {
2424
"name": "CreatorLayer",
25-
"mod": "robtop.geometrydash"
25+
"mod": "gd"
2626
},
2727
"3": {
2828
"name": "LevelBrowserLayer",
29-
"mod": "robtop.geometrydash"
29+
"mod": "gd"
3030
},
3131
"4": {
3232
"name": "GJGarageLayer",
33-
"mod": "robtop.geometrydash"
33+
"mod": "gd"
3434
},
3535
"5": {
3636
"name": "GauntletLayer",
37-
"mod": "robtop.geometrydash"
37+
"mod": "gd"
3838
},
3939
"6": {
4040
"name": "GauntletSelectLayer",
41-
"mod": "robtop.geometrydash"
41+
"mod": "gd"
4242
},
4343
"7": {
4444
"name": "LeaderboardsLayer",
45-
"mod": "robtop.geometrydash"
45+
"mod": "gd"
4646
},
4747
"8": {
4848
"name": "LevelSearchLayer",
49-
"mod": "robtop.geometrydash"
49+
"mod": "gd"
5050
},
5151
"9": {
5252
"name": "SecretLayer2",
53-
"mod": "robtop.geometrydash"
53+
"mod": "gd"
5454
},
5555
"10": {
5656
"name": "SecretLayer3",
57-
"mod": "robtop.geometrydash"
57+
"mod": "gd"
5858
},
5959
"11": {
6060
"name": "SecretRewardsLayer",
61-
"mod": "robtop.geometrydash"
61+
"mod": "gd"
6262
}
6363
}
6464
}

src/layers/GYSettingSelectLayer.cpp

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
#include <Geode/Geode.hpp>
22
#include <Geode/ui/ScrollLayer.hpp>
3+
#include <matjson.hpp>
4+
#include <filesystem>
5+
#include <fstream>
6+
#include <sstream>
7+
#include <iostream>
38

49
#include "GYSettingSelectLayer.hpp"
510
#include "GYScreenshotPopup.hpp"
@@ -101,7 +106,7 @@ bool GYSettingSelectLayer::init() {
101106
"GJ_paintBtn_001.png"
102107
),
103108
this,
104-
menu_selector(GYSettingSelectLayer::settingsBtn)
109+
menu_selector(GYSettingSelectLayer::generateWrapper)
105110
);
106111
colorBtn->setID("color-button");
107112

@@ -126,11 +131,54 @@ bool GYSettingSelectLayer::init() {
126131
return true;
127132
}
128133

134+
void GYSettingSelectLayer::generateWrapper(CCObject* sender) {
135+
generateModsList();
136+
}
137+
129138
bool GYSettingSelectLayer::generateModsList() {
130-
auto result = matjson::parse("layers.json"_spr);
139+
std::filesystem::path filePath = Mod::get()->getResourcesDir() / "layers.json";
140+
141+
if (!std::filesystem::exists(filePath)) {
142+
log::error("File does not exist at path: {}", filePath.string());
143+
return false;
144+
}
145+
146+
std::string filePathStr = filePath.string();
147+
log::info("Reading file from: {}", filePathStr);
148+
149+
std::ifstream file(filePathStr);
150+
if (!file.is_open()) {
151+
log::error("Failed to open the file: {}", filePathStr);
152+
return false;
153+
}
154+
155+
std::string fileContent((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
156+
file.close();
157+
log::info("File content: {}", fileContent);
158+
159+
auto result = matjson::parse(fileContent);
131160
if (!result) {
132161
log::error("Failed to parse json: {}", result.unwrapErr());
133162
return false;
134163
}
164+
165+
auto jsonData = result.unwrap();
166+
167+
if (!jsonData.contains("mods") || !jsonData["mods"].isArray()) {
168+
log::error("Invalid JSON structure: 'mods' key not found or not an array");
169+
return false;
170+
}
171+
172+
std::map<std::string, std::string> modsMap;
173+
for (const auto& mod : jsonData["mods"].array()) {
174+
std::string modName = mod.as<std::string>().unwrap();
175+
modsMap[modName] = modName;
176+
}
177+
178+
log::info("Extracted Mods Map:");
179+
for (const auto& [modName, _] : modsMap) {
180+
log::info("- {}", modName);
181+
}
182+
135183
return true;
136-
}
184+
}

src/layers/GYSettingSelectLayer.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ class GYSettingSelectLayer : public CCLayer {
1212
bool init();
1313
void settingsBtn(CCObject* sender);
1414
void backWrapper(CCObject* sender);
15+
void generateWrapper(CCObject* sender);
1516
bool generateModsList();
1617
};

0 commit comments

Comments
 (0)