UIPetAdvenceView.lua 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. local UIPetAdvenceView = require("UIPet/UIPetAdvenceView_Generate")
  2. local PetMatsGridView = require("UIPet/PetMatsGridView")
  3. local petMatsGridView
  4. local zenyLack = false
  5. function UIPetAdvenceView:OnAwake(data)
  6. self.controller = require("UIPet/UIPetAdvenceCtr"):new()
  7. self.controller:Init(self)
  8. self.controller:SetData(data)
  9. end
  10. function UIPetAdvenceView:AddEventListener()
  11. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  12. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.PET_ADVENCE_REFRESH_NTF, self, self.OnAdvenceCallBackNtf)
  13. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.VIP_LV_CHANGED, self, self.OnVipLvChanged)
  14. end
  15. function UIPetAdvenceView:FillContent(data, uiBase)
  16. self.uiBase = uiBase
  17. local gameObject = self.uiBase:GetRoot()
  18. if gameObject ~= nil then
  19. self.gameObject = gameObject
  20. self.transform = gameObject.transform
  21. end
  22. self:InitGenerate(self.transform, data)
  23. self:Init()
  24. end
  25. function UIPetAdvenceView:Init()
  26. if not petMatsGridView then
  27. petMatsGridView = PetMatsGridView:new()
  28. petMatsGridView:Init(Enum.ItemIEnterType.PetMats, self, self.mats.loopGridView)
  29. end
  30. self:RefreshConditionDsc()
  31. self:Refresh()
  32. end
  33. function UIPetAdvenceView:Refresh(resetPos)
  34. if petMatsGridView then
  35. petMatsGridView:Refresh(resetPos)
  36. end
  37. self:RefreshSelections()
  38. self:RefreshAttrs()
  39. self:RefreshCost()
  40. end
  41. function UIPetAdvenceView:RefreshSelections()
  42. local selections = self.controller:GetSelections()
  43. for i = 1, 3 do
  44. local selection = selections[i]
  45. local item = self["item"..i]
  46. item.owned:SetActive(selection ~= nil)
  47. item.unowned:SetActive(selection == nil)
  48. if selection then
  49. local petData = self.controller:GetSelectionPetData(selection)
  50. CommonUtil.UpdateItemPrefab(self, item.iconPetItem, petData, Enum.ItemIEnterType.Pet, self, self.OnRemoveMatClick)
  51. end
  52. end
  53. local petData = clone(self.controller:GetSelectionPetData(selections[1]))
  54. petData.advanceLevel = petData.advanceLevel + 1
  55. petData.selected = 0
  56. CommonUtil.UpdateItemPrefab(self, self.item4.iconPetItem, petData, Enum.ItemIEnterType.Pet)
  57. end
  58. function UIPetAdvenceView:OnRemoveMatClick(button, params)
  59. local petData = params[0]
  60. if petData.id == self.controller:GetData() then
  61. return
  62. end
  63. self:RemoveMat(petData)
  64. self:RefreshSelections()
  65. end
  66. function UIPetAdvenceView:RemoveMat(data, itemlua)
  67. self.controller:RemoveSelection(data.selected)
  68. if itemlua then
  69. itemlua.selected:SetActive(false)
  70. else
  71. local data1 = self.controller:GetPetDataById(data.id)
  72. if data1 then
  73. local itemlua = petMatsGridView:GetShowItemByIdx(data1.idx)
  74. if itemlua then
  75. itemlua.selected:SetActive(false)
  76. end
  77. end
  78. end
  79. end
  80. function UIPetAdvenceView:RefreshConditionDsc()
  81. local id = self.controller:GetData()
  82. local curPetData = ManagerContainer.DataMgr.PetDataMgr:GetPetDataById(id)
  83. local curPetCfgData = ManagerContainer.CfgMgr:GetPetProgressCfgDataById(curPetData.cfgId)
  84. local nextAdvenceLv = curPetData.advanceLevel + 1
  85. local condition = curPetCfgData["Condition"..nextAdvenceLv.."1"]
  86. if condition then
  87. local typeDsc, advenceDsc, natureDsc
  88. local typeNum, advenceNum, natureNum
  89. for k,v in pairs(condition) do
  90. local type = v[1]
  91. local num = v[2]
  92. if type == Enum.PetRelationConditionType.Type then
  93. typeDsc = type
  94. typeNum = num
  95. elseif type == Enum.PetRelationConditionType.Advence then
  96. advenceDsc = type
  97. advenceNum = num
  98. elseif type == Enum.PetRelationConditionType.Nature then
  99. natureDsc = type
  100. natureNum = num
  101. end
  102. end
  103. local content = ""
  104. if typeDsc then
  105. if typeNum == 1 then
  106. content = content .. "Normal"
  107. elseif typeNum == 2 then
  108. content = content.. "Mini"
  109. elseif typeNum == 3 then
  110. content = content .. "Mvp"
  111. end
  112. end
  113. if advenceDsc then
  114. content = content .. I18N.SetLanguageValue("Petadfetter_002", advenceNum)
  115. end
  116. if natureDsc then
  117. content = content .. I18N.SetLanguageValue("Petadfetter_003", I18N.T("RoleFilter"..natureNum))
  118. end
  119. if curPetData.advanceLevel >= 5 then
  120. self.dsc.uILocalizeScript:SetContent("Petadvance_007")
  121. else
  122. self.dsc.uILocalizeScript:SetContentAndValues("Petadvance_004", {content})
  123. end
  124. end
  125. end
  126. function UIPetAdvenceView:RefreshAttrs()
  127. local id = self.controller:GetData()
  128. local petData = ManagerContainer.DataMgr.PetDataMgr:GetPetDataById(id)
  129. local petProgressCfgData = ManagerContainer.CfgMgr:GetPetProgressCfgDataById(petData.cfgId)
  130. local nextAdvenceLv = petData.advanceLevel + 1
  131. local data = petProgressCfgData["Attribute"..(nextAdvenceLv)]
  132. if data == nil then
  133. LogError(logicData.configId.." 宠物进阶 "..nextAdvenceLv.." 进阶属性错误")
  134. return
  135. end
  136. local curMaxLv, nextMaxLv = self.controller:GetCurAdvenceMaxLv()
  137. --self.attrs.lVLimit.text.text.text = I18N.T("LVLimit")
  138. self.attrs.lVLimit.number1.text.text = curMaxLv
  139. self.attrs.lVLimit.number2.text.text = nextMaxLv
  140. self.attrs.lVLimit:SetActive(true)
  141. local idx = 0
  142. for i = 1, 5 do
  143. local v = data[i]
  144. idx = idx + 1
  145. local attr = self.attrs["attr"..idx]
  146. attr:SetActive(v ~= nil)
  147. if attr and v then
  148. local key = v[1]
  149. local val = self.controller:GetCurPetAttr(key)
  150. if val then
  151. val = SDataUtil.InvConvert(val)
  152. attr.text.text.text = I18N.T("Attr_" .. v[1])
  153. val = key > 21 and CommonUtil.GetPreciseDecimal(val, 3) or math.floor(val)
  154. local val1 = key > 21 and CommonUtil.GetPreciseDecimal(v[2]*0.0001, 3) or math.floor(v[2])
  155. attr.number1.text.text = CommonUtil.HeroAttrFormatValue(key, val, true)
  156. attr.number2.text.text = CommonUtil.HeroAttrFormatValue(key, val + val1, true)
  157. end
  158. end
  159. end
  160. end
  161. function UIPetAdvenceView:RefreshCost()
  162. if self.controller:IsAdvenceFree() then
  163. zenyLack = false
  164. CommonUtil.IsConditionOutColor(self.cost1.num.text, false, string.formatbykey('Free'))
  165. return
  166. end
  167. local id = self.controller:GetData()
  168. local petData = ManagerContainer.DataMgr.PetDataMgr:GetPetDataById(id)
  169. local petProgressCfgData = ManagerContainer.CfgMgr:GetPetProgressCfgDataById(petData.cfgId)
  170. local nextAdvenceLv = petData.advanceLevel + 1
  171. local zenyCost = petProgressCfgData.CostMoney[nextAdvenceLv]
  172. local zenyOwned = CommonUtil.GetOwnResCountByItemId(Enum.ItemIds.Coin)
  173. zenyLack = zenyCost > zenyOwned
  174. CommonUtil.IsConditionOutColor(self.cost1.num.text, zenyCost > zenyOwned, CommonUtil.FormatNumber(zenyCost))
  175. end
  176. function UIPetAdvenceView:OnItemClick(button, params)
  177. local data = params[0]
  178. local itemlua = params[1]
  179. if data.isBattle then
  180. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("Petcompound_007")
  181. return
  182. end
  183. if data.id == self.controller:GetData() then
  184. return
  185. end
  186. if self.controller:IsInSelections(data.id) then
  187. self:RemoveMat(data, itemlua)
  188. else
  189. self.clickPetId = data.id
  190. self.curSelectedData = data
  191. self.curSelectedItemlua = itemlua
  192. if data.isRelevant then
  193. local data = {"PetCostNotify8", nil, nil, self, self.PetClickSure}
  194. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  195. return
  196. end
  197. if data.level > 1 or self.controller:WasSkillUp(data) then
  198. local data = {"PetCostNotify4", nil, nil, self, self.PetClickSure}
  199. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  200. return
  201. end
  202. if data.quality > 2 then
  203. local data = {"PetCostNotify9", nil, nil, self, self.PetClickSure}
  204. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  205. return
  206. end
  207. self:PetClickSure()
  208. end
  209. self:RefreshSelections()
  210. end
  211. function UIPetAdvenceView:PetClickSure()
  212. if self.clickPetId then
  213. local lastSelectedId = self.controller:AddSelection(self.clickPetId)
  214. if self.curSelectedItemlua then
  215. self.curSelectedItemlua.selected:SetActive(true)
  216. end
  217. self.clickPetId = nil
  218. self.curSelectedData = nil
  219. self.curSelectedItemlua = nil
  220. local data1 = self.controller:GetPetDataById(lastSelectedId)
  221. if data1 then
  222. local itemlua = petMatsGridView:GetShowItemByIdx(data1.idx)
  223. if itemlua then
  224. itemlua.selected:SetActive(false)
  225. end
  226. end
  227. self:RefreshSelections()
  228. end
  229. end
  230. function UIPetAdvenceView:RemoveEventListener()
  231. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  232. end
  233. function UIPetAdvenceView:AddUIEventListener()
  234. self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnCloseClick)
  235. self.uiBase:AddButtonEventListener(self.AnyBtn.button, self, self.OnCloseClick)
  236. self.uiBase:AddButtonEventListener(self.btnSure.button, self, self.OnSureClick)
  237. end
  238. function UIPetAdvenceView:OnCloseClick()
  239. self:UIClose()
  240. end
  241. function UIPetAdvenceView:OnSureClick()
  242. if zenyLack then
  243. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("Petadvance_001")
  244. return
  245. end
  246. local selections = self.controller:GetSelections()
  247. if #selections < 3 then
  248. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("Petadvance_005")
  249. return
  250. end
  251. self.controller:SendPetAdvence()
  252. end
  253. function UIPetAdvenceView:OnAdvenceCallBackNtf()
  254. self:OnCloseClick()
  255. end
  256. function UIPetAdvenceView:OnVipLvChanged()
  257. self:RefreshCost()
  258. end
  259. function UIPetAdvenceView:OnHide()
  260. if petMatsGridView then
  261. petMatsGridView:OnHide()
  262. end
  263. end
  264. function UIPetAdvenceView:OnShow(data)
  265. self.controller:SetData(data)
  266. end
  267. function UIPetAdvenceView:OnClose()
  268. end
  269. function UIPetAdvenceView:OnDispose()
  270. self.curSelectedData = nil
  271. self.curSelectedItemlua = nil
  272. if petMatsGridView then
  273. petMatsGridView:OnDispose()
  274. petMatsGridView = nil
  275. end
  276. self.controller:OnDispose()
  277. end
  278. return UIPetAdvenceView