IAPCtlShopUI.hpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //
  2. // IAPCtlShopUI.hpp
  3. // TileManor
  4. //
  5. // Created by 徐炼新 on 2024/1/16.
  6. //
  7. #ifndef IAPCtlShopUI_hpp
  8. #define IAPCtlShopUI_hpp
  9. #include <stdio.h>
  10. #include "cocos2d.h"
  11. #include "RUReboltLayer.h"
  12. #include "RUTableView.h"
  13. #include "IAPConf.hpp"
  14. #include "IAPDefine.hpp"
  15. class IAPCtlShopItem;
  16. class MapIGCoin;
  17. class IAPCtlShopUI : public cocos2d::Ref
  18. {
  19. public:
  20. static IAPCtlShopUI* getInstance();
  21. // 在指定节点内创建
  22. bool create(cocos2d::Node* pParent, IAPConf* cfg, int placementId = 1);
  23. bool create(cocos2d::Node* pNode, IAPConf* cfg, iap::ShopRequirement& requirement,int placementId = 1);
  24. // 设置退出时的回调
  25. void setCBWhileQuit(std::function<void()> cb) { _cb = cb; }
  26. // 当前是否正在显示
  27. bool isShowing();
  28. // 退出当前界面
  29. void quit();
  30. private:
  31. IAPCtlShopUI();
  32. ~IAPCtlShopUI();
  33. void clear();
  34. void _onNotifyDevelopment(const redutils::ReboltNotifyData& data);
  35. void constructShopItem(bool bShowAll = false);
  36. // 根据所需要的金币进行筛选
  37. void sortGoods(iap::ShopRequirement& requirement);
  38. private:
  39. static IAPCtlShopUI* _instance;
  40. IAPConf* _cfg = nullptr;
  41. redutils::RUReboltLayer* _layer = nullptr;
  42. cocos2d::Node* _ndScrollArea = nullptr;
  43. redutils::RUTableView* _tableView = nullptr;
  44. redutils::RUTableDataModel _tableData;
  45. std::vector<GoodsInfo> _goodsInfo;
  46. std::vector<IAPCtlShopItem*> _goodsItems;
  47. redutils::RUReboltLayer* _btnShowAll = nullptr;
  48. std::vector<cocos2d::Size> _allSizes;
  49. MapIGCoin* _igCoin = nullptr;
  50. bool _bUIShowing = false;
  51. std::function<void()> _cb = nullptr;
  52. int _placementId = 0;
  53. };
  54. #endif /* IAPCtlShopUI_hpp */