1010
1111using namespace geode ::prelude;
1212
13+ GJDifficulty RLRouletteInfoLayer::m_previous_roulette_difficulty = static_cast <GJDifficulty>(-3 );
14+
1315RLRouletteInfoLayer* RLRouletteInfoLayer::create ()
1416{
1517 auto ret = new RLRouletteInfoLayer ();
@@ -92,11 +94,13 @@ bool RLRouletteInfoLayer::init()
9294
9395
9496 auto versionText = CCLabelBMFont::create (
95- #ifdef RWDI_MODE
96- (" Version " + Mod::get ()->getVersion ().toString (true ) + " dev" ).c_str (),
97+ #if defined(RWDI_MODE) && defined(GEODE_PLATFORM_SHORT_IDENTIFIER)
98+ fmt::format (" Version: {} ({} dev)" , Mod::get ()->getVersion ().toString (true ), GEODE_PLATFORM_SHORT_IDENTIFIER).c_str (),
99+ #elif defined(GEODE_PLATFORM_SHORT_IDENTIFIER)
100+ fmt::format (" Version: {} ({})" , Mod::get ()->getVersion ().toString (true ), GEODE_PLATFORM_SHORT_IDENTIFIER).c_str (),
97101#else
98- (" Version " + Mod::get ()->getVersion ().toString (true )).c_str (),
99- #endif // RWDI_MODE
102+ fmt::format (" Version: {} (how) " , Mod::get ()->getVersion ().toString (true )).c_str (),
103+ #endif
100104 " bigFont.fnt"
101105 );
102106 versionText->setPosition ({ .0f , -94 .f });
@@ -113,15 +117,27 @@ void RLRouletteInfoLayer::onClose(CCObject*)
113117 this ->removeFromParentAndCleanup (true );
114118}
115119
116- // TODO: save the buttons' colors' states
117120void RLRouletteInfoLayer::onToggleButton (CCObject* sender)
118121{
119122 auto button = static_cast <CCMenuItemToggler*>(sender);
120123 auto prevIdx = rl::utils::getIndexOf (g_rouletteManager.getFromSaveContainer (" selected-list-array" ).as_array (), true );
121124 const auto demonDifficultyButton = static_cast <RLDifficultyNode*>(
122- g_rouletteManager.rouletteLayer ->getDifficultyButton (GJDifficulty::Demon)->getNormalImage ( )
125+ g_rouletteManager.rouletteLayer ->getDifficultyButton (GJDifficulty::Demon)->getChildByID ( " sprite-node " )
123126 );
124127
128+ // yeah...
129+ auto changeListWrapper = [&](const std::function<void ()>& f) {
130+ g_rouletteManager.getFromSaveContainer (" selected-list-array" ).as_array ().at (button->getTag ()) = false ;
131+ g_rouletteManager.getFromSaveContainer (" selected-list-array" ).as_array ().at (prevIdx) = false ;
132+ g_rouletteManager.getFromSaveContainer (" selected-list-array" ).as_array ().at (0 ) = true ;
133+
134+ f ();
135+
136+ g_rouletteManager.getFromSaveContainer (" selected-list-array" ).as_array ().at (0 ) = false ;
137+ g_rouletteManager.getFromSaveContainer (" selected-list-array" ).as_array ().at (prevIdx) = false ;
138+ g_rouletteManager.getFromSaveContainer (" selected-list-array" ).as_array ().at (button->getTag ()) = true ;
139+ };
140+
125141 g_rouletteManager.getFromSaveContainer (" selected-list-array" ).as_array ().at (prevIdx) = false ;
126142 g_rouletteManager.getFromSaveContainer (" selected-list-array" ).as_array ().at (button->getTag ()) = true ;
127143
@@ -130,46 +146,60 @@ void RLRouletteInfoLayer::onToggleButton(CCObject* sender)
130146 for (int i = 0 ; i < 4 ; i++)
131147 static_cast <CCMenuItemToggler*>(m_buttonMenu->getChildByTag (i))->toggle (false );
132148
149+ if (m_previous_roulette_difficulty == static_cast <GJDifficulty>(-3 ))
150+ m_previous_roulette_difficulty = g_rouletteManager.previousDifficulty ;
151+
133152 // purely visual, "toggles" the difficulty face based on the selected list
134153 // (demon for demon list, insane for challenge list, and previous difficulty for normal list, easy for gd list because 🔥)
135154 if (button->getID () == " normal-list" )
136155 {
137- g_rouletteManager.rouletteLayer ->setDifficultyButtonColor (GJDifficulty::Insane, { 125 , 125 , 125 });
138- g_rouletteManager.rouletteLayer ->setDifficultyButtonColor (GJDifficulty::Demon, { 125 , 125 , 125 });
139- g_rouletteManager.rouletteLayer ->setDifficultyButtonColor (g_rouletteManager.previousDifficulty , { 255 , 255 , 255 });
156+ changeListWrapper ([&] {
157+ g_rouletteManager.rouletteLayer ->onDifficultyButton (
158+ g_rouletteManager.rouletteLayer ->getDifficultyButton (m_previous_roulette_difficulty)
159+ );
160+ });
161+
162+ m_previous_roulette_difficulty = static_cast <GJDifficulty>(-3 );
140163 }
141164 else if (button->getID () == " demon-list" )
142165 {
143- g_rouletteManager.rouletteLayer ->setDifficultyButtonColor (g_rouletteManager.previousDifficulty , { 125 , 125 , 125 });
144- g_rouletteManager.rouletteLayer ->setDifficultyButtonColor (GJDifficulty::Insane, { 125 , 125 , 125 });
145- g_rouletteManager.rouletteLayer ->setDifficultyButtonColor (GJDifficulty::Demon, { 255 , 255 , 255 });
166+ changeListWrapper ([&] {
167+ g_rouletteManager.rouletteLayer ->onDifficultyButton (
168+ g_rouletteManager.rouletteLayer ->getDifficultyButton (GJDifficulty::Demon)
169+ );
170+ });
146171 demonDifficultyButton->setDifficulty (GJDifficulty::DemonExtreme);
147172 }
148173 else if (button->getID () == " challenge-list" )
149174 {
150- g_rouletteManager.rouletteLayer ->setDifficultyButtonColor (g_rouletteManager.previousDifficulty , { 125 , 125 , 125 });
151- g_rouletteManager.rouletteLayer ->setDifficultyButtonColor (GJDifficulty::Insane, { 255 , 255 , 255 });
152- g_rouletteManager.rouletteLayer ->setDifficultyButtonColor (GJDifficulty::Demon, { 125 , 125 , 125 });
175+ changeListWrapper ([&] {
176+ g_rouletteManager.rouletteLayer ->onDifficultyButton (
177+ g_rouletteManager.rouletteLayer ->getDifficultyButton (GJDifficulty::Insane)
178+ );
179+ });
153180 demonDifficultyButton->setDifficulty (static_cast <GJDifficulty>(-2 ));
154181 }
155182 else if (button->getID () == " gd-list" )
156183 {
157184 // TODO: set the list's difficulty ... somehow?
158185
159- g_rouletteManager.rouletteLayer ->setDifficultyButtonColor (g_rouletteManager.previousDifficulty , { 125 , 125 , 125 });
160- g_rouletteManager.rouletteLayer ->setDifficultyButtonColor (GJDifficulty::Insane, { 125 , 125 , 125 });
161- g_rouletteManager.rouletteLayer ->setDifficultyButtonColor (GJDifficulty::Demon, { 125 , 125 , 125 });
186+ changeListWrapper ([&] {
187+ g_rouletteManager.rouletteLayer ->onDifficultyButton (
188+ g_rouletteManager.rouletteLayer ->getDifficultyButton (GJDifficulty::Easy)
189+ );
190+ g_rouletteManager.rouletteLayer ->getDifficultyButton (GJDifficulty::Easy)->setColor ({ 125 , 125 , 125 });
191+ });
162192 demonDifficultyButton->setDifficulty (static_cast <GJDifficulty>(-2 ));
163193 }
164194
165195 if (button->getID () != " normal-list" )
166196 g_rouletteManager.rouletteLayer ->main_menu ->getChildByID (" demon-plus-button" )->setVisible (false );
167- else if (g_rouletteManager. previousDifficulty == GJDifficulty::Demon)
197+ else if (m_previous_roulette_difficulty == GJDifficulty::Demon)
168198 g_rouletteManager.rouletteLayer ->main_menu ->getChildByID (" demon-plus-button" )->setVisible (true );
169199
170200 if (button->getID () == " normal-list" )
171201 demonDifficultyButton->setDifficulty (
172- g_rouletteManager. previousDifficulty == GJDifficulty::Demon
202+ m_previous_roulette_difficulty == GJDifficulty::Demon
173203 ? g_rouletteManager.previousDemonDifficulty
174204 : static_cast <GJDifficulty>(-2 )
175205 );
0 commit comments