UIFruitUseView.lua 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. local UIFruitUseView = require("UIRoleMain/UIFruitUseView_Generate")
  2. local FruitHeroItemCtr = require("Common/FruitHeroItemCtr")
  3. function UIFruitUseView:OnAwake(data)
  4. self.controller = require("UIRoleMain/UIFruitUseCtr"):new()
  5. self.controller:Init(self)
  6. self.controller:SetData(data)
  7. self:InitConfigData()
  8. end
  9. function UIFruitUseView:AddEventListener()
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  11. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.FRUIT_USE_SUCC,self,self.OnAddFruitBack)
  12. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.ITEM_CHANGE,self,self.InitUIInfo)
  13. end
  14. --点击关闭界面按钮
  15. function UIFruitUseView:OnClickClose()
  16. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIFruitUse)
  17. end
  18. function UIFruitUseView:FillContent(data, uiBase)
  19. self.uiBase = uiBase
  20. local gameObject = self.uiBase:GetRoot()
  21. if gameObject ~= nil then
  22. self.gameObject = gameObject
  23. self.transform = gameObject.transform
  24. end
  25. self:InitGenerate(self.transform, data)
  26. self:Init()
  27. end
  28. function UIFruitUseView:Init()
  29. self:InitUIInfo()
  30. local userNames = {}
  31. local headIcons = {}
  32. local herodata = ManagerContainer.DataMgr.UserData:GetHeroData(1)
  33. headIcons[1] = CommonUtil.GetHeroCfgDataByUid(herodata.id).BattleCartoonImg
  34. userNames[1] = ManagerContainer.DataMgr.UserData:GetUserNickname()
  35. FruitHeroItemCtr:SetData(self,self["hero1"],herodata,self.cfgData,self.itemCfgData,userNames[1],headIcons[1])
  36. local partnerDatas = self.controller:GetSlotSortPartnerDatas()
  37. for i = 1, #partnerDatas do
  38. headIcons[i + 1] = CommonUtil.GetHeroCfgDataByUid(partnerDatas[i].id).BattleCartoonImg
  39. local _partnerData = ManagerContainer.CfgMgr:GetPartnerDataById(partnerDatas[i].configId)
  40. userNames[i + 1] = string.formatbykey(_partnerData.Name)
  41. FruitHeroItemCtr:SetData(self,self["hero"..(i + 1)],partnerDatas[i],self.cfgData,self.itemCfgData,userNames[i + 1],headIcons[i + 1])
  42. end
  43. end
  44. --发送果实请求消息
  45. function UIFruitUseView:SendNetMessage(heroidx,configidx)
  46. --计时0.5s 不能连点
  47. if self.istimer then
  48. return
  49. end
  50. if self.delayTimer then
  51. self.delayTimer:Stop()
  52. else
  53. self.delayTimer = Timer.New(function ()
  54. self.istimer = false
  55. end, 0.5)
  56. end
  57. self.istimer = true
  58. self.delayTimer:Start()
  59. local herodata = ManagerContainer.DataMgr.UserData:GetHeroData(heroidx)
  60. local configData = self.cfgData
  61. if herodata.qualityList and herodata.qualityList[configData[configidx][1]] and herodata.qualityList[configData[configidx][1]] == configData[configidx][3] or (heroidx ~= 1 and not herodata.owned) then
  62. return
  63. end
  64. if self.fruitNums[configidx] == 0 then
  65. ManagerContainer.LuaUIMgr:ErrorNoticeDisplayWithParam('DscSeasonResult12',self.itemCfgData[configidx]['Name'])
  66. return
  67. end
  68. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_ADD_QUALITY_POINT_REQ,{hero_id = heroidx,item_id =configData[configidx][1]})
  69. end
  70. --初始化配置表数据
  71. function UIFruitUseView:InitConfigData()
  72. local cfgdata = GlobalConfig.Instance:GetConfigStrValue(312)
  73. self.cfgData = CommonUtil.DeserializeGlobalStrToNumberTable(cfgdata)
  74. self.itemCfgData = {}
  75. for i = 1, #self.cfgData do
  76. self.itemCfgData[i] = ManagerContainer.CfgMgr:GetItemById(self.cfgData[i][1])
  77. end
  78. end
  79. --初始化UI显示
  80. function UIFruitUseView:InitUIInfo()
  81. local primarynum = ManagerContainer.DataMgr.BagData:GetItemCountByCfgId(self.cfgData[1][1])
  82. local seniornum =ManagerContainer.DataMgr.BagData:GetItemCountByCfgId(self.cfgData[2][1])
  83. if not self.fruitNums then
  84. self.fruitNums = {}
  85. end
  86. if self.fruitNums[1] == primarynum and self.fruitNums[2] == seniornum then
  87. --数据未改变 不刷新
  88. return
  89. end
  90. self.fruitNums[1] = primarynum
  91. self.fruitNums[2] = seniornum
  92. if primarynum == 0 then
  93. self.primaryText.text.text = "<color=red>"..primarynum.."</color>"
  94. else
  95. self.primaryText.text.text = primarynum
  96. end
  97. if seniornum == 0 then
  98. self.seniorText.text.text = "<color=red>"..seniornum.."</color>"
  99. else
  100. self.seniorText.text.text = seniornum
  101. end
  102. end
  103. function UIFruitUseView:RemoveEventListener()
  104. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  105. end
  106. --使用果实请求返回消息
  107. function UIFruitUseView:OnAddFruitBack(data)
  108. self:InitUIInfo()
  109. local index = self.controller:GetHeroDataIndex(data[1]) + 1
  110. FruitHeroItemCtr:SetData(self,self["hero"..index],data[2],self.cfgData,self.itemCfgData)
  111. end
  112. function UIFruitUseView:AddUIEventListener()
  113. self.uiBase:AddButtonEventListener(self.btnClose.button,self,self.OnClickClose)
  114. self.uiBase:AddButtonEventListener(self["hero1"].fruit1BtnUse.button,function()
  115. self:SendNetMessage(1,1)
  116. end)
  117. self.uiBase:AddButtonEventListener(self["hero1"].fruit2BtnUse.button,function()
  118. self:SendNetMessage(1,2)
  119. end)
  120. local partnerDatas = self.controller:GetSlotSortPartnerDatas()
  121. for i = 1, #partnerDatas do
  122. self.uiBase:AddButtonEventListener(self["hero"..(i + 1)].fruit1BtnUse.button,function()
  123. self:SendNetMessage(partnerDatas[i].id,1)
  124. end)
  125. self.uiBase:AddButtonEventListener(self["hero"..(i + 1)].fruit2BtnUse.button,function()
  126. self:SendNetMessage(partnerDatas[i].id,2)
  127. end)
  128. end
  129. end
  130. function UIFruitUseView:OnHide()
  131. end
  132. function UIFruitUseView:OnShow(data)
  133. self.controller:SetData(data)
  134. end
  135. function UIFruitUseView:OnClose()
  136. end
  137. function UIFruitUseView:OnDispose()
  138. self.cfgData = nil
  139. self.itemCfgData = nil
  140. if self.delayTimer then
  141. self.delayTimer:Stop()
  142. end
  143. self.delayTimer = nil
  144. self.controller:OnDispose()
  145. end
  146. return UIFruitUseView