IAPCtlShopItem.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. //
  2. // IAPCtlShopItem.cpp
  3. // TileManor
  4. //
  5. // Created by 徐炼新 on 2024/1/17.
  6. //
  7. #include "IAPCtlShopItem.hpp"
  8. #include "IAPCtlArea23.hpp"
  9. #include "IAPProcess.hpp"
  10. #include "IAPCtlShopUI.hpp"
  11. #include "IAPSucessProcess.hpp"
  12. #include "RUUtils.h"
  13. IAPCtlShopItem* IAPCtlShopItem::create(const GoodsInfo& gi, int placementId) {
  14. IAPCtlShopItem* csi = new IAPCtlShopItem(gi);
  15. csi->_placementId = placementId;
  16. csi->autorelease();
  17. csi->retain();
  18. return csi;
  19. }
  20. IAPCtlShopItem::IAPCtlShopItem(const GoodsInfo& gi)
  21. : _gi(gi) {
  22. }
  23. IAPCtlShopItem::~IAPCtlShopItem() {
  24. if (_ctlArea23) {
  25. _ctlArea23->release();
  26. }
  27. }
  28. cocos2d::Size IAPCtlShopItem::getSize() {
  29. return _gi.sz;
  30. }
  31. void IAPCtlShopItem::onEnter() {
  32. Node::onEnter();
  33. if (_layer == nullptr) {
  34. initUI();
  35. setCascadeOpacityEnabled(true);
  36. setCascadeColorEnabled(true);
  37. redutils::iterateNode(this, [](Node* nd){
  38. nd->setCascadeOpacityEnabled(true);
  39. nd->setCascadeColorEnabled(true);
  40. });
  41. }
  42. }
  43. bool IAPCtlShopItem::initUI() {
  44. if (_gi.type == "bar") {
  45. _layer = redutils::RUReboltLayer::createReboltLayer("shop_panel_2.redream");
  46. } else {
  47. _layer = redutils::RUReboltLayer::createReboltLayer("shop_panel_1.redream");
  48. if (_gi.style == "normal") {
  49. _layer->setCoderDataVar("P-tStyle", "1");
  50. } else if (_gi.style == "mostValued") {
  51. _layer->setCoderDataVar("P-tStyle", "2");
  52. } else if (_gi.style == "special") {
  53. _layer->setCoderDataVar("P-tStyle", "3");
  54. }
  55. _layer->setCoderDataVar("P-tSlogon", _gi.slogon);
  56. _layer->setCoderDataVar("P-tHint", _gi.hint);
  57. }
  58. _layer->setCoderDataVar("P-tCost", _gi.cost);
  59. _layer->setCoderDataVar("P-tCoins", _gi.areas.front().front().count);
  60. std::string strCoins;
  61. // 从后往前遍历,每隔3个数增加一个空格
  62. for (int i=_gi.areas.front().front().count.size()-1; i>=0; i--) {
  63. if (strCoins.size() > 0 && (strCoins.size() == 3 || strCoins.size() == 7)) {
  64. strCoins = " " + strCoins;
  65. }
  66. strCoins = std::string(1, _gi.areas.front().front().count.at(i)) + strCoins;
  67. }
  68. _layer->setCoderDataVar("P-tLbCoins", strCoins);
  69. addChild(_layer);
  70. _layer->registerOnNotify([this](const redutils::ReboltNotifyData& data){
  71. onNotifyDevelopment(data);
  72. });
  73. _layer->runBehaviacWhitFunName("初始化");
  74. if (_ctlArea23) {
  75. _ctlArea23->doOwnInit();
  76. }
  77. return true;
  78. }
  79. void IAPCtlShopItem::onNotifyDevelopment(const redutils::ReboltNotifyData& data) {
  80. if (data.notify == "绑定展示区23") {
  81. _ctlArea23 = IAPCtlArea23::create(data.reboltRedManager, _gi);
  82. } else if (data.notify == "点击购买") {
  83. // 展示正在购买中的界面
  84. IAPProcess::getInstance()->buy(_gi,
  85. _placementId,
  86. [=](){
  87. accepted();
  88. },
  89. [=](){
  90. rejected();
  91. });
  92. }
  93. }
  94. void IAPCtlShopItem::accepted() {
  95. // 退出购买界面,展示成功界面
  96. IAPCtlShopUI::getInstance()->quit();
  97. }
  98. void IAPCtlShopItem::rejected() {
  99. }