Skip to content

Commit dd466b9

Browse files
committed
Merge branch 'master' of https://github.com/OmgRod/Geodify
2 parents baf9798 + ce88785 commit dd466b9

File tree

5 files changed

+115
-96
lines changed

5 files changed

+115
-96
lines changed

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,20 @@ using namespace geode::prelude;
7777
SET_SWELVY(GlobedLevelListLayer, "dankmeme.globed2/GlobedLevelListLayer", "background");
7878

7979
```
80+
81+
If the layer you're attempting to hook doesnt have an ID for its background, use `SET_SWELVY_SPRITE`.
82+
83+
```cpp
84+
#include <Geode/Geode.hpp>
85+
#include "../../SwelvyBG.hpp"
86+
#include <alphalaneous.alphas_geode_utils/include/NodeModding.h>
87+
88+
using namespace geode::prelude;
89+
90+
SET_SWELVY_SPRITE(GlobedLevelListLayer, "dankmeme.globed2/GlobedLevelListLayer");
91+
92+
```
93+
8094
This way is new from v2.0.0+!
8195

8296
### Registering Layers

changelog.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
# v2.1.2
1+
# v2.1.1
22

33
- Bugfix: Certain screenshots wouldn't work
44
- Added Layers: `gdutilsdevs.gdutils/MoreLeaderboards`
5-
6-
# v2.1.1
7-
85
- Fixed issues which caused rejected mod (good job, rod!)
96

107
![garage plus joke](omgrod.geodify/changelog1.png)

mod.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"win": "2.2074",
66
"mac": "2.2074"
77
},
8-
"version": "v2.1.1-beta.1",
8+
"version": "v2.1.1",
99
"id": "omgrod.geodify",
1010
"name": "Geodify",
1111
"developers": ["OmgRod", "Cosmella-v"],

src/layers/GYScreenshotPopup.cpp

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
#include "GYScreenshotPopup.hpp"
2+
3+
bool GYScreenshotPopup::setup(int const& layer) {
4+
Tags tags;
5+
auto layerName = tags.getStringFromTag(layer);
6+
7+
if (layerName.empty()) {
8+
log::error("Layer name is empty for tag: {}", layer);
9+
return false;
10+
}
11+
12+
std::string result = extractLastSegment(layerName);
13+
14+
auto winSize = CCDirector::sharedDirector()->getWinSize();
15+
if (!m_mainLayer) {
16+
log::error("m_mainLayer is not initialized");
17+
return false;
18+
}
19+
20+
this->setTitle(result);
21+
m_mainLayer->setContentSize({ winSize.width * 0.6f, winSize.height * 0.7f });
22+
m_mainLayer->updateLayout();
23+
24+
std::string URL = fmt::format("https://raw.githubusercontent.com/OmgRod/Geodify/master/previews/{}Preview.png", layerName);
25+
26+
auto req = web::WebRequest();
27+
m_downloadListener.bind([this](web::WebTask::Event* e) {
28+
if (auto res = e->getValue()) {
29+
if (!res->ok()) {
30+
log::error("Failed to download image from URL.");
31+
onDownloadFail();
32+
} else {
33+
auto data = res->data();
34+
std::thread imageThread = std::thread([data, this]() {
35+
m_image = new CCImage();
36+
m_image->autorelease();
37+
m_image->initWithImageData(const_cast<uint8_t*>(data.data()), data.size());
38+
geode::Loader::get()->queueInMainThread([this]() {
39+
imageCreationFinished(m_image);
40+
});
41+
});
42+
imageThread.detach();
43+
}
44+
}
45+
});
46+
m_downloadListener.setFilter(req.get(URL));
47+
48+
return true;
49+
}
50+
51+
void GYScreenshotPopup::imageCreationFinished(CCImage* image) {
52+
CCTexture2D* texture = new CCTexture2D();
53+
texture->autorelease();
54+
texture->initWithImage(image);
55+
56+
m_sprite = CCSprite::createWithTexture(texture);
57+
if (m_sprite) {
58+
auto maxWidth = m_mainLayer->getContentSize().width * 0.75f;
59+
auto maxHeight = m_mainLayer->getContentSize().height * 0.75f;
60+
61+
auto spriteWidth = m_sprite->getContentSize().width;
62+
auto spriteHeight = m_sprite->getContentSize().height;
63+
64+
float scale = std::min(maxWidth / spriteWidth, maxHeight / spriteHeight);
65+
m_sprite->setScale(scale);
66+
67+
m_mainLayer->addChildAtPosition(m_sprite, Anchor::Center);
68+
}
69+
}
70+
71+
void GYScreenshotPopup::onDownloadFail() {
72+
CCSprite* fallbackSprite = CCSprite::create("noPreview.png"_spr);
73+
m_mainLayer->addChildAtPosition(fallbackSprite, Anchor::Center);
74+
}
75+
76+
std::string GYScreenshotPopup::extractLastSegment(const std::string& input) {
77+
size_t lastDash = input.rfind('-');
78+
if (lastDash != std::string::npos) {
79+
return input.substr(lastDash + 1);
80+
}
81+
return input;
82+
}
83+
84+
GYScreenshotPopup* GYScreenshotPopup::create(int const& text) {
85+
auto ret = new GYScreenshotPopup();
86+
auto winSize = CCDirector::sharedDirector()->getWinSize();
87+
if (ret->initAnchored(winSize.width * .6f, winSize.height * .7f, text)) {
88+
ret->autorelease();
89+
return ret;
90+
}
91+
92+
delete ret;
93+
return nullptr;
94+
}

src/layers/GYScreenshotPopup.hpp

Lines changed: 5 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -15,97 +15,11 @@ class GYScreenshotPopup : public geode::Popup<int const&> {
1515
Ref<CCImage> m_image;
1616
CCSprite* m_sprite;
1717

18-
bool setup(int const& layer) override {
19-
Tags tags;
20-
auto layerName = tags.getStringFromTag(layer);
21-
22-
if (layerName.empty()) {
23-
log::error("Layer name is empty for tag: {}", layer);
24-
return false;
25-
}
26-
27-
std::string result = extractLastSegment(layerName);
28-
29-
auto winSize = CCDirector::sharedDirector()->getWinSize();
30-
if (!m_mainLayer) {
31-
log::error("m_mainLayer is not initialized");
32-
return false;
33-
}
34-
35-
this->setTitle(result);
36-
m_mainLayer->setContentSize({ winSize.width * 0.6f, winSize.height * 0.7f });
37-
m_mainLayer->updateLayout();
38-
39-
std::string URL = fmt::format("https://raw.githubusercontent.com/OmgRod/Geodify/master/previews/{}Preview.png", layerName);
40-
41-
auto req = web::WebRequest();
42-
m_downloadListener.bind([this](web::WebTask::Event* e) {
43-
if (auto res = e->getValue()) {
44-
if (!res->ok()) {
45-
log::error("Failed to download image from URL.");
46-
onDownloadFail();
47-
} else {
48-
auto data = res->data();
49-
std::thread imageThread = std::thread([data, this]() {
50-
m_image = new CCImage();
51-
m_image->autorelease();
52-
m_image->initWithImageData(const_cast<uint8_t*>(data.data()), data.size());
53-
geode::Loader::get()->queueInMainThread([this]() {
54-
imageCreationFinished(m_image);
55-
});
56-
});
57-
imageThread.detach();
58-
}
59-
}
60-
});
61-
m_downloadListener.setFilter(req.get(URL));
62-
63-
return true;
64-
}
65-
66-
void imageCreationFinished(CCImage* image) {
67-
CCTexture2D* texture = new CCTexture2D();
68-
texture->autorelease();
69-
texture->initWithImage(image);
70-
71-
m_sprite = CCSprite::createWithTexture(texture);
72-
if (m_sprite) {
73-
auto maxWidth = m_mainLayer->getContentSize().width * 0.75f;
74-
auto maxHeight = m_mainLayer->getContentSize().height * 0.75f;
75-
76-
auto spriteWidth = m_sprite->getContentSize().width;
77-
auto spriteHeight = m_sprite->getContentSize().height;
78-
79-
float scale = std::min(maxWidth / spriteWidth, maxHeight / spriteHeight);
80-
m_sprite->setScale(scale);
81-
82-
m_mainLayer->addChildAtPosition(m_sprite, Anchor::Center);
83-
}
84-
}
85-
86-
void onDownloadFail() {
87-
CCSprite* fallbackSprite = CCSprite::create("noPreview.png"_spr);
88-
m_mainLayer->addChildAtPosition(fallbackSprite, Anchor::Center);
89-
}
18+
bool setup(int const& layer) override;
19+
void imageCreationFinished(CCImage* image);
20+
void onDownloadFail();
9021

9122
public:
92-
std::string extractLastSegment(const std::string& input) {
93-
size_t lastDash = input.rfind('-');
94-
if (lastDash != std::string::npos) {
95-
return input.substr(lastDash + 1);
96-
}
97-
return input;
98-
}
99-
100-
static GYScreenshotPopup* create(int const& text) {
101-
auto ret = new GYScreenshotPopup();
102-
auto winSize = CCDirector::sharedDirector()->getWinSize();
103-
if (ret->initAnchored(winSize.width * .6f, winSize.height * .7f, text)) {
104-
ret->autorelease();
105-
return ret;
106-
}
107-
108-
delete ret;
109-
return nullptr;
110-
}
23+
static GYScreenshotPopup* create(int const& text);
24+
std::string extractLastSegment(const std::string& input);
11125
};

0 commit comments

Comments
 (0)