UIArtifactReforgeView.lua 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495
  1. local UIArtifactReforgeView = require("UIArtifactTips/UIArtifactReforgeView_Generate")
  2. local IconItemCtr = require "Common.IconItemCtr"
  3. local pageToggleData = {}
  4. local transCost
  5. function UIArtifactReforgeView:OnAwake(data)
  6. self.controller = require("UIArtifactTips/UIArtifactReforgeCtr"):new()
  7. self.controller:Init(self)
  8. self.controller:SetData(data)
  9. end
  10. function UIArtifactReforgeView:AddEventListener()
  11. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  12. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SKILL_EQUIP_REFORGE_SUCCESS, self, self.ReforgeSuccess)
  13. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.DIAMOND_CHANGED, self, self.RefreshCost)
  14. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SKILL_EQUIP_SHIFT_REFRESH, self, self.TransSuccess)
  15. end
  16. function UIArtifactReforgeView:FillContent(data, uiBase)
  17. self.uiBase = uiBase
  18. local gameObject = self.uiBase:GetRoot()
  19. if gameObject ~= nil then
  20. self.gameObject = gameObject
  21. self.transform = gameObject.transform
  22. end
  23. self:InitGenerate(self.transform, data)
  24. self:Init()
  25. end
  26. function UIArtifactReforgeView:Init()
  27. local costStr = GlobalConfig.Instance:GetConfigStrValue(342)
  28. transCost = CommonUtil.DeserializeGlobalStrToNumberTable(costStr)
  29. self.fX_UI_ShenQi_01.uIParticle:PlayCachedParticalSystem(false)
  30. self.reforgeBox:SetActive(false)
  31. self.transBox:SetActive(false)
  32. self.mask:SetActive(false)
  33. self.selectedName:SetActive(false)
  34. self.slotIconItem:SetActive(false)
  35. self.transItem1Name:SetActive(false)
  36. self.transItem1:SetActive(false)
  37. self.transItem2Name:SetActive(false)
  38. self.transItem2:SetActive(false)
  39. -- self.unselected:SetActive(true)
  40. self.unselected.text.text.text = I18N.T("ArtifactReforgeDsc01")
  41. self:InitGrid()
  42. self.toggleGroup.toggleGroup:SetAllTogglesOff()
  43. self:RefreshCost()
  44. end
  45. function UIArtifactReforgeView:ReforgeSuccess(newSkillEquip)
  46. self.controller:SetCurSelectedIdx()
  47. self:ShowSelectedSkillEquip()
  48. self.fX_UI_ShenQi_01.uIParticle:PlayCachedParticalSystem(true)
  49. self.mask:SetActive(true)
  50. if self.delayShowTimer then
  51. self.delayShowTimer:Stop()
  52. self.delayShowTimer = nil
  53. end
  54. if not self.delayShowTimer then
  55. self.delayShowTimer = Timer.New(function()
  56. self:ShowReward(newSkillEquip)
  57. self.mask:SetActive(false)
  58. self:OnToggleSwitch()
  59. self.scrollview.loopGridView:RefreshAllShownItem()
  60. end, 2.5)
  61. end
  62. if not self.delayShowTimer.running then
  63. self.delayShowTimer:Start()
  64. end
  65. end
  66. function UIArtifactReforgeView:ShowReward(newSkillEquip)
  67. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SKILL_EQUIP_ADD_LIST, {{newSkillEquip.cfgId, 1, newSkillEquip.starLv}})
  68. end
  69. function UIArtifactReforgeView:InitGrid()
  70. self.scrollview.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  71. return self:GetItemByRowColumn(gridView, itemIndex, row, column)
  72. end, nil)
  73. end
  74. function UIArtifactReforgeView:OnToggleSwitch(idx)
  75. self.controller:RefrshShowDatas(pageToggleData.toggleDefaultIndex)
  76. self.reforgeBox:SetActive(pageToggleData.toggleDefaultIndex == 1)
  77. self.transBox:SetActive(pageToggleData.toggleDefaultIndex == 2)
  78. self:RefreshCurrency()
  79. self.btnArtifactReforge.number.text.text = 0
  80. self.fX_UI_ShenQi_01.uIParticle:PlayCachedParticalSystem(false)
  81. if pageToggleData.toggleDefaultIndex == 1 then
  82. self.unselected.text.text.text = I18N.T("ArtifactReforgeDsc01")
  83. self.btnArtifactReforge.text.uILocalizeScript:SetContent("BtnReforge")
  84. self.mask:SetActive(false)
  85. self.selectedName:SetActive(false)
  86. self.slotIconItem:SetActive(false)
  87. local cfgData = ManagerContainer.CfgMgr:GetItemById(Enum.ItemIds.Diamond)
  88. if cfgData.Icon and cfgData.Icon ~= '' then
  89. self.btnArtifactReforge.icon.image.enabled = false
  90. CommonUtil.LoadIcon(self, cfgData.Icon, function (sprite)
  91. self.btnArtifactReforge.icon.image.sprite = sprite
  92. self.btnArtifactReforge.icon.image.enabled = true
  93. end, 'ItemIcon1')
  94. end
  95. elseif pageToggleData.toggleDefaultIndex == 2 then
  96. self.TransUnselected.TransTips.text.text = I18N.T("ArtifactTransDsc01")
  97. self.btnArtifactReforge.text.uILocalizeScript:SetContent("BtnArtifactTransfer")
  98. self.transItem1Name:SetActive(false)
  99. self.transItem1:SetActive(false)
  100. self.transItem2Name:SetActive(false)
  101. self.transItem2:SetActive(false)
  102. local cfgData = ManagerContainer.CfgMgr:GetItemById(Enum.ItemIds.SkillEquipTransItem)
  103. if cfgData.Icon and cfgData.Icon ~= '' then
  104. self.btnArtifactReforge.icon.image.enabled = false
  105. CommonUtil.LoadIcon(self, cfgData.Icon, function (sprite)
  106. self.btnArtifactReforge.icon.image.sprite = sprite
  107. self.btnArtifactReforge.icon.image.enabled = true
  108. end, 'ItemIcon1')
  109. end
  110. end
  111. local loopGridView = self.scrollview.loopGridView
  112. local length = self.controller:GetShowDataLength()
  113. loopGridView:SetListItemCount(length, false)
  114. loopGridView:RefreshAllShownItem()
  115. end
  116. function UIArtifactReforgeView:RefreshCurrency()
  117. local cfgData, num
  118. if pageToggleData.toggleDefaultIndex == 1 then
  119. cfgData = ManagerContainer.CfgMgr:GetItemById(Enum.ItemIds.Diamond)
  120. num = CommonUtil.GetOwnResCountByItemId(Enum.ItemIds.Diamond)
  121. elseif pageToggleData.toggleDefaultIndex == 2 then
  122. cfgData = ManagerContainer.CfgMgr:GetItemById(Enum.ItemIds.SkillEquipTransItem)
  123. num = CommonUtil.GetOwnResCountByItemId(Enum.ItemIds.SkillEquipTransItem)
  124. end
  125. self.currencyIcon.image.enabled = false
  126. CommonUtil.LoadIcon(self, cfgData.Icon, function (sprite)
  127. self.currencyIcon.image.sprite = sprite
  128. self.currencyIcon.image.enabled = true
  129. end, 'CurrencyIcon')
  130. self.currencyNum.text.text = CommonUtil.FormatNumber(num)
  131. end
  132. function UIArtifactReforgeView:GetItemByRowColumn(gridView, itemIndex, row, column)
  133. local showData = self.controller:GetShowData(itemIndex)
  134. local item = nil
  135. if showData then
  136. item = gridView:NewListViewItem("IconItem")
  137. item.gameObject.name = itemIndex
  138. local itemlua = CommonUtil.BindGridViewItem2Lua(self, "IconItem", item.gameObject)
  139. CommonUtil.UpdateItemPrefab(self, itemlua, showData, Enum.ItemIEnterType.Bag, self, self.OnItemClick, itemIndex)
  140. itemlua.selected:SetActive(showData.reforgeSelected)
  141. else
  142. item = gridView:NewListViewItem('IconEmptyItem')
  143. end
  144. return item
  145. end
  146. function UIArtifactReforgeView:OnItemClick(button, params)
  147. local idx = params[2]
  148. if pageToggleData.toggleDefaultIndex == 1 then
  149. local oldIdx = self.controller:SetCurSelectedIdx(idx + 1)
  150. self:RefreshSelectedSkillEquipShow(oldIdx)
  151. elseif pageToggleData.toggleDefaultIndex == 2 then
  152. local result, oldIdx,newIdx = self.controller:SetTransSelected(idx + 1)
  153. if result > 0 then
  154. if result == 1 then
  155. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("ArtifactTransUnFull02")
  156. elseif result == 2 then
  157. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("ArtifactTransUnFull03")
  158. elseif result == 3 then
  159. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("ArtifactTransUnFull04")
  160. end
  161. return
  162. end
  163. self:RefreshTransSelectedSkillEquipShow(oldIdx)
  164. end
  165. end
  166. function UIArtifactReforgeView:RefreshSelectedSkillEquipShow(oldIdx)
  167. if oldIdx then
  168. local oldItemLua = self:GetSkillEquipItemByIdx(oldIdx)
  169. if oldItemLua then
  170. oldItemLua.selected:SetActive(false)
  171. end
  172. end
  173. local curIdx = self.controller:GetCurSelecteIdx()
  174. if curIdx then
  175. local curItemLua = self:GetSkillEquipItemByIdx(curIdx)
  176. curItemLua.selected:SetActive(true)
  177. end
  178. self:ShowSelectedSkillEquip()
  179. end
  180. function UIArtifactReforgeView:ShowSelectedSkillEquip()
  181. local curIdx = self.controller:GetCurSelecteIdx()
  182. self.selectedName:SetActive(curIdx ~= nil)
  183. self.slotIconItem:SetActive(curIdx ~= nil)
  184. -- self.unselected:SetActive(curIdx == nil)
  185. self.unselected.text.text.text = curIdx == nil and I18N.T("ArtifactReforgeDsc01") or I18N.T("ArtifactReforgeDsc02")
  186. if curIdx then
  187. local skillEquipData = self.controller:GetShowData(curIdx - 1)
  188. if skillEquipData then
  189. IconItemCtr:SetData(self, self.slotIconItem, skillEquipData, Enum.ItemIEnterType.Bag)
  190. local cfgData = ManagerContainer.CfgMgr:GetArtifactCfgDataByCfgId(skillEquipData.cfgId)
  191. self.selectedName.text.text = I18N.T(cfgData.Name)
  192. end
  193. end
  194. self:RefreshCost()
  195. end
  196. function UIArtifactReforgeView:RefreshTransSelectedSkillEquipShow(oldIdx)
  197. if oldIdx then
  198. local oldItemLua = self:GetSkillEquipItemByIdx(oldIdx)
  199. if oldItemLua then
  200. oldItemLua.selected:SetActive(false)
  201. end
  202. end
  203. local leftSelectedIdx, rightSelectedIdx = self.controller:GetTransSelectedIdx()
  204. if leftSelectedIdx then
  205. local curItemLua = self:GetSkillEquipItemByIdx(leftSelectedIdx)
  206. if curItemLua then
  207. curItemLua.selected:SetActive(true)
  208. end
  209. end
  210. if rightSelectedIdx then
  211. local curItemLua = self:GetSkillEquipItemByIdx(rightSelectedIdx)
  212. if curItemLua then
  213. curItemLua.selected:SetActive(true)
  214. end
  215. end
  216. self:ShowTransSelectedSkillEquip()
  217. end
  218. function UIArtifactReforgeView:ShowTransSelectedSkillEquip()
  219. LogHRWarning("ShowTransSelectedSkillEquip")
  220. local leftSelectedIdx, rightSelectedIdx = self.controller:GetTransSelectedIdx()
  221. self.transItem1Name:SetActive(leftSelectedIdx ~= nil)
  222. self.transItem1:SetActive(leftSelectedIdx ~= nil)
  223. self.transItem2Name:SetActive(rightSelectedIdx ~= nil)
  224. self.transItem2:SetActive(rightSelectedIdx ~= nil)
  225. if leftSelectedIdx then
  226. local skillEquipData = self.controller:GetShowData(leftSelectedIdx - 1)
  227. if skillEquipData then
  228. IconItemCtr:SetData(self, self.transItem1, skillEquipData, Enum.ItemIEnterType.Bag)
  229. local cfgData = ManagerContainer.CfgMgr:GetArtifactCfgDataByCfgId(skillEquipData.cfgId)
  230. self.transItem1Name.text.text = I18N.T(cfgData.Name)
  231. end
  232. end
  233. if rightSelectedIdx then
  234. local skillEquipData = self.controller:GetShowData(rightSelectedIdx - 1)
  235. if skillEquipData then
  236. IconItemCtr:SetData(self, self.transItem2, skillEquipData, Enum.ItemIEnterType.Bag)
  237. local cfgData = ManagerContainer.CfgMgr:GetArtifactCfgDataByCfgId(skillEquipData.cfgId)
  238. self.transItem2Name.text.text = I18N.T(cfgData.Name)
  239. end
  240. end
  241. self:RefreshTransCost()
  242. end
  243. function UIArtifactReforgeView:GetSkillEquipItemByIdx(idx)
  244. local item = self.scrollview.loopGridView:GetShownItemByItemIndex(idx - 1)
  245. if item then
  246. local itemlua = CommonUtil.GetBindGridViewItem2Lua(self, "IconItem", item.gameObject)
  247. return itemlua
  248. end
  249. end
  250. local lackRes
  251. function UIArtifactReforgeView:RefreshCost()
  252. lackRes = {}
  253. local curIdx = self.controller:GetCurSelecteIdx()
  254. if not curIdx then
  255. self.btnArtifactReforge.number.text.text = 0
  256. return
  257. end
  258. local skillEuipData = self.controller:GetShowData(curIdx - 1)
  259. if skillEuipData then
  260. local cfgData = ManagerContainer.CfgMgr:GetArtifactCfgDataByCfgId(skillEuipData.cfgId)
  261. local cost = cfgData.ReforgeCost
  262. if cost then
  263. for i = 1, 1 do
  264. local cst = cost[i]
  265. if cst then
  266. local cfgData = ManagerContainer.CfgMgr:GetItemById(cst[1])
  267. if cfgData then
  268. -- self.btnArtifactReforge.icon.image.enabled = false
  269. local ownNum = CommonUtil.GetOwnResCountByItemId(cst[1])
  270. -- if cfgData.Icon and cfgData.Icon ~= '' then
  271. -- CommonUtil.LoadIcon(self, cfgData.Icon, function (sprite)
  272. -- self.btnArtifactReforge.icon.image.sprite = sprite
  273. -- self.btnArtifactReforge.icon.image.enabled = true
  274. -- end, 'ItemIcon'..i)
  275. -- end
  276. if ownNum < cst[2] then
  277. lackRes = {cst[1], true}
  278. self.btnArtifactReforge.number.text.text = string.format(Constant.PinkColorText, cst[2])
  279. else
  280. lackRes = {cst[1], false}
  281. self.btnArtifactReforge.number.text.text = cst[2]
  282. end
  283. else
  284. self.btnArtifactReforge.number.text.text = 0
  285. end
  286. end
  287. end
  288. end
  289. end
  290. end
  291. function UIArtifactReforgeView:RefreshTransCost()
  292. lackRes = {}
  293. local leftSelectedIdx, rightSelectedIdx = self.controller:GetTransSelectedIdx()
  294. if not leftSelectedIdx then
  295. self.btnArtifactReforge.number.text.text = 0
  296. return
  297. end
  298. local leftData = self.controller:GetShowData(leftSelectedIdx - 1)
  299. local maxStarLv = leftData.maxStarLv
  300. for i = 1, #transCost do
  301. if maxStarLv == tonumber(transCost[i][1]) then
  302. local key = tonumber(transCost[i][2])
  303. local num = tonumber(transCost[i][3])
  304. local cfgData = ManagerContainer.CfgMgr:GetItemById(key)
  305. if cfgData then
  306. -- self.btnArtifactReforge.icon.image.enabled = false
  307. local ownNum = CommonUtil.GetOwnResCountByItemId(key)
  308. -- if cfgData.Icon and cfgData.Icon ~= '' then
  309. -- CommonUtil.LoadIcon(self, cfgData.Icon, function (sprite)
  310. -- self.btnArtifactReforge.icon.image.sprite = sprite
  311. -- self.btnArtifactReforge.icon.image.enabled = true
  312. -- end, 'ItemIcon'..i)
  313. -- end
  314. if ownNum < num then
  315. lackRes = {key, true}
  316. self.btnArtifactReforge.number.text.text = string.format(Constant.PinkColorText, num)
  317. else
  318. lackRes = {key, false}
  319. self.btnArtifactReforge.number.text.text = num
  320. end
  321. else
  322. self.btnArtifactReforge.number.text.text = 0
  323. end
  324. end
  325. end
  326. end
  327. function UIArtifactReforgeView:TransSuccess()
  328. local oldLeftData, oldRightData = self.controller:GetOldLeftAndRightData()
  329. if not oldLeftData or not oldRightData then return end
  330. IconItemCtr:SetData(self, self.iconItem1, oldLeftData, Enum.ItemIEnterType.Bag)
  331. IconItemCtr:SetData(self, self.iconItem2, oldRightData, Enum.ItemIEnterType.Bag)
  332. self.uITransSuccess:SetActive(true)
  333. end
  334. function UIArtifactReforgeView:RemoveEventListener()
  335. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  336. end
  337. function UIArtifactReforgeView:AddUIEventListener()
  338. CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.toggleGroup, 1, self.OnToggleSwitch)
  339. self.uiBase:AddButtonEventListener(self.btnBack.button, self, self.OnCloseClick)
  340. self.uiBase:AddButtonEventListener(self.btnArtifactPool.button, self, self.OnPoolClick)
  341. self.uiBase:AddButtonEventListener(self.btnArtifactReforge.button, self, self.OnReforgeClick)
  342. self.uiBase:AddButtonEventListener(self.btnInfo.button, self, self.OnClickPlayRuleBtn)
  343. self.uiBase:AddButtonEventListener(self.reforgeBox.bg.button, self, self.OnReforgeBoxClick)
  344. self.uiBase:AddButtonEventListener(self.transBox.bg1.button, self, self.OnClickLeft)
  345. self.uiBase:AddButtonEventListener(self.transBox.bg2.button, self, self.OnClickRight)
  346. end
  347. function UIArtifactReforgeView:OnClickPlayRuleBtn()
  348. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayRule, {'PlayExplainTitle', "ArtifactReforgeExplain"})
  349. end
  350. function UIArtifactReforgeView:OnCloseClick()
  351. ManagerContainer.LuaUIMgr:OpenSourceUI(self)
  352. end
  353. function UIArtifactReforgeView:OnPoolClick()
  354. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIArtifactPool)
  355. end
  356. function UIArtifactReforgeView:OnReforgeClick()
  357. if pageToggleData.toggleDefaultIndex == 1 then
  358. local curIdx = self.controller:GetCurSelecteIdx()
  359. if not curIdx then
  360. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("ArtifactReforgeChoose")
  361. return
  362. end
  363. if lackRes[2] then
  364. CommonUtil.ItemNotEnoughHandle(lackRes[1], Enum.UIPageName.UIArtifactReforge)
  365. return
  366. end
  367. local data = {"SkillEquipReforgeTips", nil, nil, self, self.OnSure}
  368. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  369. elseif pageToggleData.toggleDefaultIndex == 2 then
  370. local leftSelectedIdx, rightSelectedIdx = self.controller:GetTransSelectedIdx()
  371. if not leftSelectedIdx or not rightSelectedIdx then
  372. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("ArtifactTransChoose")
  373. return
  374. end
  375. if lackRes[2] then
  376. CommonUtil.ItemNotEnoughHandle(lackRes[1], Enum.UIPageName.UIArtifactReforge)
  377. return
  378. end
  379. local data = {"SkillEquipTransTips", nil, nil, self, self.OnSure}
  380. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  381. end
  382. end
  383. function UIArtifactReforgeView:OnSure()
  384. if pageToggleData.toggleDefaultIndex == 1 then
  385. self.controller:SendReforgeReq()
  386. elseif pageToggleData.toggleDefaultIndex == 2 then
  387. self.controller:SendTransReq()
  388. end
  389. end
  390. function UIArtifactReforgeView:OnReforgeBoxClick()
  391. local curIdx = self.controller:GetCurSelecteIdx()
  392. if not curIdx then return end
  393. self.controller:SetCurSelectedIdx()
  394. self:RefreshSelectedSkillEquipShow(curIdx)
  395. self:ShowSelectedSkillEquip()
  396. end
  397. function UIArtifactReforgeView:OnClickLeft()
  398. local leftSelectedIdx, rightSelectedIdx = self.controller:GetTransSelectedIdx()
  399. if not leftSelectedIdx then return end
  400. self.controller:ClearLeftTransSelectedIdx()
  401. self:RefreshTransSelectedSkillEquipShow(leftSelectedIdx)
  402. end
  403. function UIArtifactReforgeView:OnClickRight()
  404. local leftSelectedIdx, rightSelectedIdx = self.controller:GetTransSelectedIdx()
  405. if not rightSelectedIdx then return end
  406. self.controller:ClearRightTransSelectedIdx()
  407. self:RefreshTransSelectedSkillEquipShow(rightSelectedIdx)
  408. end
  409. function UIArtifactReforgeView:OnSubClose(path)
  410. self.super.OnSubClose(self, path)
  411. local target = CommonUtil.ParseUITargetPath(self, path)
  412. if target == nil then
  413. return
  414. end
  415. if target == self.uITransSuccess then
  416. self:OnToggleSwitch()
  417. self.scrollview.loopGridView:RefreshAllShownItem()
  418. end
  419. end
  420. function UIArtifactReforgeView:OnHide()
  421. end
  422. function UIArtifactReforgeView:OnShow(data)
  423. self.controller:SetData(data)
  424. end
  425. function UIArtifactReforgeView:OnClose()
  426. self.scrollview.loopGridView:Dispose()
  427. if self.delayShowTimer then
  428. self.delayShowTimer:Stop()
  429. self.delayShowTimer = nil
  430. end
  431. end
  432. function UIArtifactReforgeView:OnDispose()
  433. self.controller:OnDispose()
  434. end
  435. return UIArtifactReforgeView