// // PurchaseBannerDelegate.h // merge6 // // Created by Black Homles on 2024/9/24. // #ifndef PurchaseBannerDelegate_h #define PurchaseBannerDelegate_h #include "cocos2d.h" class PurchaseBannerDelegate { public: virtual void onActBtnClick(string bName) = 0; virtual void onPurchaseClick(string ppid,std::function overCallBack) = 0; }; #endif /* PurchaseBannerDelegate_h */ void PurchaseBannerDelegateImpl::onActBtnClick(string name) { if (name == "tilepass") { // 显示tilepass的购买页面 auto tpSys = ActivityManager::getInstance()->getTilePassSystem(); tpSys->showActivatePopup(); } } void PurchaseBannerDelegateImpl::onPurchaseClick(string ppid,std::function overCallBack) { GoodsInfo gi; if (ppid == "tilefavor") { gi.id = ppid; gi.idxGT2 = 0; AreaInGooods aig; { ItemInGoods iig; iig.name = "coin"; iig.count = "1000"; aig.push_back(iig); } { ItemInGoods iig; iig.name = "back1"; iig.count = "1"; aig.push_back(iig); } { ItemInGoods iig; iig.name = "life"; iig.count = "5"; aig.push_back(iig); } gi.areas.push_back(aig); } else if (ppid == "tilepack") { gi.id = ppid; gi.idxGT2 = 0; AreaInGooods aig; { ItemInGoods iig; iig.name = "coin"; iig.count = "4000"; aig.push_back(iig); } { ItemInGoods iig; iig.name = "back1"; iig.count = "3"; aig.push_back(iig); } gi.areas.push_back(aig); } IAPProcess::getInstance()->buy(gi, 104, true, [=](){ if (overCallBack) { overCallBack(true); } }, [=](){ if (overCallBack) { overCallBack(false); } }); } void MetaGameDelegateImpl::showIAPCardWhenFailed(cocos2d::Node* nd, int coinsNeeded, int livedNeeded) { vector banners; int coinsNow = UserDataManager::getInstance()->getCoinNum(); int gap = coinsNeeded - coinsNow; if (gap > 0) { if (gap <= 1000 && !UserDataManager::getInstance()->everPurchased()) { banners.push_back("tilefavor"); } else if (gap <= 4000) { banners.push_back("tilepack"); } } if (livedNeeded > UserDataManager::getInstance()->getLifeLeft()) { if (!UserDataManager::getInstance()->everPurchased()) { if (std::find(banners.begin(), banners.end(), "tilefavor") == banners.end()) { banners.push_back("tilefavor"); } } auto tp = ActivityManager::getInstance()->getTilePassSystem(); if (tp && tp->isActive() && !tp->passActivated()) { banners.push_back("tilepass"); } } if (banners.size() > 0) { PurchaseBannerCtrl::getInstance()->showBanner(nd, banners); } }