From b23ed2e24a75463388c1251e2eb052440979c4d3 Mon Sep 17 00:00:00 2001 From: Cvolton Date: Sun, 17 Dec 2023 14:03:59 +0100 Subject: [PATCH] move more implementation to BIViewLayer --- src/layers/DailyHistory/DailyViewLayer.cpp | 3 +- src/layers/LeaderboardViewLayer.cpp | 28 ++++--------------- src/layers/LeaderboardViewLayer.h | 1 - src/layers/RewardHistory/RewardViewLayer.cpp | 3 +- src/layers/_bases/BIViewLayer.cpp | 29 ++++++++++++++++++++ src/layers/_bases/BIViewLayer.h | 5 ++++ 6 files changed, 42 insertions(+), 27 deletions(-) diff --git a/src/layers/DailyHistory/DailyViewLayer.cpp b/src/layers/DailyHistory/DailyViewLayer.cpp index 4f2ca51..aa200f9 100644 --- a/src/layers/DailyHistory/DailyViewLayer.cpp +++ b/src/layers/DailyHistory/DailyViewLayer.cpp @@ -23,10 +23,9 @@ bool DailyViewLayer::init(bool isWeekly) { // initialize data auto GLM = GameLevelManager::sharedState(); auto winSize = CCDirector::sharedDirector()->getWinSize(); + setData(CCArray::create()); auto dailyLevels = GLM->m_dailyLevels; - m_data = CCArray::create(); - m_data->retain(); CCDictElement* obj; CCDICT_FOREACH(dailyLevels, obj){ auto currentLvl = static_cast(obj->getObject()); diff --git a/src/layers/LeaderboardViewLayer.cpp b/src/layers/LeaderboardViewLayer.cpp index 4ac27ba..3efce4b 100644 --- a/src/layers/LeaderboardViewLayer.cpp +++ b/src/layers/LeaderboardViewLayer.cpp @@ -23,13 +23,7 @@ bool LeaderboardViewLayer::init(int accountID) { m_accountID = accountID; m_title = "Global Leaderboards"; - m_data = CCArray::create(); - m_data->retain(); - - m_circle = LoadingCircle::create(); - m_circle->retain(); - m_circle->setParentLayer(this); - m_circle->show(); + showCircle(); //refresh btn auto refreshBtn = CCMenuItemSpriteExtra::create( @@ -46,6 +40,8 @@ bool LeaderboardViewLayer::init(int accountID) { this->addChild(menuRefresh); + setData(CCArray::create()); + loadPage(); BetterInfoOnline::sharedState()->loadScores(m_accountID, false, this); @@ -61,9 +57,6 @@ void LeaderboardViewLayer::loadPage(){ void LeaderboardViewLayer::keyBackClicked() { BetterInfoOnline::sharedState()->m_scoreDelegate = nullptr; - - if(m_circle) m_circle->release(); - m_circle = nullptr; BIViewLayer::keyBackClicked(); } @@ -71,15 +64,7 @@ void LeaderboardViewLayer::keyBackClicked() { void LeaderboardViewLayer::onRefresh(CCObject* object) { BetterInfoOnline::sharedState()->loadScores(m_accountID, true, this); - if(m_circle) { - m_circle->fadeAndRemove(); - m_circle->release(); - } - - m_circle = LoadingCircle::create(); - m_circle->retain(); - m_circle->setParentLayer(this); - m_circle->show(); + showCircle(); } CCScene* LeaderboardViewLayer::scene(int accountID) { @@ -90,8 +75,7 @@ CCScene* LeaderboardViewLayer::scene(int accountID) { } void LeaderboardViewLayer::onLeaderboardFinished(cocos2d::CCArray* scores) { - m_data = scores; - m_data->retain(); + setData(scores); loadPage(); - if(m_circle) m_circle->fadeAndRemove(); + hideCircle(); } \ No newline at end of file diff --git a/src/layers/LeaderboardViewLayer.h b/src/layers/LeaderboardViewLayer.h index 3549b4d..4bd431f 100644 --- a/src/layers/LeaderboardViewLayer.h +++ b/src/layers/LeaderboardViewLayer.h @@ -4,7 +4,6 @@ #include "_bases/BIViewLayer.h" class LeaderboardViewLayer : public BIViewLayer, public BILeaderboardDelegate { - LoadingCircle* m_circle = nullptr; int m_accountID = 0; protected: virtual bool init(int accountID); diff --git a/src/layers/RewardHistory/RewardViewLayer.cpp b/src/layers/RewardHistory/RewardViewLayer.cpp index 50963b5..e13b5df 100644 --- a/src/layers/RewardHistory/RewardViewLayer.cpp +++ b/src/layers/RewardHistory/RewardViewLayer.cpp @@ -25,9 +25,8 @@ bool RewardViewLayer::compareRewards(const void* i1, const void* i2){ bool RewardViewLayer::init(CCDictionary* chests, const char* title) { Mod::get()->setSavedValue("reward-cell-title", title); m_title = fmt::format("{} Chests", title); + setData(CCArray::create()); - m_data = CCArray::create(); - m_data->retain(); CCDictElement* obj; CCDICT_FOREACH(chests, obj){ auto currentReward = static_cast(obj->getObject()); diff --git a/src/layers/_bases/BIViewLayer.cpp b/src/layers/_bases/BIViewLayer.cpp index e91d30a..28a8154 100644 --- a/src/layers/_bases/BIViewLayer.cpp +++ b/src/layers/_bases/BIViewLayer.cpp @@ -82,6 +82,8 @@ bool BIViewLayer::init(bool paginated) { } void BIViewLayer::loadPage(){ + if(!m_data) return; + auto winSize = CCDirector::sharedDirector()->getWinSize(); const unsigned int count = resultsPerPage(); @@ -113,7 +115,11 @@ void BIViewLayer::loadPage(unsigned int page){ void BIViewLayer::keyBackClicked() { setTouchEnabled(false); setKeypadEnabled(false); + m_data->release(); + if(m_circle) m_circle->release(); + m_circle = nullptr; + CCDirector::sharedDirector()->popSceneWithTransition(0.5f, PopTransition::kPopTransitionFade); } @@ -182,4 +188,27 @@ void BIViewLayer::keyDown(enumKeyCodes key){ default: CCLayer::keyDown(key); } +} + +void BIViewLayer::setData(CCArray* data){ + if(m_data) m_data->release(); + m_data = data; + m_data->retain(); +} + +void BIViewLayer::showCircle(){ + hideCircle(); + + m_circle = LoadingCircle::create(); + m_circle->retain(); + m_circle->setParentLayer(this); + m_circle->show(); +} + +void BIViewLayer::hideCircle(){ + if(m_circle) { + m_circle->fadeAndRemove(); + m_circle->release(); + m_circle = nullptr; + } } \ No newline at end of file diff --git a/src/layers/_bases/BIViewLayer.h b/src/layers/_bases/BIViewLayer.h index 8b992a8..512785a 100644 --- a/src/layers/_bases/BIViewLayer.h +++ b/src/layers/_bases/BIViewLayer.h @@ -16,6 +16,7 @@ class BIViewLayer : public BIBaseLayer, public PageNumberDelegate { CCMenuItemSpriteExtra* m_randomBtn = nullptr; cocos2d::CCLabelBMFont* m_counter = nullptr; ButtonSprite* m_pageBtnSprite = nullptr; + LoadingCircle* m_circle = nullptr; unsigned int m_page = 0; bool m_paginated = true; @@ -35,4 +36,8 @@ class BIViewLayer : public BIBaseLayer, public PageNumberDelegate { static cocos2d::CCScene* scene(bool paginated = true); virtual int getPage() const; virtual void keyDown(cocos2d::enumKeyCodes key); + void setData(cocos2d::CCArray* data); + + void showCircle(); + void hideCircle(); }; \ No newline at end of file