UIPetDecomposeView.lua 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. local UIPetDecomposeView = require("UIPet/UIPetDecomposeView_Generate")
  2. local PetMatsGridView = require("UIPet/PetMatsGridView")
  3. local IconItemCtr = require "Common/IconItemCtr"
  4. local DecomposeType = {
  5. Pet = 1,
  6. SkillEquip = 2,
  7. }
  8. local petMatsGridView
  9. local decomposeLimit = 15
  10. local autoQualityLimit = 1
  11. local oneKeyState = false
  12. function UIPetDecomposeView:OnAwake(data)
  13. self.controller = require("UIPet/UIPetDecomposeCtr"):new()
  14. self.controller:Init(self)
  15. self.controller:SetData(data)
  16. end
  17. function UIPetDecomposeView:AddEventListener()
  18. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  19. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.PET_DECOMPOSE_SUCCESS_NTF, self, self.OnDecomposeSuccessNTF)
  20. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.FILTER_NTF, self, self.RefreshCardDatasByFilter)
  21. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.VIP_LV_CHANGED, self, self.OnVipLvChanged)
  22. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SKILL_EQUIP_DECOMPOSE_REFRESH, self, self.OnDecomposeSuccessNTF)
  23. end
  24. function UIPetDecomposeView:FillContent(data, uiBase)
  25. self.uiBase = uiBase
  26. local gameObject = self.uiBase:GetRoot()
  27. if gameObject ~= nil then
  28. self.gameObject = gameObject
  29. self.transform = gameObject.transform
  30. end
  31. self:InitGenerate(self.transform, data)
  32. self:Init()
  33. end
  34. function UIPetDecomposeView:Init()
  35. decomposeLimit = GlobalConfig.Instance:GetConfigIntValue(227)
  36. autoQualityLimit = GlobalConfig.Instance:GetConfigIntValue(271)
  37. local type = self.controller:GetData()
  38. self.btnPetShop:SetActive(type == DecomposeType.Pet)
  39. self:RefreshUIText(type)
  40. if not petMatsGridView then
  41. petMatsGridView = PetMatsGridView:new()
  42. end
  43. if type == DecomposeType.Pet then
  44. local percent = self.controller:GetVipPercent()
  45. self.decomposeDsc.uILocalizeScript:SetContentAndValues("DscPetDecomposeAll", {percent * 100})
  46. if petMatsGridView then
  47. petMatsGridView:Init(Enum.ItemIEnterType.PetMats, self, self.scrollview.loopGridView)
  48. end
  49. else
  50. self.decomposeDsc.uILocalizeScript:SetContent("ArtifactSmeltTips")
  51. if petMatsGridView then
  52. petMatsGridView:Init(Enum.ItemIEnterType.SkillEquip, self, self.scrollview.loopGridView)
  53. end
  54. end
  55. -- self.returnUI.scrollView.loopListView:InitListView(0, function(gridView, itemIndex, row, column)
  56. -- return self:GetItemByIndex(gridView, itemIndex, row, column)
  57. -- end, nil)
  58. -- self:Refresh()
  59. end
  60. function UIPetDecomposeView:OnPageInEnd()
  61. self.super.OnPageInEnd(self)
  62. self:Refresh()
  63. end
  64. function UIPetDecomposeView:RefreshUIText(type)
  65. if type == DecomposeType.Pet then
  66. self.boardTitle.uILocalizeScript:SetContent("TitlePetDecompose")
  67. self.decompose.text.uILocalizeScript:SetContent("DscChooseAdvenceMet")
  68. self.btnDecompose.text.uILocalizeScript:SetContent("BtnDecompose")
  69. self.noticeTitle.uILocalizeScript:SetContent("TitlePetDecompose")
  70. self.btnSure.uILocalizeScript:SetContent("BtnDecompose")
  71. self.desTxt.uILocalizeScript:SetContent("DscNoPets")
  72. elseif type == DecomposeType.SkillEquip then
  73. self.boardTitle.uILocalizeScript:SetContent("ArtifactSmelTitle")
  74. self.decompose.text.uILocalizeScript:SetContent("ArtifactSmeltType")
  75. self.btnDecompose.text.uILocalizeScript:SetContent("ArtifactSmeltButton")
  76. self.noticeTitle.uILocalizeScript:SetContent("ArtifactSmelTitle")
  77. self.btnSure.uILocalizeScript:SetContent("ArtifactSmeltButton")
  78. self.desTxt.uILocalizeScript:SetContent("DscNoArtifact")
  79. end
  80. end
  81. function UIPetDecomposeView:RefreshCount()
  82. local type = self.controller:GetData()
  83. local count = self.controller:GetSelectedPetLength()
  84. local defaultCount = self.controller:GetDefaultCount()
  85. local autoSelectedCount = self.controller:GetAutoSelectedPetCount()
  86. self.number.text.text = count.."/"..decomposeLimit
  87. oneKeyState = defaultCount > 0 and count >= defaultCount
  88. self.btnOneKey.on:SetActive(oneKeyState)
  89. self.btnOneKey.off:SetActive(not oneKeyState)
  90. if type == DecomposeType.Pet then
  91. self.btnOneKey.text.uILocalizeScript:SetContent(oneKeyState and "TextAutoChoose_001" or "TextAutoChoose")
  92. elseif type == DecomposeType.SkillEquip then
  93. self.btnOneKey.text.uILocalizeScript:SetContent(oneKeyState and "TextAutoChoose_001" or "TextAutoChoose")
  94. end
  95. end
  96. function UIPetDecomposeView:OnDecomposeSuccessNTF()
  97. oneKeyState = false
  98. self.controller:OneKeyCancelSelectedPet()
  99. self.controller:ClearSelected()
  100. self:Refresh(true)
  101. end
  102. function UIPetDecomposeView:RefreshCardDatasByFilter(uiId, data, isFilter)
  103. if uiId ~= self.uiData.id then return end
  104. self.controller:SetFilterData(data, isFilter)
  105. self.controller:ClearSelected()
  106. self:Refresh()
  107. end
  108. function UIPetDecomposeView:OnVipLvChanged()
  109. self:RefreshReturnUI()
  110. end
  111. function UIPetDecomposeView:Refresh(resetPos)
  112. if petMatsGridView then
  113. petMatsGridView:Refresh(resetPos)
  114. end
  115. self:RefreshCount()
  116. self.btnFilter.check:SetActive(self.controller:GetIsFilter())
  117. end
  118. function UIPetDecomposeView:OnItemClick(button, params)
  119. local data = params[0]
  120. local itemlua = params[1]
  121. local isSelected, idx = self.controller:IsSelected(data.id)
  122. if not isSelected then
  123. local type = self.controller:GetData()
  124. if type == DecomposeType.Pet then
  125. if data.isBattle then
  126. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("Petcompound_007")
  127. return
  128. end
  129. local selectedCount = self.controller:GetSelectedPetLength()
  130. if selectedCount >= decomposeLimit then
  131. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("Petcompound_001")
  132. return
  133. end
  134. if data.isRelevant then
  135. local data = {"PetCostNotify7", nil, {data, itemlua}, self, self.ItemClickSure}
  136. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  137. return
  138. end
  139. if data.quality > autoQualityLimit then
  140. local data = {"PetCostNotify3", nil, {data, itemlua}, self, self.ItemClickSure}
  141. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  142. return
  143. end
  144. if self.controller:WasSkillUp(data) then
  145. local data = {"PetCostNotify2", nil, {data, itemlua}, self, self.ItemClickSure}
  146. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  147. return
  148. end
  149. if data.advanceLevel > 0 then
  150. local data = {"PetCostNotify5", nil, {data, itemlua}, self, self.ItemClickSure}
  151. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  152. return
  153. end
  154. if data.level > 1 then
  155. local data = {"PetCostNotify1", nil, {data, itemlua}, self, self.ItemClickSure}
  156. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  157. return
  158. end
  159. elseif type == DecomposeType.SkillEquip then
  160. -- if data.quality > autoQualityLimit then
  161. -- local data = {"SkillEquipDecomposeTip1", nil, {data, itemlua}, self, self.ItemClickSure}
  162. -- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  163. -- return
  164. -- end
  165. if data.starLv > 0 then
  166. local data = {"SkillEquipDecomposeTip2", nil, {data, itemlua}, self, self.ItemClickSure}
  167. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  168. return
  169. end
  170. end
  171. self:AddSelectedPet(data.id, itemlua)
  172. else
  173. self:RemoveSelectedPet(data.id, idx, itemlua)
  174. end
  175. self:RefreshCount()
  176. end
  177. function UIPetDecomposeView:ItemClickSure(params)
  178. local data = params[1]
  179. local itemlua = params[2]
  180. self:AddSelectedPet(data.id, itemlua)
  181. self:RefreshCount()
  182. end
  183. function UIPetDecomposeView:AddSelectedPet(id, itemlua)
  184. local result = self.controller:AddSelectedId(id)
  185. if result then
  186. itemlua.selected:SetActive(true)
  187. end
  188. end
  189. function UIPetDecomposeView:RemoveSelectedPet(id, idx, itemlua)
  190. self.controller:RemoveSeletedId(id)
  191. itemlua.selected:SetActive(false)
  192. end
  193. function UIPetDecomposeView:RefreshReturnUI()
  194. local data, percent = self.controller:DecomposeReturnCalc()
  195. local type = self.controller:GetData()
  196. if type == DecomposeType.Pet then
  197. self.dscTxt.uILocalizeScript:SetContentAndValues("DscPetDecomposeAll", {percent * 100})
  198. elseif type == DecomposeType.SkillEquip then
  199. self.dscTxt.uILocalizeScript:SetContent("ArtifactSmeltTips")
  200. end
  201. -- local loopListView = self.returnUI.scrollView.loopListView
  202. -- local length = self.controller:GetCurCostReturnLength()
  203. -- loopListView:SetListItemCount(length)
  204. -- loopListView:RefreshAllShownItem()
  205. for i = 1, self.returnUI.content.transform.childCount do
  206. self.returnUI.content.transform:GetChild(i - 1).gameObject:SetActive(false)
  207. end
  208. local idx = 0
  209. for _,v in pairs(data) do
  210. if v.num > 0 then
  211. idx = idx + 1
  212. local cfgId = v.cfgId
  213. local cfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
  214. local num = v.num
  215. local data1 = {cfgId = v.cfgId, num = num}
  216. CommonUtil.BatchCreateItemsLoopSpawnItem(self, cfgData.ResType, self.returnUI.content.transform, data1, idx, Enum.ItemIEnterType.Bag, self, self.OnRewardClick)
  217. end
  218. end
  219. self.returnUI:SetActive(true)
  220. end
  221. function UIPetDecomposeView:GetItemByIndex(loopListView, itemIndex)
  222. local data = self.controller:GetCostReturnByIdx(itemIndex)
  223. if not data then return end
  224. local item = loopListView:NewListViewItem('IconItem')
  225. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'IconItem', item.gameObject)
  226. if itemLua then
  227. IconItemCtr:SetData(self, itemLua, data, Enum.ItemIEnterType.Bag, self, self.OnRewardClick)
  228. end
  229. return item
  230. end
  231. function UIPetDecomposeView:RemoveEventListener()
  232. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  233. end
  234. function UIPetDecomposeView:AddUIEventListener()
  235. self.uiBase:AddButtonEventListener(self.btnBack.button, self, self.OnCloseClick)
  236. self.uiBase:AddButtonEventListener(self.btnOneKey.button, self, self.OnOneKeyClick)
  237. self.uiBase:AddButtonEventListener(self.btnDecompose.button, self, self.OnDecomposeClick)
  238. self.uiBase:AddButtonEventListener(self.returnUI.btnRight.button, self, self.OnReturnSure)
  239. self.uiBase:AddButtonEventListener(self.returnUI.btnCancle.button, self, self.OnCloseReturn)
  240. self.uiBase:AddButtonEventListener(self.returnUI.btnClose.button, self, self.OnCloseReturn)
  241. self.uiBase:AddButtonEventListener(self.btnPlayRule.button, self, self.OnClickPlayRuleBtn)
  242. self.uiBase:AddButtonEventListener(self.btnFilter.button, self, self.OnFilterClick)
  243. self.uiBase:AddButtonUniqueEventListener(self.btnPetShop.button, self, self.OnClickPetShopBtn)
  244. end
  245. function UIPetDecomposeView:OnFilterClick()
  246. local data = {uiId = self.uiData.id, enter = Enum.ItemIEnterType.Pet, filterData = self.controller:GetFilterData()}
  247. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIFilter, data)
  248. end
  249. function UIPetDecomposeView:OnCloseClick()
  250. ManagerContainer.LuaUIMgr:OpenSourceUI(self)
  251. end
  252. function UIPetDecomposeView:OnClickPlayRuleBtn()
  253. local type = self.controller:GetData()
  254. if type == DecomposeType.Pet then
  255. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayRule, {'PlayExplainTitle', 'PetText002'})
  256. elseif type == DecomposeType.SkillEquip then
  257. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayRule, {'PlayExplainTitle', 'ArtifactSmeltButtonTips'})
  258. end
  259. end
  260. function UIPetDecomposeView:OnClickPetShopBtn()
  261. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIShop, 5, self.uiData.id)
  262. end
  263. function UIPetDecomposeView:OnOneKeyClick()
  264. local type = self.controller:GetData()
  265. local selectedCount = self.controller:GetSelectedPetLength()
  266. local autoSelectedCount = self.controller:GetAutoSelectedPetCount()
  267. if selectedCount == 0 and autoSelectedCount == 0 then
  268. if type == DecomposeType.Pet then
  269. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("Petcompound_002")
  270. elseif type == DecomposeType.SkillEquip then
  271. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("ArtifactSmeltButtonTips1")
  272. end
  273. return
  274. end
  275. if not oneKeyState then
  276. self.controller:OneKeySelectPet()
  277. else
  278. self.controller:OneKeyCancelSelectedPet()
  279. end
  280. --oneKeyState = not oneKeyState
  281. --self.btnOneKey.on:SetActive(oneKeyState)
  282. --self.btnOneKey.off:SetActive(not oneKeyState)
  283. self:Refresh(true)
  284. end
  285. function UIPetDecomposeView:OnDecomposeClick()
  286. local length = self.controller:GetSelectedPetLength()
  287. if length == 0 then
  288. return
  289. end
  290. self:RefreshReturnUI()
  291. end
  292. function UIPetDecomposeView:OnRewardClick(button, params)
  293. local data = params[0]
  294. ManagerContainer.LuaUIMgr:OpenTips(data)
  295. end
  296. function UIPetDecomposeView:OnReturnSure()
  297. self.controller:SendPetDecompose()
  298. self:OnCloseReturn()
  299. end
  300. function UIPetDecomposeView:OnCloseReturn()
  301. self.returnUI:SetActive(false)
  302. end
  303. function UIPetDecomposeView:OnHide()
  304. if petMatsGridView then
  305. petMatsGridView:OnHide()
  306. end
  307. end
  308. function UIPetDecomposeView:OnShow(data)
  309. self.controller:SetData(data)
  310. end
  311. function UIPetDecomposeView:OnClose()
  312. if petMatsGridView then
  313. petMatsGridView:OnDispose()
  314. petMatsGridView = nil
  315. end
  316. end
  317. function UIPetDecomposeView:OnDispose()
  318. self.controller:OnDispose()
  319. end
  320. return UIPetDecomposeView