UICardListView.lua 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248
  1. local UICardListView = require("UICardList/UICardListView_Generate")
  2. local CardIconBigItemCtr = require("Common/CardIconBigItemCtr")
  3. local CardIconItemCtr = require("Common/CardIconItemCtr")
  4. local IconItemCtr = require("Common/IconItemCtr")
  5. local EquipBaseAttrItemCtr = require("Common/EquipBaseAttrItemCtr")
  6. local RectOffset = UnityEngine.RectOffset
  7. local pageToggleData = {}
  8. local costId, costRes,costNum
  9. local costId1, costRes1,costNum1
  10. local lastPage
  11. local cardDatas
  12. local cardDataLength = 0
  13. local ComposeCountLimit = 20
  14. local updateHandle
  15. local lastComposeLogicData, lastComposeItem
  16. local cardDropList = {"CardFilterAll", "CardFilterNormal", "CardFilterMiniBoss", "CardFilterMVP"}
  17. function UICardListView:OnAwake(data)
  18. self.controller = require("UICardList/UICardListCtr"):new()
  19. self.controller:Init(self)
  20. self.controller:SetData(data)
  21. end
  22. function UICardListView:AddEventListener()
  23. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.ITEM_CHANGE,self,self.RefreshCurrency)
  24. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.CARD_TRANS_REFRESH,self,self.PlayTransAnim)
  25. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.CARD_RECREATE_REFRESH, function()
  26. self:ChangeViewPage(pageToggleData.toggleDefaultIndex, true)
  27. end)
  28. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GET_ONE_BIG_CARD_AFTER_RECREATE, function(newId)
  29. self:RecreateSuccessDisplay(newId)
  30. end)
  31. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GET_ONE_BIG_CARD_AFTER_COMPOSE, function(newId)
  32. if newId == nil then return end
  33. local data = {cfgId = newId, num = 1}
  34. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UICardGot, data)
  35. end)
  36. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.VIP_LV_CHANGED, self, self.OnVipLvChanged)
  37. end
  38. function UICardListView:FillContent(data, uiBase)
  39. self.uiBase = uiBase
  40. local gameObject = self.uiBase:GetRoot()
  41. if gameObject ~= nil then
  42. self.gameObject = gameObject
  43. self.transform = gameObject.transform
  44. end
  45. self:InitGenerate(self.transform, data)
  46. self:Init()
  47. end
  48. function UICardListView:Init()
  49. local data = self.controller:GetData()
  50. local unlock = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(37)
  51. if not unlock then
  52. data = Enum.CardFuncType.Compose
  53. self.controller:SetData(data)
  54. end
  55. DropDownHelper.ClearDropDown(self.produce.dropdownFilter.dropdown);
  56. DropDownHelper.SetStartName(self.produce.dropdownFilter.dropdown, I18N.T(cardDropList[1]))
  57. for i = 1, #cardDropList do
  58. DropDownHelper.SetDropDownItems(self.produce.dropdownFilter.dropdown, I18N.T(cardDropList[i]));
  59. end
  60. self:InitGrid()
  61. self:RefreshProduceCost()
  62. self:RefreshComposeCost()
  63. self:RefreshTransCardShow()
  64. if not updateHandle then
  65. updateHandle = UpdateBeat:CreateListener(self.Update, self)
  66. end
  67. UpdateBeat:AddListener(updateHandle)
  68. end
  69. function UICardListView:InitGrid()
  70. self.produce.scrollview.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  71. return self:GetItemByRowColumn(gridView, itemIndex, row, column)
  72. end, nil)
  73. self.compose.scrollview.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  74. return self:GetItemByRowColumn(gridView, itemIndex, row, column)
  75. end, nil)
  76. self.trans.scrollview.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  77. return self:GetItemByRowColumn(gridView, itemIndex, row, column)
  78. end, nil)
  79. --self.compose.cardResult.loopListView:InitListView(0, function(gridView, itemIndex, row, column)
  80. -- return self:RefreshComposeBigCard(gridView, itemIndex, row, column)
  81. --end, nil)
  82. self.delayTimer = FrameTimer.New(function()
  83. self:InitGridRowAndColumn()
  84. end, 1)
  85. self.delayTimer:Start()
  86. end
  87. function UICardListView:InitGridRowAndColumn()
  88. local loopGridView = self.produce.scrollview.loopGridView
  89. local itemSize = loopGridView.ItemSize
  90. local itemPadding = loopGridView.ItemPadding
  91. local padding = loopGridView.Padding
  92. local itemSizeWithPadding = itemPadding + itemSize
  93. local width = loopGridView.ViewPortWidth - padding.left - padding.right + itemPadding.x
  94. local height = loopGridView.ViewPortHeight - padding.top
  95. local row = Mathf.Floor(width / (itemSizeWithPadding.x))
  96. local column = Mathf.Ceil(height / (itemSizeWithPadding.y))
  97. local realWidth = row * itemSizeWithPadding.x
  98. local offset = width - realWidth
  99. if offset > 0 then
  100. offset = offset * 0.5
  101. local newPadding = RectOffset(offset + padding.left, offset + padding.right, padding.top, padding.bottom)
  102. loopGridView:SetPadding(newPadding)
  103. end
  104. loopGridView:SetGridFixedGroupCount(SuperScrollView.GridFixedType.ColumnCountFixed, row)
  105. self.row = row
  106. self.minColumn = column
  107. loopGridView = self.compose.scrollview.loopGridView
  108. itemSize = loopGridView.ItemSize
  109. itemPadding = loopGridView.ItemPadding
  110. padding = loopGridView.Padding
  111. itemSizeWithPadding = itemPadding + itemSize
  112. width = loopGridView.ViewPortWidth - padding.left - padding.right + itemPadding.x
  113. height = loopGridView.ViewPortHeight - padding.top
  114. row = Mathf.Floor(width / (itemSizeWithPadding.x))
  115. column = Mathf.Ceil(height / (itemSizeWithPadding.y))
  116. realWidth = row * itemSizeWithPadding.x
  117. offset = width - realWidth
  118. if offset > 0 then
  119. offset = offset * 0.5
  120. local newPadding = RectOffset(offset + padding.left, offset + padding.right, padding.top, padding.bottom)
  121. loopGridView:SetPadding(newPadding)
  122. end
  123. loopGridView:SetGridFixedGroupCount(SuperScrollView.GridFixedType.ColumnCountFixed, row)
  124. self.row1 = row
  125. self.minColumn1 = column
  126. loopGridView = self.trans.scrollview.loopGridView
  127. itemSize = loopGridView.ItemSize
  128. itemPadding = loopGridView.ItemPadding
  129. padding = loopGridView.Padding
  130. itemSizeWithPadding = itemPadding + itemSize
  131. width = loopGridView.ViewPortWidth - padding.left - padding.right + itemPadding.x
  132. height = loopGridView.ViewPortHeight - padding.top
  133. row = Mathf.Floor(width / (itemSizeWithPadding.x))
  134. column = Mathf.Ceil(height / (itemSizeWithPadding.y))
  135. realWidth = row * itemSizeWithPadding.x
  136. offset = width - realWidth
  137. if offset > 0 then
  138. offset = offset * 0.5
  139. local newPadding = RectOffset(offset + padding.left, offset + padding.right, padding.top, padding.bottom)
  140. loopGridView:SetPadding(newPadding)
  141. end
  142. loopGridView:SetGridFixedGroupCount(SuperScrollView.GridFixedType.ColumnCountFixed, row)
  143. self.row2 = row
  144. self.minColumn2 = column
  145. self.isInit = true
  146. self:ChangeViewPage(pageToggleData.toggleDefaultIndex)
  147. end
  148. function UICardListView:RefreshProduceCost()
  149. local cost = GlobalConfig.Instance:GetConfigStrValue(GlobalConfig.c_card_recreate_cost)
  150. if cost ~= nil then
  151. cost = string.split(cost,':')
  152. costId = tonumber(cost[1])
  153. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(costId)
  154. costRes = itemCfgData.Icon
  155. costNum = tonumber(cost[2])
  156. CommonUtil.LoadIcon(self, itemCfgData.Icon, function (sprite)
  157. self.produce.cost.icon.image.sprite = sprite
  158. end)
  159. --self.produce.cost.text.text.text = costNum
  160. if self.controller:IsProduceFree() then
  161. CommonUtil.IsConditionOutColor(self.produce.cost.text.text, false, string.formatbykey('Free'))
  162. return
  163. end
  164. CommonUtil.IsConditionOutColor(self.produce.cost.text.text, false, CommonUtil.FormatNumber(costNum))
  165. end
  166. end
  167. function UICardListView:RecreateSuccessDisplay(newId)
  168. ManagerContainer.LuaUIMgr:OpenInputMask(Enum.UISibling[Enum.UIType.Story])
  169. local blueCount = 0
  170. for i = 1,3 do
  171. local logicData = self.controller:GetCostCard(i)
  172. if logicData ~= nil then
  173. local cardCfgData = ManagerContainer.CfgMgr:GetCardDataById(logicData.cfgId)
  174. if cardCfgData.CardType == Enum.CardType.NORMAL then
  175. self["slotLt"..i].image.sprite = self.slotLtGreen.image.sprite
  176. blueCount = blueCount + 1
  177. elseif cardCfgData.CardType == Enum.CardType.MINIBOSS then
  178. self["slotLt"..i].image.sprite = self.slotLtBlue.image.sprite
  179. elseif cardCfgData.CardType == Enum.CardType.MVP then
  180. self["slotLt"..i].image.sprite = self.slotLtGold.image.sprite
  181. end
  182. end
  183. end
  184. local needShow = blueCount < 3
  185. if needShow then
  186. self.anim:SetActive(true)
  187. local cardCfgData = ManagerContainer.CfgMgr:GetCardDataById(newId)
  188. if cardCfgData.CardType == Enum.CardType.NORMAL then
  189. self.anim.animator:SetInteger("type", 0)
  190. self.transform:DOScale(1, 3):OnComplete(function()
  191. self:OpenCardGot(newId)
  192. end)
  193. elseif cardCfgData.CardType == Enum.CardType.MINIBOSS then
  194. self.anim.animator:SetInteger("type", 1)
  195. self.transform:DOScale(1, 3.2):OnComplete(function()
  196. self:OpenCardGot(newId)
  197. end)
  198. elseif cardCfgData.CardType == Enum.CardType.MVP then
  199. self.anim.animator:SetInteger("type", 2)
  200. self.transform:DOScale(1, 3.4):OnComplete(function()
  201. self:OpenCardGot(newId)
  202. end)
  203. end
  204. self.anim.animator:Play("Start")
  205. else
  206. self:OpenCardGot(newId)
  207. end
  208. end
  209. function UICardListView:OpenCardGot(newId)
  210. self.anim:SetActive(false)
  211. self:ChangeViewPage(pageToggleData.toggleDefaultIndex, true)
  212. self:RefreshRecreateChance()
  213. local data = {cfgId = newId, num = 1}
  214. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UICardGot, data)
  215. ManagerContainer.LuaUIMgr:CloseInputMask()
  216. end
  217. function UICardListView:RefreshRecreateBigCard(configId)
  218. local logicData = {cfgId = configId}
  219. CardIconBigItemCtr:SetData(self, self.cardIconBigItem, logicData, Enum.ItemIEnterType.CardRecreate, true)
  220. end
  221. --function UICardListView:RefreshComposeBigCard(configId)
  222. -- local logicData = {cfgId = configId}
  223. -- CardIconBigItemCtr:SetData(self, self.resultCard, logicData, Enum.ItemIEnterType.CardRecreate, true)
  224. --end
  225. function UICardListView:OnVipLvChanged()
  226. if self.controller:IsProduceFree() then
  227. CommonUtil.IsConditionOutColor(self.produce.cost.text.text, false, string.formatbykey('Free'))
  228. else
  229. local resOwned = CommonUtil.GetOwnResCountByItemId(costId)
  230. CommonUtil.IsConditionOutColor(self.produce.cost.text.text, costNum > resOwned, CommonUtil.FormatNumber(costNum))
  231. end
  232. end
  233. function UICardListView:RefreshCostProduceCard(idx)
  234. local logicData = self.controller:GetCostCard(idx)
  235. local cardItem = self.produce["slot"..idx]
  236. CardIconItemCtr:SetData(self, cardItem, logicData, Enum.ItemIEnterType.CardSelectedRecreate, self, self.RemoveCostBigCard, idx, true)
  237. --CardIconBigItemCtr:SetData(self, bigCardItem, logicData, Enum.ItemIEnterType.CardRecreate, self, self.RemoveCostBigCard, idx)
  238. local canCostMore = self.controller:CanCostMore()
  239. --self.dsc:SetActive(not canCostMore)
  240. if self.controller:IsProduceFree() then
  241. CommonUtil.IsConditionOutColor(self.produce.cost.text.text, false, string.formatbykey('Free'))
  242. else
  243. local resOwned = CommonUtil.GetOwnResCountByItemId(costId)
  244. CommonUtil.IsConditionOutColor(self.produce.cost.text.text, costNum > resOwned, CommonUtil.FormatNumber(costNum))
  245. end
  246. --self.produce.cost.text.text.text = canCostMore and 0 or CommonUtil.FormatNumber(costNum)
  247. self:RefreshRecreateChance()
  248. end
  249. function UICardListView:RemoveCostBigCard(button, params)
  250. local logicData = params[0]
  251. if logicData == nil then return end
  252. local costCardItem = logicData.itemMaster
  253. logicData.cost = logicData.cost or 0
  254. if logicData.cost <= 0 then
  255. return
  256. end
  257. logicData.cost = logicData.cost - 1
  258. local num = logicData.num > 90 and "..." or logicData.num
  259. costCardItem.iconItem.num.text.text = CommonUtil.StringConcat(logicData.cost, "/", num)
  260. if logicData.cost <= 0 then
  261. costCardItem.btnRemove:SetActive(false)
  262. end
  263. local idx = self.controller:AutoRemoveCostCard(logicData)
  264. self:RefreshCostProduceCard(idx)
  265. end
  266. function UICardListView:RefreshAllCostProduceCard()
  267. self.controller:NilCostCards()
  268. --self.cardName.text.text = ""
  269. for i = 1, 3 do
  270. self:RefreshCostProduceCard(i)
  271. end
  272. end
  273. function UICardListView:RefreshComposeCost()
  274. self.compose.cost.text.text.text = 0
  275. --
  276. --local cost = GlobalConfig.Instance:GetConfigStrValue(121)
  277. --if cost ~= nil then
  278. -- cost = string.split(cost,':')
  279. -- costId1 = tonumber(cost[1])
  280. -- local itemCfgData = ManagerContainer.CfgMgr:GetItemById(costId1)
  281. -- costRes1 = itemCfgData.Icon
  282. -- costNum1 = tonumber(cost[2])
  283. --
  284. -- CommonUtil.LoadIcon(self, itemCfgData.Icon, function (sprite)
  285. -- self.compose.cost.icon.image.sprite = sprite
  286. -- end)
  287. --
  288. -- self.compose.cost.text.text.text = 0
  289. --end
  290. end
  291. function UICardListView:AddRecreateCard(button, params)
  292. local logicData = params[0]
  293. local cardIconItem = params[1]
  294. if not self.controller:CanCostMore() then
  295. return 0
  296. end
  297. logicData.cost = logicData.cost or 0
  298. if logicData.cost >= logicData.num then
  299. return 1
  300. end
  301. logicData.cost = logicData.cost + 1
  302. --local num = math.min(logicData.num, 99)
  303. cardIconItem.iconItem.num.text.text = CommonUtil.StringConcat(logicData.cost, "/", logicData.num)
  304. cardIconItem.btnRemove:SetActive(true)
  305. local idx = self.controller:AutoAddCostCard(logicData)
  306. self:RefreshCostProduceCard(idx, cardIconItem)
  307. if logicData.cost >= logicData.num then
  308. return 1
  309. end
  310. return 2
  311. end
  312. function UICardListView:SetTransSlotData(btn,param)
  313. local idx = param[0].idx
  314. local result, oldIdx,newIdx = self.controller:SetTransSlotIdx(idx + 1)
  315. if result > 0 then
  316. if result == 1 then
  317. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("TransCardUnfull01")
  318. elseif result == 2 then
  319. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("TransCardUnfull02")
  320. end
  321. return
  322. end
  323. self:RefreshTransCardShow(oldIdx)
  324. end
  325. function UICardListView:RefreshTransCardShow(oldIdx)
  326. if oldIdx then
  327. local oldItemLua = self:GetCardItemByIdx(oldIdx)
  328. if oldItemLua then
  329. local showData = self.controller:GetShowData(oldIdx - 1)
  330. oldItemLua.iconItem.num.text.text = CommonUtil.StringConcat( showData.isSelect and 1 or 0, "/", showData.num)
  331. oldItemLua.selected2:SetActive(false)
  332. end
  333. end
  334. local leftSelectedIdx, rightSelectedIdx = self.controller:GetTransferSlotIdx()
  335. if leftSelectedIdx and rightSelectedIdx then
  336. local leftData = self.controller:GetShowData(leftSelectedIdx - 1)
  337. local rightData = self.controller:GetShowData(rightSelectedIdx - 1)
  338. local table = GlobalConfig.Instance:GetConfigStrValue(352)
  339. local costTable = self:DeserializeGlobalStrToNumberTable(table)
  340. local cost = 0
  341. local costId
  342. local minValue = math.min(leftData.level, rightData.level)
  343. local maxValue = math.max(leftData.level, rightData.level)
  344. for i = minValue + 1, maxValue do
  345. local costData = costTable[i]
  346. if costData then
  347. cost = cost + costData[3]
  348. costId = costData[2]
  349. end
  350. end
  351. local num = CommonUtil.GetOwnResCountByItemId(costId or 268)
  352. if num < cost then
  353. self.btnTrans.num.text.text = string.format(Constant.RedColorText,tostring(cost))
  354. else
  355. self.btnTrans.num.text.text = tostring(cost)
  356. end
  357. else
  358. self.btnTrans.num.text.text = 0
  359. end
  360. self.transItem1:SetActive(leftSelectedIdx ~= nil)
  361. self.transItem2:SetActive(rightSelectedIdx ~= nil)
  362. self.transItem1Name:SetActive(leftSelectedIdx ~= nil)
  363. self.transItem2Name:SetActive(rightSelectedIdx ~= nil)
  364. if leftSelectedIdx then
  365. local curItemLua = self:GetCardItemByIdx(leftSelectedIdx)
  366. if curItemLua then
  367. curItemLua.selected2:SetActive(true)
  368. local showData = self.controller:GetShowData(leftSelectedIdx - 1)
  369. CardIconItemCtr:SetData(self, self.transItem1, showData)
  370. curItemLua.iconItem.num.text.text = CommonUtil.StringConcat( showData.isSelect and 1 or 0, "/", showData.num)
  371. local cfgData = ManagerContainer.CfgMgr:GetItemById(showData.cfgId)
  372. if cfgData then
  373. self.transItem1Name.text.text = cfgData.Name
  374. end
  375. end
  376. end
  377. if rightSelectedIdx then
  378. local curItemLua = self:GetCardItemByIdx(rightSelectedIdx)
  379. if curItemLua then
  380. curItemLua.selected2:SetActive(true)
  381. local showData = self.controller:GetShowData(rightSelectedIdx - 1)
  382. CardIconItemCtr:SetData(self, self.transItem2, showData)
  383. curItemLua.iconItem.num.text.text = CommonUtil.StringConcat( showData.isSelect and 1 or 0, "/", showData.num)
  384. local cfgData = ManagerContainer.CfgMgr:GetItemById(showData.cfgId)
  385. if cfgData then
  386. self.transItem2Name.text.text = cfgData.Name
  387. end
  388. end
  389. end
  390. end
  391. function UICardListView:GetCardItemByIdx(idx)
  392. local item = self.trans.scrollview.loopGridView:GetShownItemByItemIndex(idx - 1)
  393. if item then
  394. local itemlua = CommonUtil.GetBindGridViewItem2Lua(self, "CardIconItem", item.gameObject)
  395. return itemlua
  396. end
  397. end
  398. function UICardListView:RemoveRecreateCard(button, params)
  399. local logicData = params[0]
  400. local cardIconItem = params[1]
  401. logicData.cost = logicData.cost or 0
  402. if logicData.cost <= 0 then
  403. return
  404. end
  405. logicData.cost = logicData.cost - 1
  406. --local num = math.min(logicData.num, 99)
  407. cardIconItem.iconItem.num.text.text = CommonUtil.StringConcat(logicData.cost, "/", logicData.num)
  408. if logicData.cost <= 0 then
  409. cardIconItem.btnRemove:SetActive(false)
  410. end
  411. local idx = self.controller:AutoRemoveCostCard(logicData)
  412. self:RefreshCostProduceCard(idx, cardIconItem)
  413. end
  414. function UICardListView:Update()
  415. if not pageToggleData then return end
  416. if pageToggleData.toggleDefaultIndex ~= 2 then
  417. return
  418. end
  419. if self.composeTasks then
  420. for k, v in pairs(self.composeTasks) do
  421. if v.newTask then
  422. if v.isAdd then
  423. --local max = #self.composeCardIds
  424. --self.compose.cardResult.loopListView:SetListItemCount(max, true)
  425. self:AddNewComposeBigCard(v)
  426. v.newTask = false
  427. else
  428. --local result = self.compose.cardResult.loopListView:IsItemVisibleByItemIndex(v.idx - 1)
  429. --if result then
  430. -- self.compose.cardResult.loopListView:RefreshItemByItemIndex(v.idx - 1)
  431. --else
  432. -- self:ComposeBigCardShowCompeleted(v)
  433. --end
  434. local result = self:RemoveComposeBigCard(v)
  435. if result then
  436. v.newTask = false
  437. end
  438. end
  439. end
  440. end
  441. end
  442. end
  443. function UICardListView:ChangeComposeCard(button, params)
  444. local logicData = params[0]
  445. local cardIconItem = params[1]
  446. self:ChangeComposeCard1(logicData, cardIconItem)
  447. end
  448. function UICardListView:ChangeComposeCard1(logicData, cardIconItem)
  449. local nextCardId = logicData.cfgId + 100
  450. local nextCardCfgData = ManagerContainer.CfgMgr:GetCardDataById(nextCardId)
  451. if nextCardCfgData == nil then
  452. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("154")
  453. return
  454. end
  455. local isAdd = true
  456. local isIn, k = CommonUtil.EleInTable(nextCardId, self.composeCardIds)
  457. if isIn then
  458. isAdd = false
  459. end
  460. local task = self.composeTasks[nextCardId]
  461. if task and task.isAnimationing then
  462. return
  463. end
  464. local idx
  465. local cost = 0
  466. if isAdd then
  467. local cfgDate = ManagerContainer.CfgMgr:GetCardDataById(logicData.cfgId)
  468. local num = math.floor(logicData.num/3)
  469. cost = num * cfgDate.UpCost
  470. --if cost > resRemain then
  471. -- num = math.floor(resRemain / costNum)
  472. -- cost = num * costNum
  473. --end
  474. if #self.composeCardIds >= ComposeCountLimit then
  475. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("ComposeMax")
  476. return
  477. end
  478. self.composeCardIds[#self.composeCardIds + 1] = nextCardId
  479. self.composeCosts[nextCardId] = cost
  480. self.composeCardIdCounts[nextCardId] = num;
  481. idx = #self.composeCardIds
  482. --LogHRWarning("up "..nextCardId)
  483. self.totalCost = self.totalCost + cost
  484. cardIconItem.iconItem.num.text.text = CommonUtil.StringConcat(num*3, "/", logicData.num)
  485. else
  486. idx = k
  487. cardIconItem.iconItem.num.text.text = CommonUtil.StringConcat("0/", logicData.num)
  488. --LogHRWarning("down "..nextCardId)
  489. self.totalCost = self.totalCost - self.composeCosts[nextCardId]
  490. self.composeCosts[nextCardId] = nil
  491. self.composeCardIdCounts[nextCardId] = nil;
  492. end
  493. cardIconItem.selected2:SetActive(isAdd)
  494. task = {idx = idx, cfgId = nextCardId, isAdd = isAdd, needShow = true, newTask = true, cost = cost, isAnimationing = false}
  495. self.composeTasks[nextCardId] = task
  496. self:SetComposeNums()
  497. self:ComposeAllSelectedRefresh()
  498. end
  499. function UICardListView:ChangeComposeCard2(nextCardId, logicData, cardIconItem)
  500. local task = self.composeTasks[nextCardId]
  501. if task and task.isAnimationing then
  502. return
  503. end
  504. local resRemain = CommonUtil.GetOwnResCountByItemId(costId)
  505. --local remain = resRemain - self.totalCost
  506. --if remain < costNum then
  507. -- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("CardResettingNoMoney1")
  508. -- return
  509. --end
  510. local cfgDate = ManagerContainer.CfgMgr:GetCardDataById(logicData.cfgId)
  511. local num = math.floor(logicData.num/3)
  512. local cost = num * cfgDate.UpCost
  513. --if cost > resRemain then
  514. -- num = math.floor(resRemain / costNum)
  515. -- cost = num * costNum
  516. --end
  517. if #self.composeCardIds >= ComposeCountLimit then
  518. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("ComposeMax")
  519. return
  520. end
  521. self.composeCardIds[#self.composeCardIds + 1] = nextCardId
  522. self.composeCosts[nextCardId] = cost
  523. self.composeCardIdCounts[nextCardId] = num;
  524. local idx = #self.composeCardIds
  525. self.totalCost = self.totalCost + cost
  526. cardIconItem.iconItem.num.text.text = CommonUtil.StringConcat(num*3, "/", logicData.num)
  527. cardIconItem.selected2:SetActive(true)
  528. task = {idx = idx, cfgId = nextCardId, isAdd = true, needShow = true, newTask = true, cost = cost, isAnimationing = false}
  529. self.composeTasks[nextCardId] = task
  530. end
  531. function UICardListView:ComposeAllSelectedRefresh()
  532. self.noToggleClick = true
  533. if #self.composeCardIds == ComposeCountLimit or #self.composeCardIds >= #cardDatas then
  534. self.compose.filter.toggle.isOn = true
  535. else
  536. self.compose.filter.toggle.isOn = false
  537. end
  538. self.noToggleClick = false
  539. end
  540. function UICardListView:RemoveComposeCard(button, params)
  541. self:RemoveComposeCard1(params[0], params[1])
  542. self:SetComposeNums()
  543. self:ComposeAllSelectedRefresh()
  544. end
  545. function UICardListView:RemoveComposeCard1(cardId, composeCard)
  546. if not cardId then
  547. return
  548. end
  549. local lastCardId = cardId - 100
  550. local lastCardCfgData = ManagerContainer.CfgMgr:GetCardDataById(lastCardId)
  551. if lastCardCfgData then
  552. local task = self.composeTasks[cardId]
  553. if task and task.isAnimationing then
  554. return
  555. end
  556. local isIn, k = CommonUtil.EleInTable(cardId, self.composeCardIds)
  557. local smallIcon = self:GetSmallCardIcon(lastCardId)
  558. local cardData = ManagerContainer.DataMgr.CardData:GetCardById(lastCardId)
  559. if composeCard and self.composeCardIdCounts[cardId] ~= nil and self.composeCardIdCounts[cardId] > 0 then
  560. self.composeCardIdCounts[cardId] = self.composeCardIdCounts[cardId] - 1
  561. end
  562. if composeCard and self.composeCardIdCounts[cardId] == 0 then
  563. self.composeCardIdCounts[cardId] = nil
  564. elseif not composeCard then
  565. self.composeCardIdCounts[cardId] = nil
  566. end
  567. if self.composeCardIdCounts[cardId] == nil then
  568. if smallIcon then
  569. smallIcon.iconItem.num.text.text = CommonUtil.StringConcat("0/", cardData.num)
  570. smallIcon.selected2:SetActive(false)
  571. end
  572. --LogHRWarning("down "..nextCardId)
  573. self.totalCost = self.totalCost - self.composeCosts[cardId]
  574. self.composeCosts[cardId] = nil
  575. task = {idx = k, cfgId = cardId, isAdd = false, needShow = true, newTask = true, cost = 0, isAnimationing = false}
  576. self.composeTasks[cardId] = task
  577. else
  578. if composeCard then
  579. composeCard.cardIconBigItem.count.text.text = self.composeCardIdCounts[cardId]
  580. end
  581. self.composeCosts[cardId] = self.composeCosts[cardId] - lastCardCfgData.UpCost
  582. self.totalCost = self.totalCost - lastCardCfgData.UpCost
  583. if smallIcon then
  584. smallIcon.iconItem.num.text.text = CommonUtil.StringConcat(self.composeCardIdCounts[cardId] * 3, "/", cardData.num)
  585. end
  586. end
  587. end
  588. end
  589. function UICardListView:RefreshRecreateChance()
  590. local normalChance = 0
  591. local miniChance = 0
  592. local bossChance = 0
  593. local count = 0
  594. for i = 1, 3 do
  595. local logicData = self.controller:GetCostCard(i)
  596. if logicData ~= nil then
  597. count = count + 1
  598. local cardData = ManagerContainer.CfgMgr:GetCardDataById(logicData.cfgId)
  599. local resetData = ManagerContainer.CfgMgr:GetCardResetDataByLevelAndType(cardData.CardLevel, cardData.CardType)
  600. normalChance = normalChance + resetData.Normal
  601. miniChance = miniChance + resetData.Mini
  602. bossChance = bossChance + resetData.Boss
  603. end
  604. end
  605. self.dsc:SetActive(count >= 3)
  606. self.unselected:SetActive(count < 3)
  607. local total = normalChance + miniChance + bossChance
  608. local normal = total > 0 and normalChance/total or 0
  609. normal = tonumber(CommonUtil.FormatPercentNumber(normal))
  610. local mini = total > 0 and miniChance/total or 0
  611. mini = tonumber(CommonUtil.FormatPercentNumber(mini))
  612. local boss = 100 - normal - mini
  613. boss = (boss <= 100 and boss > 0 and bossChance > 0) and boss or bossChance
  614. self.dsc.text01.text.text = I18N.SetLanguageValue("CardRemakeProbability1", (normal == 0 or normal == 100) and normal or string.format("%.2f",normal))
  615. self.dsc.text02.text.text = I18N.SetLanguageValue("CardRemakeProbability2", (mini == 0 or mini == 100) and mini or string.format("%.2f",mini))
  616. self.dsc.text03.text.text = I18N.SetLanguageValue("CardRemakeProbability3", (boss == 0 or boss == 100) and boss or string.format("%.2f",boss))
  617. end
  618. function UICardListView:GetSmallCardIcon(cfgId)
  619. local idx = 0
  620. for k,v in pairs(cardDatas) do
  621. if v.cfgId == cfgId then
  622. idx = k - 1
  623. break
  624. end
  625. end
  626. local smallCard = self.compose.scrollview.loopGridView:GetShownItemByItemIndex(idx)
  627. if not smallCard then
  628. return nil
  629. end
  630. return CommonUtil.GetBindGridViewItem2Lua(self, 'CardIconItem', smallCard.gameObject)
  631. end
  632. function UICardListView:ReenableToggle()
  633. self.compose.filter.toggle.enabled = true
  634. self.toggleTimer = nil
  635. end
  636. function UICardListView:AllSelectComposeCards(toggle, logicData, result)
  637. if not self.toggleTimer then
  638. self.toggleTimer = ManagerContainer.LuaTimerMgr:AddTimer(500, 1, self, self.ReenableToggle, nil)
  639. end
  640. if self.noToggleClick then return end
  641. self.compose.filter.toggle.enabled = false
  642. if result then
  643. local areadyCount = #self.composeCardIds
  644. self.delta = ComposeCountLimit - areadyCount
  645. self.curIdx = 0
  646. self.compose.scrollview.loopGridView:MovePanelToItemByIndex(0)
  647. self.compose.scrollview.loopGridView:RefreshAllShownItem()
  648. --self.compose.scrollview.loopGridView:FinishSnapImmediately()
  649. --self.compose.scrollview.loopGridView:SetListItemCount(#cardDatas, true)
  650. --local idx = 0
  651. --for i = 1, #cardDatas do
  652. -- local nextCardId = cardDatas[i].cfgId + 100
  653. -- local nextCardCfgData = ManagerContainer.CfgMgr:GetCardDataById(nextCardId)
  654. -- if nextCardCfgData and idx < delta and not CommonUtil.EleInTable(nextCardId, self.composeCardIds) then
  655. -- local smallIcon = self:GetSmallCardIcon(cardDatas[i].cfgId)
  656. -- if smallIcon then
  657. -- self:ChangeComposeCard2(nextCardId, cardDatas[i], smallIcon)
  658. -- end
  659. -- idx = idx + 1
  660. -- end
  661. --end
  662. else
  663. for i = 1, #self.composeCardIds do
  664. self:RemoveComposeCard1(self.composeCardIds[i])
  665. end
  666. end
  667. self:SetComposeNums()
  668. end
  669. function UICardListView:ChangeViewPage(index, needRefresh)
  670. if not self.isInit then return end
  671. if lastPage ~= index then
  672. self.controller:ClearLeftSlotIdx()
  673. self.controller:ClearRightSlotIdx()
  674. self:RefreshTransCardShow()
  675. lastPage = index
  676. self.controller:SetEleIndex(0)
  677. self.produce.dropdownFilter.dropdown.value = 0
  678. needRefresh = true
  679. end
  680. local scrollView
  681. local row, minColumn
  682. if index == Enum.CardFuncType.Recreate then
  683. -- 重置
  684. scrollView = self.produce.scrollview
  685. cardDatas = self.controller:GetCardDatas(self.controller:GetEleIndex())
  686. self:RefreshAllCostProduceCard()
  687. self:RefreshRecreateBigCard()
  688. self.produce:SetActive(true)
  689. self.compose:SetActive(false)
  690. self.trans:SetActive(false)
  691. self.compose.filter:SetActive(false)
  692. row = self.row
  693. minColumn = self.minColumn
  694. self.produce.noCards:SetActive(#cardDatas == 0)
  695. elseif index == Enum.CardFuncType.Compose then
  696. -- 合成
  697. --self.controller:ResetDecomposeCardDatas()
  698. scrollView = self.compose.scrollview
  699. cardDatas = self.controller:GetComposeCardDatas(self.controller:GetEleIndex(), true)
  700. self:ResetComposeState()
  701. self.produce:SetActive(false)
  702. self.compose:SetActive(true)
  703. self.trans:SetActive(false)
  704. --self.compose.filter.toggle.isOn = canCompose
  705. self.compose.filter:SetActive(true)
  706. row = self.row1
  707. minColumn = self.minColumn1
  708. self.compose.noCard:SetActive(#self.composeCardIds == 0)
  709. self.compose.noCards:SetActive(#cardDatas == 0)
  710. elseif index == Enum.CardFuncType.Trans then
  711. -- 合成
  712. --self.controller:ResetDecomposeCardDatas()
  713. scrollView = self.trans.scrollview
  714. cardDatas = self.controller:RefreshMvpCradList()
  715. self.produce:SetActive(false)
  716. self.compose:SetActive(false)
  717. self.trans:SetActive(true)
  718. self:RefreshCurrency()
  719. --self.compose.filter.toggle.isOn = canCompose
  720. row = self.row2
  721. minColumn = self.minColumn2
  722. self.trans.noCards:SetActive(#cardDatas == 0)
  723. else
  724. return
  725. end
  726. cardDataLength = 0
  727. if #cardDatas > 0 then
  728. cardDataLength = #cardDatas
  729. if row and minColumn then
  730. local minLength = row * minColumn
  731. if cardDataLength <= minLength then
  732. cardDataLength = minLength
  733. else
  734. cardDataLength = Mathf.Ceil(cardDataLength / row) * row
  735. end
  736. end
  737. end
  738. local max = cardDataLength
  739. scrollView.loopGridView:SetListItemCount(max, true)
  740. if needRefresh then
  741. scrollView.loopGridView:RefreshListByIndex(max)
  742. end
  743. --self.produce.scrollview.loopGridView:RefreshAllShownItem()
  744. end
  745. function UICardListView:RefreshCurrency()
  746. local cfgData = ManagerContainer.CfgMgr:GetItemById(268)
  747. if cfgData then
  748. local num = CommonUtil.GetOwnResCountByItemId(268)
  749. self.currency.number.text.text = tostring(num)
  750. CommonUtil.LoadIcon(self, cfgData.Icon, function (sprite)
  751. self.currency.icon.image.sprite = sprite
  752. end)
  753. end
  754. end
  755. function UICardListView:ResetComposeState()
  756. self.composeTasks = {}
  757. self.composeCardIds = {}
  758. self.composeCardIdCounts = {}
  759. self.composeCosts = {}
  760. self.totalCost = 0
  761. self.curIdx = nil
  762. self.delta = nil
  763. self.compose.filter.toggle.isOn = false;
  764. self:SetComposeNums()
  765. CommonUtil.RecycleFromBatchItemsByPrefabName(self, Enum.PrefabNames.CardComposeItem)
  766. self.compose.filter.toggle.enabled = true
  767. if self.toggleTimer then
  768. ManagerContainer.LuaTimerMgr:RemoveTimer(self.toggleTimer)
  769. self.toggleTimer = nil
  770. end
  771. end
  772. function UICardListView:SetComposeNums()
  773. local resRemain = CommonUtil.GetOwnResCountByItemId(costId)
  774. --self.compose.cost.text.text.text = CommonUtil.FormatNumber(cost)
  775. CommonUtil.IsConditionOutColor(self.compose.cost.text.text, self.totalCost > resRemain, CommonUtil.FormatNumber(self.totalCost))
  776. local count = 0
  777. for _,v in pairs(self.composeCardIdCounts) do
  778. count = count + v
  779. end
  780. self.compose.number.text.text = count --I18N.SetLanguageValue("ComposeCard", count)
  781. end
  782. function UICardListView:GetItemByRowColumn(gridView, itemIndex, row, column)
  783. if (cardDatas == nil or itemIndex < 0 or itemIndex >= cardDataLength) then
  784. return nil
  785. end
  786. local showData = cardDatas[itemIndex + 1]
  787. local item = nil
  788. if showData then
  789. item = gridView:NewListViewItem('CardIconItem')
  790. local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'CardIconItem', item.gameObject)
  791. showData.itemMaster = itemlua
  792. item.name = showData.cfgId
  793. if lastPage == Enum.CardFuncType.Recreate then
  794. CommonUtil.UpdateItemPrefab(self, itemlua, showData, Enum.ItemIEnterType.CardRecreate, self, self.AddRecreateCard)
  795. itemlua.iconItem.num.text.text = CommonUtil.StringConcat(showData.cost or 0, "/", showData.num)
  796. self.uiBase:AddButtonUniqueEventListener(itemlua.btnRemove.button, self, self.RemoveRecreateCard, showData, itemlua)
  797. itemlua.btnRemove:SetActive(showData.cost and showData.cost > 0)
  798. elseif lastPage == Enum.CardFuncType.Trans then
  799. showData.idx = itemIndex
  800. CommonUtil.UpdateItemPrefab(self, itemlua, showData, Enum.ItemIEnterType.CardRecreate, self, self.SetTransSlotData)
  801. itemlua.iconItem.num.text.text = CommonUtil.StringConcat( showData.isSelect and 1 or 0, "/", showData.num)
  802. itemlua.selected2:SetActive(showData.isSelect)
  803. else
  804. CommonUtil.UpdateItemPrefab(self, itemlua, showData, Enum.ItemIEnterType.CardCompose, self, self.ChangeComposeCard)
  805. --self.uiBase:AddButtonUniqueEventListener(itemlua.btnRemove.button, self, self.RemoveComposeCard, showData, itemlua)
  806. local nextCardId = showData.cfgId + 100
  807. local active = CommonUtil.EleInTable(nextCardId, self.composeCardIds)
  808. itemlua.selected2:SetActive(active)
  809. if self.delta and self.curIdx then
  810. local nextCardCfgData = ManagerContainer.CfgMgr:GetCardDataById(nextCardId)
  811. if nextCardCfgData and self.curIdx < self.delta and not active then
  812. self:ChangeComposeCard2(nextCardId, showData, itemlua)
  813. self.curIdx = self.curIdx + 1
  814. if self.curIdx > self.delta then
  815. self.delta = nil
  816. self.curIdx = nil
  817. end
  818. end
  819. end
  820. end
  821. else
  822. item = gridView:NewListViewItem('IconEmptyItem')
  823. end
  824. return item
  825. end
  826. --function UICardListView:RefreshComposeBigCard(gridView, itemIndex, row, column)
  827. -- if (itemIndex < 0 or itemIndex >= #self.composeCardIds) then
  828. -- return nil
  829. -- end
  830. -- local cfgId = self.composeCardIds[itemIndex + 1]
  831. -- local task = self.composeTasks[cfgId]
  832. -- local item = gridView:NewListViewItem('CardComposeItem')
  833. --
  834. -- item.name = itemIndex.." ".. cfgId
  835. -- local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'CardComposeItem', item.gameObject)
  836. --
  837. -- local data = {isCurIdx = task.idx == itemIndex + 1, task = task}
  838. -- CommonUtil.UpdateItemPrefab(self, itemlua, data, self, self.ComposeBigCardShowCompeleted)
  839. --
  840. -- task.needShow = false
  841. -- return item
  842. --end
  843. function UICardListView:AddNewComposeBigCard(task)
  844. ManagerContainer.GoPoolMgr:SpawnGo(Enum.PrefabNames.CardComposeItem, function(itemlua)
  845. itemlua.gameObject.name = task.cfgId
  846. local data = {isCurIdx = true, task = task}
  847. CommonUtil.BatchCreateItems(self, itemlua, self.compose.content.transform, data, self, self.ComposeBigCardShowCompeleted)
  848. self.uiBase:AddButtonUniqueEventListener(itemlua.cardIconBigItem.bg.button, self, self.RemoveComposeCard, task.cfgId, itemlua)
  849. itemlua.cardIconBigItem.count:SetActive(true)
  850. itemlua.cardIconBigItem.count.text.text = self.composeCardIdCounts[task.cfgId]
  851. task.needShow = false
  852. end)
  853. self.compose.content.rectTransform.anchoredPosition = Vector2.zero
  854. end
  855. function UICardListView:RemoveComposeBigCard(task)
  856. local itemGo = self.compose.content.transform:Find(task.cfgId)
  857. if itemGo == nil then
  858. return false
  859. end
  860. local itemLua = CommonUtil.GetBatchItemByGo(self, Enum.PrefabNames.CardComposeItem, itemGo.gameObject)
  861. if itemLua == nil then
  862. return false
  863. end
  864. local data = {isCurIdx = true, task = task}
  865. CommonUtil.UpdateItemPrefab(self, itemLua, data, self, self.ComposeBigCardShowCompeleted)
  866. return true
  867. end
  868. function UICardListView:ComposeBigCardShowCompeleted(task, item)
  869. --LogHRWarning("show over "..task.cfgId)
  870. if not task.isAdd then
  871. local result, k = CommonUtil.EleInTable(task.cfgId, self.composeCardIds)
  872. if result then
  873. table.remove(self.composeCardIds, k)
  874. self.composeTasks[task.cfgId] = nil
  875. --local max = #self.composeCardIds
  876. --self.compose.cardResult.loopListView:SetListItemCount(max, true)
  877. ManagerContainer.GoPoolMgr:RecycleGo(item)
  878. --LogHRWarning(Inspect(self.composeCardIds))
  879. end
  880. end
  881. self.compose.noCard:SetActive(#self.composeCardIds == 0)
  882. self:ComposeAllSelectedRefresh()
  883. end
  884. function UICardListView:RemoveEventListener()
  885. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  886. end
  887. function UICardListView:AddUIEventListener()
  888. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  889. CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.toggleGroup, self.controller:GetData(), self.ChangeViewPage)
  890. self.uiBase:AddDropdownEventListener(self.produce.dropdownFilter.dropdown, function (dropdown, value)
  891. self.controller:SetEleIndex(value)
  892. self:ChangeViewPage(pageToggleData.toggleDefaultIndex, true)
  893. end)
  894. self.uiBase:AddButtonEventListener(self.btnBack.button, function (buttton, params)
  895. ManagerContainer.LuaUIMgr:OpenSourceUI(self, Enum.BagViewPageType.Card)
  896. end)
  897. self.uiBase:AddButtonEventListener(self.btnProduce.button, function (buttton, params)
  898. if self.controller:CanCostMore() then
  899. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("CardResettingUnfull")
  900. return
  901. end
  902. if not self.controller:IsProduceFree() then
  903. local ownResCount = CommonUtil.GetOwnResCountByItemId(costId)
  904. if ownResCount < costNum then
  905. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("CardResettingNoMoney")
  906. return
  907. end
  908. end
  909. if self.controller:RecreateNeedNotice() then
  910. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UICardProduceNotice, Enum.UIPageName.UICardList)
  911. return
  912. end
  913. self.controller:SendCardReceate()
  914. end)
  915. self.uiBase:AddButtonEventListener(self.btnCompose.button, function (buttton, params)
  916. --if self.controller:CanCostMore() then
  917. -- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("CardResettingUnfull1")
  918. -- return
  919. --end
  920. local ownResCount = CommonUtil.GetOwnResCountByItemId(Enum.ItemIds.Coin)
  921. if ownResCount < self.totalCost then
  922. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("CardResettingNoMoney1")
  923. return
  924. end
  925. --if self.controller:RecreateNeedNotice() then
  926. -- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UICardProduceNotice, Enum.UIPageName.UICardList)
  927. -- return
  928. --end
  929. self.controller:SendCardCompose(self.composeCardIds, self.composeCardIdCounts)
  930. end)
  931. self.uiBase:AddButtonEventListener(self.btnTrans.button,self,self.OnClickBtnTrans)
  932. self.uiBase:AddButtonEventListener(self.transBox.bg1.button,self,self.OnClickLeft)
  933. self.uiBase:AddButtonEventListener(self.transBox.bg2.button,self,self.OnClickRight)
  934. self.uiBase:AddToggleEventListener(self.compose.filter.toggle, self, self.AllSelectComposeCards, nil)
  935. end
  936. function UICardListView:OnClickBtnTrans()
  937. local leftSelectedIdx, rightSelectedIdx = self.controller:GetTransferSlotIdx()
  938. if not leftSelectedIdx or not rightSelectedIdx then
  939. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("CardTransDsc01")
  940. return
  941. end
  942. local leftData = self.controller:GetShowData(leftSelectedIdx - 1)
  943. local rightData = self.controller:GetShowData(rightSelectedIdx - 1)
  944. local table = GlobalConfig.Instance:GetConfigStrValue(352)
  945. local costTable = self:DeserializeGlobalStrToNumberTable(table)
  946. local cost = 0
  947. local costId
  948. local minValue = math.min(leftData.level, rightData.level)
  949. local maxValue = math.max(leftData.level, rightData.level)
  950. for i = minValue + 1, maxValue do
  951. local costData = costTable[i]
  952. if costData then
  953. cost = cost + costData[3]
  954. costId = costData[2]
  955. end
  956. end
  957. local num = CommonUtil.GetOwnResCountByItemId(costId or 268)
  958. if num < cost then
  959. CommonUtil.ItemNotEnoughHandle(costId or 268)
  960. return
  961. else
  962. local data = {"CardTransTips", nil, nil, self, self.OnSure}
  963. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  964. end
  965. end
  966. function UICardListView:DeserializeGlobalStrToNumberTable(table)
  967. local table = string.split(table, ';')
  968. local table1 = {}
  969. for _, value in pairs(table) do
  970. if value then
  971. if string.find(value, ':') then
  972. local info = string.split(value, ':')
  973. for i = 1, #info do
  974. info[i] = tonumber(info[i])
  975. end
  976. table1[info[1]] = info
  977. else
  978. table1[value] = tonumber(value)
  979. end
  980. end
  981. end
  982. return table1
  983. end
  984. function UICardListView:OnSure()
  985. self.controller:SendTransReq()
  986. end
  987. function UICardListView:PlayTransAnim(data)
  988. self.controller:ClearLeftSlotIdx()
  989. self.controller:ClearRightSlotIdx()
  990. self:RefreshTransCardShow()
  991. self:ChangeViewPage(pageToggleData.toggleDefaultIndex, true)
  992. self.uITransSuccess:SetActive(true)
  993. local data1 = {cfgId = data.leftId}
  994. local data2 = {cfgId = data.rightId}
  995. IconItemCtr:SetData(self, self.iconItem1, data1)
  996. local cfgData = ManagerContainer.CfgMgr:GetCardDataById(data.rightId)
  997. if cfgData then
  998. local level = cfgData.CardLevel
  999. CommonUtil.LoadIcon(self, Constant.Quality_Equip_LV_Icons[level], function (sprite)
  1000. self.iconItem1.level.image.sprite = sprite
  1001. end)
  1002. CommonUtil.LoadIcon(self, Constant.Quality_Equip_LV_Icons[level], function (sprite)
  1003. self.newlevel.image.sprite = sprite
  1004. end)
  1005. end
  1006. IconItemCtr:SetData(self, self.iconItem2, data2)
  1007. local cfgData = ManagerContainer.CfgMgr:GetCardDataById(data.leftId)
  1008. if cfgData then
  1009. local level = cfgData.CardLevel
  1010. CommonUtil.LoadIcon(self, Constant.Quality_Equip_LV_Icons[level], function (sprite)
  1011. self.iconItem2.level.image.sprite = sprite
  1012. end)
  1013. CommonUtil.LoadIcon(self, Constant.Quality_Equip_LV_Icons[level], function (sprite)
  1014. self.oldlevel.image.sprite = sprite
  1015. end)
  1016. end
  1017. end
  1018. function UICardListView:OnClickLeft()
  1019. local leftSelectedIdx, rightSelectedIdx = self.controller:GetTransferSlotIdx()
  1020. if not leftSelectedIdx then return end
  1021. self.controller:ClearLeftSlotIdx()
  1022. self:RefreshTransCardShow(leftSelectedIdx)
  1023. end
  1024. function UICardListView:OnClickRight()
  1025. local leftSelectedIdx, rightSelectedIdx = self.controller:GetTransferSlotIdx()
  1026. if not rightSelectedIdx then return end
  1027. self.controller:ClearRightSlotIdx()
  1028. self:RefreshTransCardShow(rightSelectedIdx)
  1029. end
  1030. function UICardListView:OnHide()
  1031. end
  1032. function UICardListView:OnShow(data)
  1033. self.controller:SetData(data)
  1034. self:Init()
  1035. end
  1036. function UICardListView:OnClose()
  1037. DropDownHelper.ClearDropDown(self.produce.dropdownFilter.dropdown);
  1038. if updateHandle ~= nil then
  1039. UpdateBeat:RemoveListener(updateHandle)
  1040. updateHandle = nil
  1041. end
  1042. pageToggleData = nil
  1043. end
  1044. function UICardListView:OnDispose()
  1045. self.composeTasks = {}
  1046. self.composeCardIds = {}
  1047. self.composeCardIdCounts = {}
  1048. self.composeCosts = {}
  1049. self.totalCost = 0
  1050. self.curIdx = nil
  1051. self.delta = nil
  1052. if self.toggleTimer then
  1053. ManagerContainer.LuaTimerMgr:RemoveTimer(self.toggleTimer)
  1054. self.toggleTimer = nil
  1055. end
  1056. self.produce.scrollview.loopGridView:Dispose()
  1057. self.compose.scrollview.loopGridView:Dispose()
  1058. self.trans.scrollview.loopGridView:Dispose()
  1059. --self.compose.cardResult.loopListView:Dispose()
  1060. if self.delayTimer then
  1061. self.delayTimer:Stop()
  1062. end
  1063. self.delayTimer = nil
  1064. self.isInit = nil
  1065. lastComposeLogicData = nil
  1066. lastComposeItem = nil
  1067. end
  1068. return UICardListView