UIGuildWarBuffView.lua 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. local UIGuildWarBuffView = require("UIGuildWar/UIGuildWarBuffView_Generate")
  2. function UIGuildWarBuffView:OnAwake(data)
  3. self.controller = require("UIGuildWar/UIGuildWarBuffCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UIGuildWarBuffView:AddEventListener()
  8. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_WAR_BATTLE_FIELD_ENDED, self, self.OnBattleFieldEnded)
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_WAR_BATTLE_SELF_DATA_CHANGED, self, self.OnSelfDataChanged)
  10. end
  11. function UIGuildWarBuffView:FillContent(data, uiBase)
  12. self.uiBase = uiBase
  13. local gameObject = self.uiBase:GetRoot()
  14. if gameObject ~= nil then
  15. self.gameObject = gameObject
  16. self.transform = gameObject.transform
  17. end
  18. self:InitGenerate(self.transform, data)
  19. self:Init()
  20. end
  21. function UIGuildWarBuffView:Init()
  22. self.buyBuffItemPool = {self.guildWarBuyBuffItem}
  23. self:RefreshView()
  24. end
  25. function UIGuildWarBuffView:RemoveEventListener()
  26. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  27. end
  28. function UIGuildWarBuffView:AddUIEventListener()
  29. self.uiBase:AddButtonUniqueEventListener(self.AnyBtn.button, self, self.OnClickCloseBtn)
  30. self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
  31. end
  32. function UIGuildWarBuffView:OnHide()
  33. end
  34. function UIGuildWarBuffView:OnShow(data)
  35. self.controller:SetData(data)
  36. end
  37. function UIGuildWarBuffView:OnClose()
  38. end
  39. function UIGuildWarBuffView:OnDispose()
  40. if self.buyBuffItemPool then
  41. for _,buyBuffItem in pairs(self.buyBuffItemPool) do
  42. if buyBuffItem and buyBuffItem ~= self.guildWarBuyBuffItem then
  43. CommonUtil.DestroyGO(buyBuffItem.gameObject)
  44. end
  45. end
  46. self.buyBuffItemPool = nil
  47. end
  48. self.controller:OnDispose()
  49. end
  50. function UIGuildWarBuffView:OnBattleFieldEnded(battleIdx)
  51. local battleFieldData = self.controller:GetBattleFieldData()
  52. if battleFieldData and battleFieldData.id ~= battleIdx then return end
  53. self:UIClose()
  54. ManagerContainer.LuaUIMgr:CloseMessageBox('GuildWarBuyBuffTip')
  55. end
  56. function UIGuildWarBuffView:OnSelfDataChanged()
  57. self:RefreshView()
  58. end
  59. function UIGuildWarBuffView:OnClickCloseBtn()
  60. self:UIClose()
  61. end
  62. function UIGuildWarBuffView:SureBuy(buffCfg)
  63. if not buffCfg then return end
  64. local battleFieldData = self.controller:GetBattleFieldData()
  65. local lv = 0
  66. if battleFieldData and battleFieldData.buffDic then
  67. lv = battleFieldData.buffDic[buffCfg.Id] or 0
  68. end
  69. lv = lv + 1
  70. local price = buffCfg.Price
  71. if price and price[lv] then
  72. local costCfgId = price[lv][1]
  73. local costNum = price[lv][2]
  74. local ownNum = self.controller:GetOwnResCountByItemId(costCfgId)
  75. if ownNum < costNum then
  76. CommonUtil.ItemNotEnoughHandle(costCfgId, Enum.UIPageName.UIGuildWar)
  77. self:UIClose()
  78. return
  79. end
  80. local errorCode = self.controller:SendGuildWarBuyBuffReq(buffCfg.Id)
  81. if errorCode ~= 0 then
  82. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  83. end
  84. else
  85. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildWarBattle13')
  86. end
  87. end
  88. function UIGuildWarBuffView:OnClickBuyBtn(_, params)
  89. local buffCfg = params[0]
  90. if not buffCfg then return end
  91. local battleFieldData = self.controller:GetBattleFieldData()
  92. local lv = 0
  93. if battleFieldData and battleFieldData.buffDic then
  94. lv = battleFieldData.buffDic[buffCfg.Id] or 0
  95. end
  96. lv = lv + 1
  97. local price = buffCfg.Price
  98. if price and price[lv] then
  99. local costCfgId = price[lv][1]
  100. local costNum = price[lv][2]
  101. local ownNum = self.controller:GetOwnResCountByItemId(costCfgId)
  102. if ownNum < costNum then
  103. CommonUtil.ItemNotEnoughHandle(costCfgId, Enum.UIPageName.UIGuildWar)
  104. self:UIClose()
  105. return
  106. end
  107. local itemName = tostring(costNum)
  108. local cfgData = ManagerContainer.CfgMgr:GetItemById(costCfgId)
  109. if cfgData then
  110. itemName = itemName .. string.formatbykey(cfgData.Name)
  111. end
  112. local data = {'GuildWarBuyBuffTip', {buffCfg.Desc, itemName}, buffCfg, self, self.SureBuy}
  113. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  114. else
  115. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildWarBattle13')
  116. end
  117. end
  118. function UIGuildWarBuffView:RefreshView()
  119. local buffCfgs = self.controller:GetBuffCfgs()
  120. local battleFieldData = self.controller:GetBattleFieldData()
  121. local len = #buffCfgs
  122. for i = 1, len do
  123. local buffCfg = buffCfgs[i]
  124. local itemLua = self:GetBuyBuffItem(i)
  125. itemLua:SetActive(true)
  126. itemLua.icon.image.enabled = false
  127. itemLua.icon.image.sprite = nil
  128. CommonUtil.LoadIcon(self, buffCfg.Icon, function(sprite)
  129. if sprite then
  130. itemLua.icon.image.sprite = sprite
  131. itemLua.icon.image.enabled = true
  132. end
  133. end)
  134. local lv = 0
  135. if battleFieldData and battleFieldData.buffDic then
  136. lv = battleFieldData.buffDic[buffCfg.Id] or 0
  137. end
  138. itemLua.num.text.text = tostring(lv)
  139. itemLua.dsc.text.text = string.formatbykey(buffCfg.Desc)
  140. local price = buffCfg.Price
  141. for j = 1, 10 do
  142. local lvLua = itemLua['lv' .. tostring(j)]
  143. if price and price[j] then
  144. lvLua:SetActive(true)
  145. lvLua.uIImageSwitchSprite:ChangeSprite((lv < j) and 0 or 1)
  146. else
  147. lvLua:SetActive(false)
  148. end
  149. end
  150. self.uiBase:AddButtonUniqueEventListener(itemLua.btnBuy.button, self, self.OnClickBuyBtn, buffCfg)
  151. end
  152. for i = len + 1, #self.buyBuffItemPool do
  153. local itemLua = self.buyBuffItemPool[i]
  154. itemLua:SetActive(false)
  155. end
  156. end
  157. function UIGuildWarBuffView:GetBuyBuffItem(offsetIdx)
  158. local itemLua = self.buyBuffItemPool[offsetIdx]
  159. if not itemLua then
  160. local newGo = UnityEngine.GameObject.Instantiate(self.guildWarBuyBuffItem.gameObject)
  161. itemLua = CommonUtil.BindGridViewItem2Lua(self, 'GuildWarBuyBuffItem', newGo)
  162. itemLua.transform:SetParent(self.dscBox.transform)
  163. itemLua.transform.localPosition = Vector3.zero
  164. itemLua.transform.localScale = Vector3.one
  165. itemLua.transform.localRotation = Quaternion.identity
  166. self.buyBuffItemPool[offsetIdx] = itemLua
  167. end
  168. return itemLua
  169. end
  170. return UIGuildWarBuffView