123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- //
- // 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<void(bool)> 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<void(bool)> 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<string> 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);
- }
- }
|