@@ -8,22 +8,17 @@ using namespace geode::prelude;
8
8
#include " utils.hpp"
9
9
#include " ImageCache.hpp"
10
10
11
- void ThumbnailPopup::onDownload (CCObject*sender){
11
+ void ThumbnailPopup::onDownload (CCObject* sender){
12
12
std::string URL = fmt::format (" https://raw.githubusercontent.com/cdc-sys/level-thumbnails/main/thumbs/{}.png" , m_levelID);
13
13
CCApplication::sharedApplication ()->openURL (URL.c_str ());
14
14
}
15
15
16
- void ThumbnailPopup::openDiscordServerPopup (){
17
- if (Mod::get ()->getSavedValue <bool >(" discord-ad-shown" )){
18
- return ;
19
- }
20
- else {
21
- Mod::get ()->setSavedValue <bool >(" discord-ad-shown" ,true );
22
- }
16
+ void ThumbnailPopup::openDiscordServerPopup (CCObject* sender){
17
+
23
18
createQuickPopup (
24
19
" Uh Oh!" ,
25
20
" Hm.. This level seems to not have a <cj>Thumbnail</c>...\n "
26
- " Worry not! You can join our <cg>Discord Server</c> and submit a thumbnail <cy>YOURSELF!</c>\n <cb>(Don't worry, you can always find the server link in the mod about page..)</c> " ,
21
+ " Worry not! You can join our <cg>Discord Server</c> and submit a thumbnail <cy>YOURSELF!</c>" ,
27
22
" No Thanks" , " JOIN!" ,
28
23
[this ](auto , bool btn2) {
29
24
if (btn2) {
@@ -36,17 +31,63 @@ void ThumbnailPopup::openDiscordServerPopup(){
36
31
bool ThumbnailPopup::setup (int id) {
37
32
m_noElasticity = false ;
38
33
auto winSize = CCDirector::sharedDirector ()->getWinSize ();
34
+ setID (" ThumbnailPopup" );
35
+ setTitle (" " );
36
+
37
+ CCScale9Sprite* border = CCScale9Sprite::create (" GJ_square07.png" );
38
+ border->setContentSize (m_bgSprite->getContentSize ());
39
+ border->setPosition (m_bgSprite->getPosition ());
40
+ border->setZOrder (2 );
41
+
42
+ CCLayerColor* mask = CCLayerColor::create ({255 , 255 , 255 });
43
+ mask->setContentSize ({391 , 220 });
44
+ mask->setPosition ({m_bgSprite->getContentSize ().width / 2 - 391 /2 , m_bgSprite->getContentSize ().height /2 - 220 /2 });
45
+
46
+ m_bgSprite->setColor ({50 ,50 ,50 });
47
+
48
+ m_clippingNode = CCClippingNode::create ();
49
+ m_clippingNode->setContentSize (m_bgSprite->getContentSize ());
50
+ m_clippingNode->setStencil (mask);
51
+ m_clippingNode->setZOrder (1 );
39
52
40
- setTitle (" Thumbnail" );
53
+ m_mainLayer->addChild (border);
54
+ m_mainLayer->addChild (m_clippingNode);
41
55
42
- CCMenu* downloadMenu = CCMenu::create ();
43
56
CCSprite* downloadSprite = CCSprite::createWithSpriteFrameName (" GJ_downloadBtn_001.png" );
44
- m_downloadBtn = CCMenuItemSpriteExtra::create (downloadSprite,this ,menu_selector (ThumbnailPopup::onDownload));
57
+ m_downloadBtn = CCMenuItemSpriteExtra::create (downloadSprite, this , menu_selector (ThumbnailPopup::onDownload));
45
58
m_downloadBtn->setEnabled (false );
46
59
m_downloadBtn->setColor ({125 ,125 ,125 });
47
- downloadMenu->setPosition ({m_mainLayer->getContentWidth ()-28 ,30 });
48
- downloadMenu->addChild (m_downloadBtn);
49
- m_mainLayer->addChild (downloadMenu);
60
+
61
+ m_downloadBtn->setPosition ({m_mainLayer->getContentSize ().width - 5 , 5 });
62
+
63
+ m_buttonMenu->addChild (m_downloadBtn);
64
+
65
+ CCSprite* recenterSprite = CCSprite::createWithSpriteFrameName (" GJ_undoBtn_001.png" );
66
+ CCMenuItemSpriteExtra* recenterBtn = CCMenuItemSpriteExtra::create (recenterSprite, this , menu_selector (ThumbnailPopup::recenter));
67
+
68
+ recenterBtn->setPosition ({5 , 5 });
69
+ m_buttonMenu->addChild (recenterBtn);
70
+
71
+ #ifndef GEODE_IS_WINDOWS
72
+ recenterBtn->setVisible (false );
73
+ #endif
74
+
75
+ ButtonSprite* infoSprite = ButtonSprite::create (" More Info" );
76
+ m_infoBtn = CCMenuItemSpriteExtra::create (infoSprite, this , menu_selector (ThumbnailPopup::openDiscordServerPopup));
77
+
78
+ m_infoBtn->setPosition ({m_mainLayer->getContentSize ().width /2 , 6 });
79
+ m_infoBtn->setVisible (false );
80
+ m_infoBtn->setZOrder (3 );
81
+
82
+ m_buttonMenu->addChild (m_infoBtn);
83
+
84
+ m_theFunny = CCLabelBMFont::create (" Hey there! OwO" , " bigFont.fnt" );
85
+ m_theFunny->setPosition (m_bgSprite->getPosition ());
86
+ m_theFunny->setVisible (false );
87
+ m_theFunny->setScale (0 .25f );
88
+
89
+ m_mainLayer->addChild (m_theFunny);
90
+
50
91
m_loadingCircle->setParentLayer (m_mainLayer);
51
92
m_loadingCircle->setPosition ({ -70 ,-40 });
52
93
m_loadingCircle->setScale (1 .f );
@@ -77,7 +118,6 @@ bool ThumbnailPopup::setup(int id) {
77
118
imageCreationFinished (m_image);
78
119
});
79
120
});
80
- m_loadingCircle->fadeAndRemove ();
81
121
imageThread.detach ();
82
122
}
83
123
}
@@ -96,28 +136,52 @@ void ThumbnailPopup::imageCreationFinished(CCImage* image){
96
136
onDownloadFinished (CCSprite::createWithTexture (texture));
97
137
}
98
138
99
- void ThumbnailPopup::onDownloadFinished (CCSprite* sprite) {
139
+ void ThumbnailPopup::recenter (CCObject* sender){
140
+
141
+ if (CCNode* node = m_clippingNode->getChildByID (" thumbnail" )) {
142
+ node->setPosition ({m_mainLayer->getContentWidth ()/2 ,m_mainLayer->getContentHeight ()/2 });
143
+ node->stopAllActions ();
144
+ float scale = m_maxHeight/node->getContentSize ().height ;
145
+ node->setUserObject (" new-scale" , CCFloat::create (scale));
146
+ node->setScale (scale);
147
+ }
148
+ }
149
+
150
+ void ThumbnailPopup::onDownloadFinished (CCSprite* image) {
100
151
// thanks for fucking this up sheepdotcom
101
152
m_downloadBtn->setEnabled (true );
102
153
m_downloadBtn->setColor ({255 ,255 ,255 });
103
- CCSprite* image = sprite;
104
- image->setScale (0 .65f / levelthumbs::getQualityMultiplier ());
105
- image->setPosition ({(m_mainLayer->getContentWidth ()/2 ),(m_mainLayer->getContentHeight ()/2 )-10 .f });
106
- m_mainLayer->addChild (image);
154
+
155
+ float scale = m_maxHeight/image->getContentSize ().height ;
156
+ image->setScale (scale);
157
+ image->setUserObject (" scale" , CCFloat::create (scale));
158
+ image->setPosition ({m_mainLayer->getContentWidth ()/2 ,m_mainLayer->getContentHeight ()/2 });
159
+
160
+ image->setID (" thumbnail" );
161
+ m_clippingNode->addChild (image);
162
+ m_loadingCircle->fadeAndRemove ();
107
163
}
108
164
109
165
void ThumbnailPopup::onDownloadFail () {
110
166
// thanks for the image cvolton ;)
111
167
CCSprite* image = CCSprite::create (" noThumb.png" _spr);
112
- image->setScale (0 .65f );
113
- image->setPosition ({(m_mainLayer->getContentWidth ()/2 ),(m_mainLayer->getContentHeight ()/2 )-10 .f });
114
- m_mainLayer->addChild (image);
168
+ float scale = m_maxHeight/image->getContentSize ().height ;
169
+ image->setScale (scale);
170
+ image->setUserObject (" scale" , CCFloat::create (scale));
171
+ image->setPosition ({m_mainLayer->getContentWidth ()/2 , m_mainLayer->getContentHeight ()/2 });
172
+ image->setID (" thumbnail" );
173
+
174
+ m_infoBtn->setVisible (true );
175
+ m_theFunny->setVisible (true );
176
+ m_clippingNode->addChild (image);
177
+ m_loadingCircle->fadeAndRemove ();
178
+
115
179
}
116
180
117
181
ThumbnailPopup* ThumbnailPopup::create (int id) {
118
182
auto ret = new ThumbnailPopup ();
119
183
ret->m_levelID = id;
120
- if (ret && ret->initAnchored (420 , 240 , -1 , " GJ_square01 .png" )) {
184
+ if (ret && ret->initAnchored (395 , 225 , -1 , " GJ_square05 .png" )) {
121
185
ret->autorelease ();
122
186
return ret;
123
187
}
0 commit comments