Skip to content

Commit

Permalink
add jump to last page for comments
Browse files Browse the repository at this point in the history
  • Loading branch information
Cvolton committed Feb 17, 2024
1 parent 8d1ca49 commit bf30097
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 1 deletion.
43 changes: 43 additions & 0 deletions src/layers/JumpToPageLayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ bool JumpToPageLayer::init(PageNumberDelegate* pageNumberDelegate) {

void JumpToPageLayer::onClose(cocos2d::CCObject* sender)
{
auto GLM = GameLevelManager::sharedState();
if(GLM->m_levelCommentDelegate == this) GLM->m_levelCommentDelegate = nullptr;

if(m_infoLayer != nullptr) m_infoLayer->release();
//if(m_pageNumberDelegate != nullptr) m_pageNumberDelegate->release();

Expand Down Expand Up @@ -69,6 +72,35 @@ int JumpToPageLayer::pageNumber(){
return BetterInfo::stoi(m_textNode->getString());
}

void JumpToPageLayer::onLast(cocos2d::CCObject* sender)
{
if(m_infoLayer != nullptr) {
if(m_infoLayer->m_pageEndIdx != 0) {
m_infoLayer->loadPage(m_infoLayer->m_itemCount / m_infoLayer->m_pageEndIdx, false);
onClose(sender);
}
else {
m_infoLayer->loadPage(0, false);
// ugly delegate swap because it's the easiest way to maintain the params
GameLevelManager::sharedState()->m_levelCommentDelegate = this;
}
}

}

void JumpToPageLayer::loadCommentsFinished(cocos2d::CCArray*, char const*) {
if(!m_infoLayer) return;

m_infoLayer->loadPage(0, false);
onLast(nullptr);
}

void JumpToPageLayer::loadCommentsFailed(char const*) {
if(!m_infoLayer) return;

Notification::create("Failed to load comments.")->show();
}

void JumpToPageLayer::onOK(cocos2d::CCObject* sender){
if(m_infoLayer != nullptr) m_infoLayer->loadPage(pageNumber()-1, false);
if(m_pageNumberDelegate != nullptr) m_pageNumberDelegate->loadPage(pageNumber()-1);
Expand Down Expand Up @@ -114,6 +146,17 @@ bool JumpToPageLayer::init(){
createButton("edit_rightBtn_001.png", {50, 6}, menu_selector(JumpToPageLayer::onNext), 1.1f)->setID("right-arrow"_spr);
createButton("GJ_resetBtn_001.png", {93, 57}, menu_selector(JumpToPageLayer::onReset))->setID("reset-button"_spr);

if(m_infoLayer) {
auto lastBtn = CCMenuItemSpriteExtra::create(
BetterInfo::createDoubleArrow(true),
this,
menu_selector(JumpToPageLayer::onLast)
);
lastBtn->setPosition({ 50, -50});
lastBtn->setID("last-button"_spr);
m_buttonMenu->addChild(lastBtn);
}

return true;
}

Expand Down
6 changes: 5 additions & 1 deletion src/layers/JumpToPageLayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#include "_bases/CvoltonAlertLayerStub.h"
#include "DailyHistory/DailyViewLayer.h"

class JumpToPageLayer : public CvoltonAlertLayerStub {
class JumpToPageLayer : public CvoltonAlertLayerStub, public LevelCommentDelegate {
InfoLayer* m_infoLayer = nullptr;
PageNumberDelegate* m_pageNumberDelegate = nullptr;
CCTextInputNode* m_textNode;
Expand All @@ -16,7 +16,11 @@ class JumpToPageLayer : public CvoltonAlertLayerStub {
void onPrev(cocos2d::CCObject* sender);
void onNext(cocos2d::CCObject* sender);
void onReset(cocos2d::CCObject* sender);
void onLast(cocos2d::CCObject* sender);
bool init();
int pageNumber();
static cocos2d::CCLabelBMFont* createTextLabel(const std::string text, const cocos2d::CCPoint& position, const float scale, cocos2d::CCNode* menu, const char* font = "bigFont.fnt");

virtual void loadCommentsFinished(cocos2d::CCArray*, char const*);
virtual void loadCommentsFailed(char const*);
};

0 comments on commit bf30097

Please sign in to comment.