UIBoliShopBuyTipsCtr.lua 2.8 KB

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