// // PurchaseBannerCell.cpp // merge6 // // Created by Black Homles on 2024/9/23. // #include "PurchaseBannerCell.hpp" PurchaseBannerCell* PurchaseBannerCell::create(string bName) { PurchaseBannerCell* ret = new (std::nothrow) PurchaseBannerCell(); if (ret && ret->init()) { ret->autorelease(); } else { CC_SAFE_DELETE(ret); } if (bName.empty()) { CC_SAFE_DELETE(ret); } else { ret->_bannerName = bName; ret->initBanner(); } return ret; } void PurchaseBannerCell::setBtnClickCallBack(std::function tmpCallBack) { _reboltCallBack = tmpCallBack; } void PurchaseBannerCell::setBannerNO(int bno) { _bannerNO = bno; } int PurchaseBannerCell::getBannerNO() { return _bannerNO; } void PurchaseBannerCell::onNotifyDevelopment(redream::ReboltRedManager* reboltRedManager, redream::NotifyDevelopmentWaiter* waiter, std::string notify, std::string param, bool reboltIsWait, Node* outNode) { if (notify == "点击") { if (_reboltCallBack != nullptr) { if (_bannerInfo.bannerType == "计时" && _leftTime <= 0) { _reboltCallBack(_bannerNO,"noTime"); } else { _reboltCallBack(_bannerNO,_bannerName); } } } else if (notify == "绑定倒计时") { if (outNode != nullptr) { this->scheduleBannerTime(outNode); } } } void PurchaseBannerCell::initBanner() { _bannerInfo = PBConfigData::getInstance()->getBannerInfo(_bannerName); if (_bannerInfo.bannerName.empty()) { return; } _lyCellBanner = RedreamLoader::ReboltLayer(_bannerInfo.bannerFile); this->addChild(_lyCellBanner); _lyCellBanner->_reboltCallBack = std::bind(&PurchaseBannerCell::onNotifyDevelopment,this, std::placeholders::_1,std::placeholders::_2,std::placeholders::_3, std::placeholders::_4,std::placeholders::_5,std::placeholders::_6); _lyCellBanner->getReboltManager()->setCoderDataVar("P-标题",_bannerInfo.bannerTitle); _lyCellBanner->getReboltManager()->setCoderDataVar("P-图集名称",_bannerInfo.bannerPlist); _lyCellBanner->getReboltManager()->setCoderDataVar("P-背景图片",_bannerInfo.bannerBGSp); _lyCellBanner->getReboltManager()->setCoderDataVar("P-折扣数字",_bannerInfo.bannerCutCount); _lyCellBanner->getReboltManager()->setCoderDataVar("P-价格数字",_bannerInfo.bannerPrice); _lyCellBanner->getReboltManager()->setCoderDataVar("P-按钮文字",_bannerInfo.bannerBtnStr); { _lyCellBanner->getReboltManager()->setCoderDataVar("P-有效时间秒",to_string(_bannerInfo.bannerTime)); _lyCellBanner->getReboltManager()->setCoderDataVar("P-物品1类型",_bannerInfo.item1Type); _lyCellBanner->getReboltManager()->setCoderDataVar("P-物品1数量",to_string(_bannerInfo.item1Count)); _lyCellBanner->getReboltManager()->setCoderDataVar("P-物品1图片",_bannerInfo.item1PNG); _lyCellBanner->getReboltManager()->setCoderDataVar("P-物品2类型",_bannerInfo.item2Type); _lyCellBanner->getReboltManager()->setCoderDataVar("P-物品2数量","x" + to_string(_bannerInfo.item2Count)); _lyCellBanner->getReboltManager()->setCoderDataVar("P-物品2图片",_bannerInfo.item2PNG); } { _lyCellBanner->getReboltManager()->setCoderDataVar("P-物品3类型",_bannerInfo.item3Type); _lyCellBanner->getReboltManager()->setCoderDataVar("P-物品3数量",to_string(_bannerInfo.item3Count)); _lyCellBanner->getReboltManager()->setCoderDataVar("P-物品3图片",_bannerInfo.item3PNG); _lyCellBanner->getReboltManager()->setCoderDataVar("P-物品3描述",_bannerInfo.item3Des); } { //not enough } _lyCellBanner->getReboltManager()->runBehaviacWhitFunName("初始化"); } void PurchaseBannerCell::scheduleBannerTime(Node* tmpNode) { Label* tmplabel = dynamic_cast(tmpNode); if (tmplabel == nullptr) { return; } if (_leftTime <= 0) { if (_bannerInfo.bannerTime > 0) { _leftTime = _bannerInfo.bannerTime; } else { _leftTime = 60; } } string schedulName = "PurchaseBannerCell::scheduleBannerTime"; auto thisNode = this; tmplabel->unschedule(schedulName); tmplabel->schedule([=](float dt){ thisNode->_leftTime--; if (thisNode->_leftTime > 0) { string timestr = thisNode->convertSecondIntToHMSString(thisNode->_leftTime); tmplabel->setString(timestr); } else { if (thisNode->_lyCellBanner != nullptr) { thisNode->_lyCellBanner->getReboltManager()->runBehaviacWhitFunName("按钮失效"); } tmplabel->unschedule(schedulName); } },1,schedulName); } void PurchaseBannerCell::setCellStatus() { if (_lyCellBanner != nullptr) { _lyCellBanner->getReboltManager()->runBehaviacWhitFunName("更新完成状态"); } } string PurchaseBannerCell::convertSecondIntToHMSString(int iTime) { int lasttime = iTime; int hours = lasttime / 3600; lasttime = lasttime - (3600 * hours); int mins = lasttime / 60; lasttime = lasttime - (60 * mins); if (lasttime <= 0 && hours <= 0 && mins <= 0) { return "00:00:00"; } int seconds = lasttime; string timestrH = ""; if (hours < 10) { timestrH = "0"; } string timestrM = ""; if (mins < 10) { timestrM = "0"; } string timestrS = ""; if (seconds < 10) { timestrS = "0"; } string timestr = timestrH + to_string(hours) + ":" + timestrM + to_string(mins) + ":" + timestrS + to_string(seconds); return timestr; }