IAPCtlShop.hpp 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. //
  2. // IAPCtlShop.hpp
  3. // TileManor
  4. //
  5. // Created by 徐炼新 on 2024/9/30.
  6. //
  7. #ifndef IAPCtlShop_hpp
  8. #define IAPCtlShop_hpp
  9. #include <stdio.h>
  10. #include "cocos2d.h"
  11. #include "IAPDefine.hpp"
  12. #include "IAPDelegate.hpp"
  13. class IAPConf;
  14. class IAPCtlShopUI;
  15. NS_IAP_BEGIN
  16. enum UserBuyType{
  17. NoShopping, // 无购买行为
  18. LittleShopping, // 仅购买特惠
  19. NormalShopping, // 正常消费
  20. LotShopping // 土豪
  21. };
  22. class IAPCtlShop : public cocos2d::Ref {
  23. public:
  24. // 创建一个商店控制器
  25. static IAPCtlShop* createWith();
  26. // 初始化
  27. // cfgFN 配置文件名
  28. void init(std::string& cfgFN);
  29. // 设置代理
  30. // delegate 代理的实现
  31. void setDelegate(IAPDelegate* delegate);
  32. // 设置当前设备的等级
  33. // level 等级: 1 表示初级, 2 表示中级, 3 表示高级
  34. void setDeviceLevel(int level);
  35. // 获取当前设备等级
  36. int getDeviceLevel();
  37. // 添加一个商店版位
  38. // plInfo 版位信息
  39. bool addAPlacement(const IAPPlacement& plInfo);
  40. // 删除一个商店版位
  41. // id 卡片id(添加版位时的id)
  42. void removePlacement(const std::string& id);
  43. // 获取活动礼包总数
  44. size_t getPlacementCount();
  45. // 在某个节点中显示
  46. // pParent 父节点
  47. // requirement 对商店的要求,比如说最低金币数
  48. void showInNode(cocos2d::Node* pParent, ShopRequirement& requirement);
  49. // 以滑动卡片的形式在某个节点中显示某些版位(适用于失败时的场景)
  50. // pParent 父节点
  51. // plIds 需要的版位id
  52. void showPlacementsInNode(cocos2d::Node* pParent, const vector<std::string>& plIds);
  53. // 获取用户类型
  54. UserBuyType getUserBuyType();
  55. // 添加用户购买信息
  56. void addUserBuyInfo(std::string commodityID);
  57. // 清除用户购买信息
  58. void clearUserBuyInfo();
  59. private:
  60. // 获取用户购买信息中最贵的金额
  61. float getMaxAmount();
  62. private:
  63. static IAPCtlShop* _instance;
  64. IAPConf* _conf;
  65. IAPCtlShopUI* _shopUI;
  66. IAPDelegate* _delegate;
  67. std::map<std::string, IAPPlacement> _placements;
  68. int _level;
  69. };
  70. NS_IAP_END
  71. #endif /* IAPCtlShop_hpp */