@@ -110,36 +110,66 @@ bool ModPopup::setup(ModSource&& src) {
110
110
auto leftColumn = CCNode::create ();
111
111
leftColumn->setContentSize ({ 145 , mainContainer->getContentHeight () });
112
112
113
- auto titleContainer = CCNode::create ();
114
- titleContainer->setContentSize ({ leftColumn->getContentWidth (), 25 });
115
- titleContainer->setAnchorPoint ({ .5f , .5f });
116
-
117
- auto logo = m_source.createModLogo ();
118
- logo->setID (" mod-logo" );
119
- limitNodeSize (
120
- logo,
121
- ccp (titleContainer->getContentHeight (), titleContainer->getContentHeight ()),
122
- 5 .f , .1f
123
- );
124
- titleContainer->addChildAtPosition (
125
- logo, Anchor::Left, ccp (titleContainer->getContentHeight () / 2 , 0 )
126
- );
113
+ m_titleContainer = CCMenu::create ();
114
+ m_titleContainer->setContentSize ({ leftColumn->getContentWidth (), 25 });
115
+ m_titleContainer->setAnchorPoint ({ .5f , .5f });
116
+
117
+ auto getLogo = [this ]() {
118
+ auto logo = m_source.createModLogo ();
119
+ logo->setID (" mod-logo" );
120
+ limitNodeSize (
121
+ logo,
122
+ ccp (m_titleContainer->getContentHeight (), m_titleContainer->getContentHeight ()),
123
+ 5 .f , .1f
124
+ );
125
+ return logo;
126
+ };
127
+
128
+ if (isGeode) {
129
+ auto counter = Mod::get ()->getSavedValue (" alternate-geode-style" , false ) ? 3 : 0 ;
130
+ auto * logoButton = CCMenuItemExt::createSpriteExtra (getLogo (), [this , counter, getLogo](auto * item) mutable {
131
+ counter++;
132
+ if (counter % 6 == 3 ) {
133
+ Mod::get ()->setSavedValue (" alternate-geode-style" , true );
134
+ ColorProvider::get ()->override (" swelvy-bg-0" _spr, { 216 , 132 , 132 , 255 });
135
+ ColorProvider::get ()->override (" swelvy-bg-1" _spr, { 210 , 189 , 119 , 255 });
136
+ ColorProvider::get ()->override (" swelvy-bg-2" _spr, { 195 , 212 , 136 , 255 });
137
+ ColorProvider::get ()->override (" swelvy-bg-3" _spr, { 95 , 184 , 134 , 255 });
138
+ ColorProvider::get ()->override (" swelvy-bg-4" _spr, { 100 , 174 , 189 , 255 });
139
+ ColorProvider::get ()->override (" swelvy-bg-5" _spr, { 118 , 90 , 148 , 255 });
140
+ }
141
+ else if (counter % 6 == 0 ) {
142
+ Mod::get ()->getSaveContainer ().erase (" alternate-geode-style" );
143
+ for (int i = 0 ; i < 6 ; i++) {
144
+ ColorProvider::get ()->reset (fmt::format (" swelvy-bg-{}" _spr, i));
145
+ }
146
+ }
147
+ });
148
+ m_titleContainer->addChildAtPosition (
149
+ logoButton, Anchor::Left, ccp (m_titleContainer->getContentHeight () / 2 , 0 )
150
+ );
151
+ }
152
+ else {
153
+ m_titleContainer->addChildAtPosition (
154
+ getLogo (), Anchor::Left, ccp (m_titleContainer->getContentHeight () / 2 , 0 )
155
+ );
156
+ }
127
157
128
158
// Lil padding
129
- auto devAndTitlePos = titleContainer ->getContentHeight () + 5 ;
159
+ auto devAndTitlePos = m_titleContainer ->getContentHeight () + 5 ;
130
160
131
161
auto title = CCLabelBMFont::create (m_source.getMetadata ().getName ().c_str (), " bigFont.fnt" );
132
- title->limitLabelWidth (titleContainer ->getContentWidth () - devAndTitlePos, .45f , .1f );
162
+ title->limitLabelWidth (m_titleContainer ->getContentWidth () - devAndTitlePos, .45f , .1f );
133
163
title->setAnchorPoint ({ .0f , .5f });
134
164
title->setID (" mod-name-label" );
135
- titleContainer ->addChildAtPosition (title, Anchor::TopLeft, ccp (devAndTitlePos, -titleContainer ->getContentHeight () * .25f ));
165
+ m_titleContainer ->addChildAtPosition (title, Anchor::TopLeft, ccp (devAndTitlePos, -m_titleContainer ->getContentHeight () * .25f ));
136
166
137
167
auto by = " By " + m_source.formatDevelopers ();
138
168
auto dev = CCLabelBMFont::create (by.c_str (), " goldFont.fnt" );
139
- dev->limitLabelWidth (titleContainer ->getContentWidth () - devAndTitlePos, .35f , .05f );
169
+ dev->limitLabelWidth (m_titleContainer ->getContentWidth () - devAndTitlePos, .35f , .05f );
140
170
dev->setAnchorPoint ({ .0f , .5f });
141
171
dev->setID (" mod-developer-label" );
142
- titleContainer ->addChildAtPosition (dev, Anchor::BottomLeft, ccp (devAndTitlePos, titleContainer ->getContentHeight () * .25f ));
172
+ m_titleContainer ->addChildAtPosition (dev, Anchor::BottomLeft, ccp (devAndTitlePos, m_titleContainer ->getContentHeight () * .25f ));
143
173
144
174
// Suggestions
145
175
if (!Loader::get ()->isModInstalled (m_source.getMetadata ().getID ())) {
@@ -157,7 +187,7 @@ bool ModPopup::setup(ModSource&& src) {
157
187
dev->updateAnchoredPosition (Anchor::Left, ccp (devAndTitlePos, 0 ));
158
188
159
189
auto recommendedBy = CCNode::create ();
160
- recommendedBy->setContentWidth (titleContainer ->getContentWidth () - devAndTitlePos);
190
+ recommendedBy->setContentWidth (m_titleContainer ->getContentWidth () - devAndTitlePos);
161
191
recommendedBy->setAnchorPoint ({ .0f , .5f });
162
192
163
193
auto byLabel = CCLabelBMFont::create (" Recommended by " , " bigFont.fnt" );
@@ -180,11 +210,11 @@ bool ModPopup::setup(ModSource&& src) {
180
210
->setDefaultScaleLimits (.1f , 1 .f )
181
211
->setAxisAlignment (AxisAlignment::Start)
182
212
);
183
- titleContainer ->addChildAtPosition (recommendedBy, Anchor::BottomLeft, ccp (devAndTitlePos, 4 ));
213
+ m_titleContainer ->addChildAtPosition (recommendedBy, Anchor::BottomLeft, ccp (devAndTitlePos, 4 ));
184
214
}
185
215
}
186
216
187
- leftColumn->addChild (titleContainer );
217
+ leftColumn->addChild (m_titleContainer );
188
218
189
219
auto idStr = " (ID: " + m_source.getMetadata ().getID () + " )" ;
190
220
auto idLabel = CCLabelBMFont::create (idStr.c_str (), " bigFont.fnt" );
0 commit comments