@@ -547,21 +547,23 @@ bool RLRouletteLayer::init()
547547
548548void RLRouletteLayer::onClose (CCObject*)
549549{
550+ auto & rlm = RouletteManager::get ();
551+
550552 if (RouletteManager::get ().isPlaying )
551553 {
552554 m_confirmation_layer = RLConfirmationAlertLayer::create ({
553555 " Woah there!" ,
554556 " Would you like to <cr>quit</c> or <co>pause</c> the roulette?" ,
555557 [&](auto cl) {
556- RouletteManager::get () .gameTimer .pause ();
557- RouletteManager::get () .saveState ();
558- RouletteManager::get () .isPlaying = false ;
559- RouletteManager::get () .isPaused = true ;
558+ rlm .gameTimer .pause ();
559+ rlm .saveState ();
560+ rlm .isPlaying = false ;
561+ rlm .isPaused = true ;
560562
561563 onClose (nullptr );
562564 },
563565 [&](auto cl) {
564- RouletteManager::get () .reset ();
566+ rlm .reset ();
565567
566568 onClose (nullptr );
567569 },
@@ -573,8 +575,8 @@ void RLRouletteLayer::onClose(CCObject*)
573575 else
574576 {
575577 this ->setKeypadEnabled (false );
576- this ->removeFromParentAndCleanup ( true );
577- RouletteManager::get () .rouletteLayer = nullptr ;
578+ this ->setKeyboardEnabled ( false );
579+ rlm .rouletteLayer = nullptr ;
578580
579581 CCDirector::sharedDirector ()->popSceneWithTransition (
580582 .5f , PopTransition::kPopTransitionFade
@@ -706,11 +708,12 @@ void RLRouletteLayer::onPlayButton(CCObject*)
706708 return ;
707709
708710 LevelInfoLayer* layer;
709- const auto & level = m_level.unwrap ();
710711
711- if (level. first .levelID != 0 )
712+ if (m_level. isOkAnd ([]( const auto & lvl) { return lvl. first .levelID != 0 ; }) )
712713 {
713- layer = LevelInfoLayer::create (rl::utils::createLevelFromResponse (level), false );
714+ const auto & lvl = m_level.unwrap ();
715+
716+ layer = LevelInfoLayer::create (rl::utils::createLevelFromResponse (lvl), false );
714717 layer->downloadLevel ();
715718 }
716719 else
@@ -1032,6 +1035,8 @@ void RLRouletteLayer::onListChanged()
10321035// set roulette button exclamation mark
10331036void RLRouletteLayer::onExitTransitionDidStart ()
10341037{
1038+ BaseCustomLayer::onExitTransitionDidStart ();
1039+
10351040 if (auto nextScene = static_cast <CCScene*>(CCDirector::sharedDirector ()->m_pobScenesStack ->firstObject ()))
10361041 {
10371042 CCMenuItemSpriteExtra* rouletteButton = nullptr ;
@@ -1073,6 +1078,8 @@ void RLRouletteLayer::onExitTransitionDidStart()
10731078
10741079void RLRouletteLayer::onEnterTransitionDidFinish ()
10751080{
1081+ BaseCustomLayer::onEnterTransitionDidFinish ();
1082+
10761083 auto & rlm = RouletteManager::get ();
10771084
10781085 if (!rlm.isPlaying || !rlm.hasEnteredPlayLayer )
0 commit comments