UIFruitUseView.lua 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  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. local itemName= self.itemCfgData[configidx]['Name']
  66. ManagerContainer.LuaUIMgr:ErrorNoticeDisplayWithParam('DscSeasonResult12',I18N.T(itemName))
  67. return
  68. end
  69. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_ADD_QUALITY_POINT_REQ,{hero_id = heroidx,item_id =configData[configidx][1]})
  70. end
  71. --初始化配置表数据
  72. function UIFruitUseView:InitConfigData()
  73. local cfgdata = GlobalConfig.Instance:GetConfigStrValue(312)
  74. self.cfgData = CommonUtil.DeserializeGlobalStrToNumberTable(cfgdata)
  75. self.itemCfgData = {}
  76. for i = 1, #self.cfgData do
  77. self.itemCfgData[i] = ManagerContainer.CfgMgr:GetItemById(self.cfgData[i][1])
  78. end
  79. end
  80. --初始化UI显示
  81. function UIFruitUseView:InitUIInfo()
  82. local primarynum = ManagerContainer.DataMgr.BagData:GetItemCountByCfgId(self.cfgData[1][1])
  83. local seniornum =ManagerContainer.DataMgr.BagData:GetItemCountByCfgId(self.cfgData[2][1])
  84. if not self.fruitNums then
  85. self.fruitNums = {}
  86. end
  87. if self.fruitNums[1] == primarynum and self.fruitNums[2] == seniornum then
  88. --数据未改变 不刷新
  89. return
  90. end
  91. self.fruitNums[1] = primarynum
  92. self.fruitNums[2] = seniornum
  93. if primarynum == 0 then
  94. self.primaryText.text.text = "<color=red>"..primarynum.."</color>"
  95. else
  96. self.primaryText.text.text = primarynum
  97. end
  98. if seniornum == 0 then
  99. self.seniorText.text.text = "<color=red>"..seniornum.."</color>"
  100. else
  101. self.seniorText.text.text = seniornum
  102. end
  103. end
  104. function UIFruitUseView:RemoveEventListener()
  105. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  106. end
  107. --使用果实请求返回消息
  108. function UIFruitUseView:OnAddFruitBack(data)
  109. --LogError(Inspect(data))
  110. self:InitUIInfo()
  111. local index = self.controller:GetHeroDataIndex(data[1]) + 1
  112. FruitHeroItemCtr:SetData(self,self["hero"..index],data[2],self.cfgData,self.itemCfgData)
  113. end
  114. function UIFruitUseView:AddUIEventListener()
  115. self.uiBase:AddButtonEventListener(self.btnClose.button,self,self.OnClickClose)
  116. self.uiBase:AddButtonEventListener(self["hero1"].fruit1BtnUse.button,function()
  117. self:SendNetMessage(1,1)
  118. end)
  119. self.uiBase:AddButtonEventListener(self["hero1"].fruit2BtnUse.button,function()
  120. self:SendNetMessage(1,2)
  121. end)
  122. local partnerDatas = self.controller:GetSlotSortPartnerDatas()
  123. for i = 1, #partnerDatas do
  124. self.uiBase:AddButtonEventListener(self["hero"..(i + 1)].fruit1BtnUse.button,function()
  125. self:SendNetMessage(partnerDatas[i].id,1)
  126. end)
  127. self.uiBase:AddButtonEventListener(self["hero"..(i + 1)].fruit2BtnUse.button,function()
  128. self:SendNetMessage(partnerDatas[i].id,2)
  129. end)
  130. end
  131. end
  132. function UIFruitUseView:OnHide()
  133. end
  134. function UIFruitUseView:OnShow(data)
  135. self.controller:SetData(data)
  136. end
  137. function UIFruitUseView:OnClose()
  138. end
  139. function UIFruitUseView:OnDispose()
  140. self.cfgData = nil
  141. self.itemCfgData = nil
  142. if self.delayTimer then
  143. self.delayTimer:Stop()
  144. end
  145. self.delayTimer = nil
  146. self.controller:OnDispose()
  147. end
  148. return UIFruitUseView