PurchaseBannerDelegate.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. //
  2. // PurchaseBannerDelegate.h
  3. // merge6
  4. //
  5. // Created by Black Homles on 2024/9/24.
  6. //
  7. #ifndef PurchaseBannerDelegate_h
  8. #define PurchaseBannerDelegate_h
  9. #include "cocos2d.h"
  10. class PurchaseBannerDelegate {
  11. public:
  12. virtual void onActBtnClick(string bName) = 0;
  13. virtual void onPurchaseClick(string ppid,std::function<void(bool)> overCallBack) = 0;
  14. };
  15. #endif /* PurchaseBannerDelegate_h */
  16. void PurchaseBannerDelegateImpl::onActBtnClick(string name) {
  17. if (name == "tilepass") {
  18. // 显示tilepass的购买页面
  19. auto tpSys = ActivityManager::getInstance()->getTilePassSystem();
  20. tpSys->showActivatePopup();
  21. }
  22. }
  23. void PurchaseBannerDelegateImpl::onPurchaseClick(string ppid,std::function<void(bool)> overCallBack) {
  24. GoodsInfo gi;
  25. if (ppid == "tilefavor") {
  26. gi.id = ppid;
  27. gi.idxGT2 = 0;
  28. AreaInGooods aig;
  29. {
  30. ItemInGoods iig;
  31. iig.name = "coin";
  32. iig.count = "1000";
  33. aig.push_back(iig);
  34. }
  35. {
  36. ItemInGoods iig;
  37. iig.name = "back1";
  38. iig.count = "1";
  39. aig.push_back(iig);
  40. }
  41. {
  42. ItemInGoods iig;
  43. iig.name = "life";
  44. iig.count = "5";
  45. aig.push_back(iig);
  46. }
  47. gi.areas.push_back(aig);
  48. } else if (ppid == "tilepack") {
  49. gi.id = ppid;
  50. gi.idxGT2 = 0;
  51. AreaInGooods aig;
  52. {
  53. ItemInGoods iig;
  54. iig.name = "coin";
  55. iig.count = "4000";
  56. aig.push_back(iig);
  57. }
  58. {
  59. ItemInGoods iig;
  60. iig.name = "back1";
  61. iig.count = "3";
  62. aig.push_back(iig);
  63. }
  64. gi.areas.push_back(aig);
  65. }
  66. IAPProcess::getInstance()->buy(gi, 104, true, [=](){
  67. if (overCallBack) {
  68. overCallBack(true);
  69. }
  70. }, [=](){
  71. if (overCallBack) {
  72. overCallBack(false);
  73. }
  74. });
  75. }
  76. void MetaGameDelegateImpl::showIAPCardWhenFailed(cocos2d::Node* nd, int coinsNeeded, int livedNeeded) {
  77. vector<string> banners;
  78. int coinsNow = UserDataManager::getInstance()->getCoinNum();
  79. int gap = coinsNeeded - coinsNow;
  80. if (gap > 0) {
  81. if (gap <= 1000 && !UserDataManager::getInstance()->everPurchased()) {
  82. banners.push_back("tilefavor");
  83. } else if (gap <= 4000) {
  84. banners.push_back("tilepack");
  85. }
  86. }
  87. if (livedNeeded > UserDataManager::getInstance()->getLifeLeft()) {
  88. if (!UserDataManager::getInstance()->everPurchased()) {
  89. if (std::find(banners.begin(), banners.end(), "tilefavor") == banners.end()) {
  90. banners.push_back("tilefavor");
  91. }
  92. }
  93. auto tp = ActivityManager::getInstance()->getTilePassSystem();
  94. if (tp && tp->isActive() && !tp->passActivated()) {
  95. banners.push_back("tilepass");
  96. }
  97. }
  98. if (banners.size() > 0) {
  99. PurchaseBannerCtrl::getInstance()->showBanner(nd, banners);
  100. }
  101. }