UIShopBuyTipsCtr.lua 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. local UIShopBuyTipsCtr = class("UIShopBuyTipsCtr", require("UICtrBase"))
  2. function UIShopBuyTipsCtr:Init(view)
  3. self.view = view
  4. end
  5. function UIShopBuyTipsCtr:SetData(data)
  6. self.asyncIdx = 0
  7. self.data = data
  8. self:InitData()
  9. end
  10. function UIShopBuyTipsCtr:GetAsyncIdx()
  11. self.asyncIdx = self.asyncIdx + 1
  12. return self.asyncIdx
  13. end
  14. function UIShopBuyTipsCtr:GetData()
  15. return self.data
  16. end
  17. function UIShopBuyTipsCtr:OnDispose()
  18. self.data = nil
  19. self.view = nil
  20. self.curShopData = nil
  21. self.curGoodsData = nil
  22. self.maxBuyNumOnce = nil
  23. self.buyNum = nil
  24. end
  25. function UIShopBuyTipsCtr:InitData()
  26. local shopId = self.data[1]
  27. local goodId = self.data[2]
  28. self.curShopData = ManagerContainer.DataMgr.ShopDataMgr:GetShopData(shopId)
  29. if self.curShopData then
  30. self.curGoodsData = self.curShopData:GetGoodsDataById(goodId)
  31. else
  32. self.curGoodsData = nil
  33. end
  34. self.maxBuyNumOnce = GlobalConfig.Instance:GetConfigIntValue(120)
  35. self:SetBuyNum(1)
  36. end
  37. function UIShopBuyTipsCtr:GetCurShopData()
  38. return self.curShopData
  39. end
  40. function UIShopBuyTipsCtr:GetCurGoodsData()
  41. return self.curGoodsData
  42. end
  43. function UIShopBuyTipsCtr:GetCurPrice()
  44. return self.curGoodsData.curPrice
  45. end
  46. function UIShopBuyTipsCtr:GetMaxBuyNumOnce()
  47. return self.maxBuyNumOnce
  48. end
  49. function UIShopBuyTipsCtr:GetBuyNum()
  50. return self.buyNum
  51. end
  52. function UIShopBuyTipsCtr:SetBuyNum(buyNum)
  53. if not self:IsValidData() then
  54. return false
  55. end
  56. local remainBuyNum = self.curGoodsData:GetRemainBuyNum()
  57. if remainBuyNum >= 0 then
  58. if buyNum > remainBuyNum then
  59. buyNum = remainBuyNum
  60. end
  61. end
  62. local price = self.curGoodsData.curPrice
  63. local goodsCfgData = self.curGoodsData:GetGoodsCfgData()
  64. local ownCount = self:GetOwnResCountByItemId(goodsCfgData.PayForType)
  65. remainBuyNum = Mathf.Floor(ownCount / price)
  66. if buyNum > remainBuyNum then
  67. buyNum = remainBuyNum
  68. end
  69. buyNum = Mathf.Clamp(buyNum, 1, self.maxBuyNumOnce)
  70. if self.buyNum == buyNum then
  71. return false
  72. end
  73. self.buyNum = buyNum
  74. return true
  75. end
  76. function UIShopBuyTipsCtr:ChangeDeltaBuyNum(deltaBuyNum)
  77. local buyNum = self.buyNum + deltaBuyNum
  78. return self:SetBuyNum(buyNum)
  79. end
  80. function UIShopBuyTipsCtr:GetOwnResCountByItemId(itemCfgId)
  81. return CommonUtil.GetOwnResCountByItemId(itemCfgId)
  82. end
  83. function UIShopBuyTipsCtr:IsValidData()
  84. return self.curShopData and self.curGoodsData
  85. end
  86. function UIShopBuyTipsCtr:SendShopBuyItemReq()
  87. if not self:IsValidData() then
  88. return 390
  89. end
  90. local price = self.curGoodsData.curPrice
  91. local goodsCfgData = self.curGoodsData:GetGoodsCfgData()
  92. local ownCount = self:GetOwnResCountByItemId(goodsCfgData.PayForType)
  93. if ownCount < (price * self.buyNum) then
  94. return 391, goodsCfgData.PayForType
  95. end
  96. if not ManagerContainer.DataMgr.ShopDataMgr:SendShopBuyItemReq(self.curShopData.shopId, self.curGoodsData.id, self.buyNum) then
  97. return 100007
  98. end
  99. return 0
  100. end
  101. return UIShopBuyTipsCtr