123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- //
- // 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<void(int,string)> 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<Label*>(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;
- }
|