UIRuneShopBTView.lua 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106
  1. local UIRuneShopBTView = require("UIRuneShop/UIRuneShopBTView_Generate")
  2. local ConditionJudge = require("Common/ConditionJudge")
  3. local FirstBuyBgIconPath = 'ShopIcons/txt_club_first'
  4. local ExtraBuyBgIconPath = 'ShopIcons/txt_club_free_extra_cn'
  5. function UIRuneShopBTView:OnAwake(data)
  6. self.controller = require("UIRuneShop/UIRuneShopBTCtr"):new()
  7. self.controller:Init(self)
  8. self.controller:SetData(data)
  9. end
  10. function UIRuneShopBTView:AddEventListener()
  11. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ROCOIN_CHANGED, self, self.OnRoCoinChanged)
  12. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.COIN_CHANGED, self, self.OnCoinChanged)
  13. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.DIAMOND_CHANGED, self, self.OnDiamondChanged)
  14. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.VIP_LV_CHANGED, self, self.OnVipLvChanged)
  15. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.RUNE_SHOP_DATA_CHANGED, self, self.OnRuneShopDataChanged)
  16. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.RED_POINT_MGR_NOTICE, self, self.OnRPNotify)
  17. end
  18. function UIRuneShopBTView:FillContent(data, uiBase)
  19. self.uiBase = uiBase
  20. local gameObject = self.uiBase:GetRoot()
  21. if gameObject ~= nil then
  22. self.gameObject = gameObject
  23. self.transform = gameObject.transform
  24. end
  25. self:InitGenerate(self.transform, data)
  26. self:Init()
  27. end
  28. function UIRuneShopBTView:Init()
  29. self.controller:InitData()
  30. self.privilegeCardItem.privilegeScrollView.loopListView:InitListView(0, function (loopListView, itemIdx)
  31. return self:GetItemByIndexPrivilege(loopListView, itemIdx)
  32. end, nil, nil)
  33. self.privilegeCardItem.rewardScrollView.loopGridView:InitGridView(0, function (loopGridView, itemIdx, row, column)
  34. return self:GetItemByRowColumnPrivilege(loopGridView, itemIdx, row, column)
  35. end, nil, nil)
  36. self.giftsBox.scrollView.loopGridView:InitGridView(0, function(loopGridView, itemIdx, row, column)
  37. return self:GetItemByRowColumnGifts(loopGridView, itemIdx, row, column)
  38. end, nil, nil)
  39. self.rOPassport.scrollView.loopListView:InitListView(0, function(loopListView, itemIdx)
  40. return self:GetItemByIndexROPass(loopListView, itemIdx)
  41. end)
  42. self.limitedBox.scrollView.loopGridView:InitGridView(0, function(loopGridView, itemIdx, row, column)
  43. return self:GetItemByRowColumnLimited(loopGridView, itemIdx, row, column)
  44. end, nil, nil)
  45. self:RefreshRoCoinView()
  46. self:RefreshCoinView()
  47. self:RefreshGoldView()
  48. self:RefreshVipView()
  49. self:RefreshToggleGroupView()
  50. self:RefreshShopView(true)
  51. end
  52. function UIRuneShopBTView:RemoveEventListener()
  53. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  54. end
  55. function UIRuneShopBTView:AddUIEventListener()
  56. self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
  57. self.uiBase:AddButtonUniqueEventListener(self.btnVIP.button, self, self.OnClickVipBtn)
  58. self.uiBase:AddToggleUniqueEventListener(self.privilegeCardToggle.toggle, self, self.OnClickOneToggle, Enum.RuneShopType.SpecialPrivilege)
  59. self.uiBase:AddToggleUniqueEventListener(self.weekToggle.toggle, self, self.OnClickOneToggle, Enum.RuneShopType.MonthCard)
  60. self.uiBase:AddToggleUniqueEventListener(self.passportToggle.toggle, self, self.OnClickOneToggle, Enum.RuneShopType.PassCheck)
  61. self.uiBase:AddToggleUniqueEventListener(self.giftsToggle.toggle, self, self.OnClickOneToggle, Enum.RuneShopType.Gifts)
  62. self.uiBase:AddToggleUniqueEventListener(self.limitedToggle.toggle, self, self.OnClickOneToggle, Enum.RuneShopType.LimitTime)
  63. self.uiBase:AddButtonUniqueEventListener(self.dailyBtn.button, self, self.OnClickShopSubBtn, Enum.RuneShopSubType.Daily)
  64. self.uiBase:AddButtonUniqueEventListener(self.weekBtn.button, self, self.OnClickShopSubBtn, Enum.RuneShopSubType.Week)
  65. self.uiBase:AddButtonUniqueEventListener(self.roCoinBtn.button, self, self.OnClickShopSubBtn, Enum.RuneShopSubType.ROCoin)
  66. self.uiBase:AddButtonUniqueEventListener(self.goldBtn.button, self, self.OnClickShopSubBtn, Enum.RuneShopSubType.Gold)
  67. self.uiBase:AddButtonUniqueEventListener(self.monthBtn.button, self, self.OnClickShopSubBtn, Enum.RuneShopSubType.Month)
  68. end
  69. function UIRuneShopBTView:OnHide()
  70. end
  71. function UIRuneShopBTView:OnShow(data)
  72. if data then
  73. self.controller:SetData(data)
  74. self.controller:InitData()
  75. end
  76. self:RefreshCoinView()
  77. self:RefreshGoldView()
  78. self:RefreshVipView()
  79. self:RefreshToggleGroupView()
  80. self:RefreshShopView(true)
  81. end
  82. function UIRuneShopBTView:OnClose()
  83. end
  84. function UIRuneShopBTView:OnDispose()
  85. self.privilegeUnlockDess = nil
  86. self.privilegeRewards = nil
  87. self.roPassUnlockDess = nil
  88. self:DisposeRefreshTimer()
  89. self.privilegeCardItem.privilegeScrollView.loopListView:Dispose()
  90. self.privilegeCardItem.rewardScrollView.loopGridView:Dispose()
  91. self.giftsBox.scrollView.loopGridView:Dispose()
  92. self.rOPassport.scrollView.loopListView:Dispose()
  93. self.limitedBox.scrollView.loopGridView:Dispose()
  94. self.controller:OnDispose()
  95. end
  96. function UIRuneShopBTView:OnClickCloseBtn()
  97. ManagerContainer.LuaUIMgr:OpenSourceUI(self)
  98. end
  99. function UIRuneShopBTView:OnClickVipBtn()
  100. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIVip)
  101. end
  102. function UIRuneShopBTView:OnClickOneToggle(tog, params, b)
  103. if not b then return end
  104. local shopType = params[0]
  105. if self.controller:ChangeShopType(shopType) then
  106. self:RefreshShopView(true)
  107. end
  108. end
  109. function UIRuneShopBTView:OnClickShopSubBtn(btn, params)
  110. local shopSubType = params[0]
  111. if self.controller:ChangeShopSubType(shopSubType) then
  112. self:RefreshGiftsView(true)
  113. end
  114. end
  115. function UIRuneShopBTView:OnClickMonthCardPrice(_, params)
  116. local id = params[0]
  117. local errorCodeKey = self.controller:SendPay(id)
  118. if not errorCodeKey then
  119. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCodeKey)
  120. end
  121. end
  122. function UIRuneShopBTView:OnClickRoPassBuy(_, params)
  123. local id = params[0]
  124. local errorCodeKey = self.controller:SendPay(id)
  125. if not errorCodeKey then
  126. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCodeKey)
  127. end
  128. end
  129. function UIRuneShopBTView:OnClickShopGoodsItem(_, params)
  130. local data = params[0]
  131. if not data then return end
  132. if data:IsSoldout() then return end
  133. local id = data:GetId()
  134. local runeShopType = self.controller:GetShopType()
  135. local runeShopSubType = self.controller:GetShopSubType()
  136. if runeShopType == Enum.RuneShopType.Gifts then
  137. if runeShopSubType == Enum.RuneShopSubType.Gold then
  138. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShopGoldBuyTips, {runeShopType, runeShopSubType, id})
  139. return
  140. end
  141. end
  142. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShopBuyTips, {runeShopType, runeShopSubType, id})
  143. end
  144. function UIRuneShopBTView:OnClickGiftItem(button, params)
  145. local id = params[0]
  146. local runeShopType = self.controller:GetShopType()
  147. local runeShopSubType = self.controller:GetShopSubType()
  148. ManagerContainer.SDKEventReportMgr:SendClickGoods()
  149. if runeShopType == Enum.RuneShopType.Gifts then
  150. if runeShopSubType == Enum.RuneShopSubType.Gold then
  151. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShopGoldBuyTips, {runeShopType, runeShopSubType, id})
  152. return
  153. end
  154. end
  155. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShopBuyTips, {runeShopType, runeShopSubType, id})
  156. end
  157. function UIRuneShopBTView:OnClickGiftPrice(button, params)
  158. -- 直接发起支付
  159. ManagerContainer.SDKEventReportMgr:SendClickGoods()
  160. local id = params[0]
  161. local errorCodeKey = self.controller:SendPay(id)
  162. if not errorCodeKey then
  163. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCodeKey)
  164. end
  165. end
  166. function UIRuneShopBTView:OnClickLimitedItem(button, params)
  167. local id = params[0]
  168. local itemIdx = params[1]
  169. local runeShopType = self.controller:GetShopType()
  170. local runeShopSubType = self.controller:GetShopSubType()
  171. ManagerContainer.SDKEventReportMgr:SendClickGoods()
  172. if runeShopType == Enum.RuneShopType.Gifts then
  173. if runeShopSubType == Enum.RuneShopSubType.Gold then
  174. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShopGoldBuyTips, {runeShopType, runeShopSubType, id})
  175. return
  176. end
  177. end
  178. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShopBuyTips, {runeShopType, runeShopSubType, id})
  179. ManagerContainer.RedPointMgr.RSLimitGiftRPCtr:CancelRedPointStatusById(id)
  180. self.limitedBox.scrollView.loopGridView:RefreshItemByItemIndex(itemIdx)
  181. end
  182. function UIRuneShopBTView:OnClickLimitedPrice(button, params)
  183. -- 直接发起支付
  184. local id = params[0]
  185. local itemIdx = params[1]
  186. ManagerContainer.SDKEventReportMgr:SendClickGoods()
  187. local errorCodeKey = self.controller:SendPay(id)
  188. if not errorCodeKey then
  189. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCodeKey)
  190. end
  191. ManagerContainer.RedPointMgr.RSLimitGiftRPCtr:CancelRedPointStatusById(id)
  192. self.limitedBox.scrollView.loopGridView:RefreshItemByItemIndex(itemIdx)
  193. end
  194. function UIRuneShopBTView:OnRoCoinChanged()
  195. self:RefreshRoCoinView()
  196. end
  197. function UIRuneShopBTView:OnCoinChanged()
  198. self:RefreshCoinView()
  199. end
  200. function UIRuneShopBTView:OnDiamondChanged()
  201. self:RefreshGoldView()
  202. end
  203. function UIRuneShopBTView:OnVipLvChanged()
  204. self:RefreshVipView()
  205. end
  206. function UIRuneShopBTView:OnRuneShopDataChanged(runeShopType, runeShopSubType)
  207. if runeShopType ~= self.controller:GetShopType() then return end
  208. local curRuneShopSubType = self.controller:GetShopSubType()
  209. if curRuneShopSubType and runeShopSubType ~= curRuneShopSubType then return end
  210. self.controller:RefreshCurShopData()
  211. self:RefreshShopView()
  212. end
  213. function UIRuneShopBTView:OnRPNotify(rpType)
  214. if rpType ~= Enum.RPNotifyType.RuneShopLimitGift then
  215. return
  216. end
  217. if Enum.RuneShopType.LimitTime ~= self.controller:GetShopType() then return end
  218. local curRuneShopSubType = self.controller:GetShopSubType()
  219. if curRuneShopSubType and nil ~= curRuneShopSubType then return end
  220. self:RefreshShopView()
  221. end
  222. function UIRuneShopBTView:RefreshRoCoinView()
  223. self.ro.number.text.text = CommonUtil.FormatNumber(self.controller:GetOwnResCountByItemId(Enum.ItemType.ROCoin))
  224. end
  225. function UIRuneShopBTView:RefreshCoinView()
  226. self.coin.number.text.text = CommonUtil.FormatNumber(self.controller:GetOwnResCountByItemId(Enum.ItemType.Coin))
  227. end
  228. function UIRuneShopBTView:RefreshGoldView()
  229. self.gold.number.text.text = CommonUtil.FormatNumber(self.controller:GetOwnResCountByItemId(Enum.ItemType.Diamond))
  230. end
  231. function UIRuneShopBTView:RefreshVipView()
  232. local curVipLv = self.controller:GetCurVipLv()
  233. local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(curVipLv)
  234. self.vipIcon.image.sprite = nil
  235. self.vipIcon.image.enabled = false
  236. self.vipFrame.image.sprite = nil
  237. self.vipFrame.image.enabled = false
  238. if not vipCfg then
  239. self.vipNameTxt.text.text = ''
  240. return
  241. end
  242. CommonUtil.LoadIcon(self, vipCfg.BigIcon, function(sprite)
  243. if sprite then
  244. self.vipIcon.image.sprite = sprite
  245. self.vipIcon.image.enabled = true
  246. end
  247. end)
  248. CommonUtil.LoadIcon(self, vipCfg.BigFrame, function(sprite)
  249. if sprite then
  250. self.vipFrame.image.sprite = sprite
  251. self.vipFrame.image.enabled = true
  252. end
  253. end)
  254. self.vipNameTxt.text.text = string.formatbykey(vipCfg.Name)
  255. end
  256. function UIRuneShopBTView:RefreshToggleGroupView()
  257. self:SetHideLB()
  258. local shopType = self.controller:GetShopType()
  259. local toggleGroup = self.content.toggleGroup
  260. local oldAllowSwitchOff = toggleGroup.allowSwitchOff
  261. toggleGroup.allowSwitchOff = true
  262. self.weekToggle.toggle.isOn = (shopType == Enum.RuneShopType.MonthCard)
  263. self.giftsToggle.toggle.isOn = (shopType == Enum.RuneShopType.Gifts)
  264. self.limitedToggle.toggle.isOn = (shopType == Enum.RuneShopType.LimitTime)
  265. toggleGroup.allowSwitchOff = oldAllowSwitchOff
  266. end
  267. function UIRuneShopBTView:RefreshShopView(resetPos)
  268. self.privilegeUnlockDess = nil
  269. self.privilegeRewards = nil
  270. self.roPassUnlockDess = nil
  271. self:StopAndClearRefreshTimer()
  272. local shopType = self.controller:GetShopType()
  273. if shopType == Enum.RuneShopType.SpecialPrivilege then
  274. self.privilegeBox:SetActive(true)
  275. self.weekBox:SetActive(false)
  276. self.passportBox:SetActive(false)
  277. self.giftsBox:SetActive(false)
  278. self.limitedBox:SetActive(false)
  279. self:RefreshSpecialPrivilegeView()
  280. self.textBox.text.text = string.formatbykey('DscClub05')
  281. elseif shopType == Enum.RuneShopType.MonthCard then
  282. self.privilegeBox:SetActive(false)
  283. self.weekBox:SetActive(true)
  284. self.passportBox:SetActive(false)
  285. self.giftsBox:SetActive(false)
  286. self.limitedBox:SetActive(false)
  287. self:RefreshMonthCardView()
  288. self.textBox.text.text = string.formatbykey('DscClub06')
  289. elseif shopType == Enum.RuneShopType.PassCheck then
  290. self.privilegeBox:SetActive(false)
  291. self.weekBox:SetActive(false)
  292. self.passportBox:SetActive(true)
  293. self.giftsBox:SetActive(false)
  294. self.limitedBox:SetActive(false)
  295. self:RefreshRoPassView()
  296. self.textBox.text.text = string.formatbykey('DscClub07')
  297. elseif shopType == Enum.RuneShopType.Gifts then
  298. self.privilegeBox:SetActive(false)
  299. self.weekBox:SetActive(false)
  300. self.passportBox:SetActive(false)
  301. self.giftsBox:SetActive(true)
  302. self.limitedBox:SetActive(false)
  303. self:RefreshGiftsView(resetPos)
  304. self.textBox.text.text = string.formatbykey('DscClub02')
  305. elseif shopType == Enum.RuneShopType.LimitTime then
  306. self.privilegeBox:SetActive(false)
  307. self.weekBox:SetActive(false)
  308. self.passportBox:SetActive(false)
  309. self.giftsBox:SetActive(false)
  310. self.limitedBox:SetActive(true)
  311. self:RefreshLimitedView(resetPos)
  312. self.textBox.text.text = string.formatbykey('DscClub03')
  313. else
  314. self.privilegeBox:SetActive(false)
  315. self.weekBox:SetActive(false)
  316. self.passportBox:SetActive(false)
  317. self.giftsBox:SetActive(false)
  318. self.limitedBox:SetActive(false)
  319. self.textBox.text.text = ''
  320. end
  321. end
  322. function UIRuneShopBTView:RefreshSpecialPrivilegeView()
  323. local id = self.controller:GetSpecialPrivilegeId()
  324. local cfgData = nil
  325. local unlock = true
  326. if id then
  327. cfgData = ManagerContainer.CfgMgr:GetPrivilegeCardCfgByLv(id)
  328. if not cfgData then
  329. id = 1
  330. cfgData = ManagerContainer.CfgMgr:GetPrivilegeCardCfgByLv(1)
  331. unlock = false
  332. end
  333. else
  334. id = 1
  335. cfgData = ManagerContainer.CfgMgr:GetPrivilegeCardCfgByLv(1)
  336. unlock = false
  337. end
  338. if not cfgData then
  339. self.privilegeBox:SetActive(false)
  340. return
  341. end
  342. local privilegeCardItem = self.privilegeCardItem
  343. privilegeCardItem.privilegeLv1:SetActive(id == 1)
  344. privilegeCardItem.privilegeLv2:SetActive(id == 2)
  345. local buyRewards = cfgData.BuyReward
  346. if buyRewards then
  347. local buyReward = buyRewards[1]
  348. if buyReward then
  349. self:RefreshCurrenyItem(privilegeCardItem.buyReward1, buyReward[1], buyReward[2], true)
  350. else
  351. self:RefreshCurrenyItem(privilegeCardItem.buyReward1)
  352. end
  353. buyReward = buyRewards[2]
  354. if buyReward then
  355. self:RefreshCurrenyItem(privilegeCardItem.buyReward2, buyReward[1], buyReward[2], true)
  356. else
  357. self:RefreshCurrenyItem(privilegeCardItem.buyReward2)
  358. end
  359. else
  360. self:RefreshCurrenyItem(privilegeCardItem.buyReward1)
  361. self:RefreshCurrenyItem(privilegeCardItem.buyReward2)
  362. end
  363. privilegeCardItem.privilegeScrollView.loopListView:SetListItemCount(0, true)
  364. self.privilegeUnlockDess = unlock and cfgData.Activation or cfgData.UnlockDes
  365. if self.privilegeUnlockDess then
  366. privilegeCardItem.privilegeScrollView.loopListView:SetListItemCount(#self.privilegeUnlockDess, true)
  367. end
  368. privilegeCardItem.rewardScrollView.loopGridView:SetListItemCount(0, true)
  369. self.privilegeRewards = nil
  370. if cfgData.Reward then
  371. self.privilegeRewards = {}
  372. for i = 1, #cfgData.Reward do
  373. local reward = cfgData.Reward[i]
  374. self.privilegeRewards[#self.privilegeRewards+1] = {cfgId = reward[1], num = reward[2]}
  375. end
  376. end
  377. if self.privilegeRewards then
  378. privilegeCardItem.rewardScrollView.loopGridView:SetListItemCount(#self.privilegeRewards, true)
  379. end
  380. privilegeCardItem.active:SetActive(unlock)
  381. privilegeCardItem.unActive:SetActive(not unlock)
  382. if unlock then
  383. local nextCfgData = ManagerContainer.CfgMgr:GetPrivilegeCardCfgByLv(id + 1)
  384. if nextCfgData then
  385. local canUpgrade = false
  386. if nextCfgData.UnlockCond then
  387. canUpgrade = ConditionJudge:ConditionPassResult1(nextCfgData.UnlockCond)
  388. end
  389. privilegeCardItem.btnUpgrade:SetActive(canUpgrade)
  390. privilegeCardItem.btnBuyPrivilege:SetActive(false)
  391. self.uiBase:AddButtonUniqueEventListener(privilegeCardItem.btnUpgrade.button, self, self.OnClickPrivlegeActiveBtn)
  392. else
  393. privilegeCardItem.btnUpgrade:SetActive(false)
  394. privilegeCardItem.btnBuyPrivilege:SetActive(false)
  395. end
  396. if self.controller:CanGetSpecialPrivilegeReward() then
  397. privilegeCardItem.btnReceive:SetActive(true)
  398. privilegeCardItem.labelReceived:SetActive(false)
  399. else
  400. privilegeCardItem.btnReceive:SetActive(false)
  401. privilegeCardItem.labelReceived:SetActive(true)
  402. end
  403. self.uiBase:AddButtonUniqueEventListener(privilegeCardItem.btnReceive.button, self, self.OnClickPrivlegeReceiveBtn)
  404. else
  405. privilegeCardItem.btnUpgrade:SetActive(false)
  406. privilegeCardItem.btnBuyPrivilege:SetActive(true)
  407. privilegeCardItem.btnReceive:SetActive(true)
  408. privilegeCardItem.labelReceived:SetActive(false)
  409. self.uiBase:AddButtonUniqueEventListener(privilegeCardItem.btnBuyPrivilege.button, self, self.OnClickPrivlegeActiveBtn)
  410. self.uiBase:AddButtonUniqueEventListener(privilegeCardItem.btnReceive.button, self, self.OnClickPrivlegeActiveBtn)
  411. end
  412. end
  413. function UIRuneShopBTView:OnClickPrivlegeReceiveBtn()
  414. local errorCode = self.controller:SendRuneSpecialPrvilegeRewardReq()
  415. if errorCode ~= 0 then
  416. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  417. end
  418. end
  419. function UIRuneShopBTView:OnClickPrivlegeActiveBtn()
  420. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPrivilegeCardTips)
  421. end
  422. function UIRuneShopBTView:GetItemByIndexPrivilege(loopListView, itemIdx)
  423. local unlockDess = self.privilegeUnlockDess
  424. if not unlockDess then
  425. return nil
  426. end
  427. local unlockDes = unlockDess[itemIdx + 1]
  428. if not unlockDes then
  429. return nil
  430. end
  431. local item = loopListView:NewListViewItem('EntryUnlockDscItem')
  432. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'EntryUnlockDscItem', item.gameObject)
  433. if itemLua then
  434. local idx = unlockDes[1] or 0
  435. itemLua.icon.uIImageSwitchSprite:ChangeSprite(idx)
  436. local params = {}
  437. local langKey = unlockDes[2]
  438. for i = 3, #unlockDes do
  439. params[#params + 1] = tostring(unlockDes[i])
  440. end
  441. itemLua.desTxt.text.text = string.formatbykey(langKey, unpack(params))
  442. end
  443. ManagerContainer.LuaUIMgr:ForceRebuildLayoutImmediate(item.CachedRectTransform)
  444. return item
  445. end
  446. function UIRuneShopBTView:GetItemByRowColumnPrivilege(loopGridView, itemIdx, row, column)
  447. if not self.privilegeRewards then
  448. return nil
  449. end
  450. local reward = self.privilegeRewards[itemIdx + 1]
  451. if not reward then
  452. return nil
  453. end
  454. local item = loopGridView:NewListViewItem('Item')
  455. local iconItem = item.transform:Find('IconItem')
  456. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'IconItem', iconItem.gameObject)
  457. CommonUtil.UpdateItemPrefab(self, itemLua, reward, nil, self, self.ShowItemTips, reward)
  458. return item
  459. end
  460. function UIRuneShopBTView:ShowItemTips(button, params)
  461. local data = params[0]
  462. ManagerContainer.LuaUIMgr:OpenTips(data)
  463. end
  464. function UIRuneShopBTView:RefreshMonthCardView()
  465. self:RefreshOneMonthCardView(self.weekCard1, 1)
  466. end
  467. function UIRuneShopBTView:RefreshOneMonthCardView(itemLua, idx)
  468. local showGoodsDatas = self.controller:GetShowGoodsDatas()
  469. if not showGoodsDatas then
  470. itemLua:SetActive(false)
  471. return
  472. end
  473. local showGoodsData = showGoodsDatas[idx]
  474. if not showGoodsData then
  475. itemLua:SetActive(false)
  476. return
  477. end
  478. itemLua:SetActive(true)
  479. local cfgData = showGoodsData:GetCfgData()
  480. local buyRewards = cfgData.BuyReward
  481. if buyRewards then
  482. local buyReward = buyRewards[1]
  483. if buyReward then
  484. self:RefreshCurrenyItem(itemLua.buyReward1, buyReward[1], buyReward[2], true)
  485. else
  486. self:RefreshCurrenyItem(itemLua.buyReward1)
  487. end
  488. buyReward = buyRewards[2]
  489. if buyReward then
  490. self:RefreshCurrenyItem(itemLua.buyReward2, buyReward[1], buyReward[2], true)
  491. else
  492. self:RefreshCurrenyItem(itemLua.buyReward2)
  493. end
  494. else
  495. self:RefreshCurrenyItem(itemLua.buyReward1)
  496. self:RefreshCurrenyItem(itemLua.buyReward2)
  497. end
  498. local dayRewards = cfgData.DayReward
  499. if dayRewards then
  500. local dayReward = dayRewards[1]
  501. if dayReward then
  502. self:RefreshCurrenyItem(itemLua.dailyReward, dayReward[1], dayReward[2], true)
  503. else
  504. self:RefreshCurrenyItem(itemLua.dailyReward)
  505. end
  506. else
  507. self:RefreshCurrenyItem(itemLua.dailyReward)
  508. end
  509. local totalRewards = cfgData.TotalReward
  510. if totalRewards then
  511. local totalReward = totalRewards[1]
  512. if totalReward then
  513. self:RefreshCurrenyItem(itemLua.totalReward, totalReward[1], totalReward[2], true)
  514. else
  515. self:RefreshCurrenyItem(itemLua.totalReward)
  516. end
  517. else
  518. self:RefreshCurrenyItem(itemLua.totalReward)
  519. end
  520. local price = showGoodsData:GetPrice()
  521. if price <= 0 then
  522. itemLua.presentPrice.number.text.text = string.formatbykey('Free')
  523. else
  524. itemLua.presentPrice.number.text.text = FloatToPrice(price)
  525. end
  526. local timerStr, outTime = showGoodsData:CalculateLimitTime()
  527. if not outTime then
  528. self:StartRefreshTimer(itemLua, showGoodsData)
  529. itemLua.textDsc.text.text = string.formatbykey('DscClubMonth2', timerStr)
  530. itemLua.active:SetActive(true)
  531. itemLua.unActive:SetActive(false)
  532. else
  533. self:StopRefreshTimer(itemLua)
  534. local mdec = cfgData.Monthdec
  535. if mdec then
  536. itemLua.textDsc.text.text = string.formatbykey(cfgData.Monthdec)
  537. else
  538. itemLua.textDsc.text.text = ""
  539. end
  540. itemLua.active:SetActive(false)
  541. itemLua.unActive:SetActive(true)
  542. end
  543. self.uiBase:AddButtonUniqueEventListener(itemLua.presentPrice.button, self, self.OnClickMonthCardPrice, showGoodsData:GetId())
  544. end
  545. function UIRuneShopBTView:RefreshCurrenyItem(itemLua, itemCfgId, itemNum, ignoreIcon)
  546. if not itemCfgId or not itemNum then
  547. itemLua:SetActive(false)
  548. return
  549. end
  550. itemLua.number.text.text = CommonUtil.FormatNumber(itemNum)
  551. itemLua:SetActive(true)
  552. if ignoreIcon then return end
  553. itemLua.icon.image.sprite = nil
  554. itemLua.icon.image.enabled = false
  555. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(itemCfgId)
  556. if itemCfgData then
  557. CommonUtil.LoadIcon(self, itemCfgData.MiniIcon, function(sprite)
  558. if sprite then
  559. itemLua.icon.image.sprite = sprite
  560. itemLua.icon.image.enabled = true
  561. end
  562. end)
  563. end
  564. end
  565. function UIRuneShopBTView:RefreshRoPassView()
  566. local cfgData = ManagerContainer.CfgMgr:GetPassCheckCfgById(1)
  567. local isActive = self.controller:GetRoPassStatus()
  568. if isActive then
  569. self.rOPassport.active:SetActive(true)
  570. self.rOPassport.presentPrice:SetActive(false)
  571. else
  572. self.rOPassport.active:SetActive(false)
  573. self.rOPassport.presentPrice:SetActive(true)
  574. self.rOPassport.presentPrice.number.text.text = FloatToPrice(cfgData and cfgData.RMB or 999)
  575. self.uiBase:AddButtonUniqueEventListener(self.rOPassport.presentPrice.button, self, self.OnClickRoPassBuy, 1)
  576. end
  577. self.rOPassport.scrollView.loopListView:SetListItemCount(0, true)
  578. if not cfgData then
  579. return
  580. end
  581. self.roPassUnlockDess = isActive and cfgData.Activation or cfgData.UnlockDes
  582. if not self.roPassUnlockDess then
  583. return
  584. end
  585. self.rOPassport.scrollView.loopListView:SetListItemCount(#self.roPassUnlockDess, true)
  586. end
  587. function UIRuneShopBTView:GetItemByIndexROPass(loopListView, itemIdx)
  588. local unlockDess = self.roPassUnlockDess
  589. if not unlockDess then
  590. return nil
  591. end
  592. local unlockDes = unlockDess[itemIdx + 1]
  593. if not unlockDes then
  594. return nil
  595. end
  596. local item = loopListView:NewListViewItem('EntryUnlockDscItem')
  597. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'EntryUnlockDscItem', item.gameObject)
  598. if itemLua then
  599. local idx = unlockDes[1] or 0
  600. itemLua.icon.uIImageSwitchSprite:ChangeSprite(idx)
  601. local params = {}
  602. local langKey = unlockDes[2]
  603. for i = 3, #unlockDes do
  604. params[#params + 1] = tostring(unlockDes[i])
  605. end
  606. itemLua.desTxt.text.text = string.formatbykey(langKey, unpack(params))
  607. end
  608. ManagerContainer.LuaUIMgr:ForceRebuildLayoutImmediate(item.CachedRectTransform)
  609. return item
  610. end
  611. function UIRuneShopBTView:RefreshGiftsView(resetPos)
  612. local shopSubType = self.controller:GetShopSubType()
  613. if shopSubType == Enum.RuneShopSubType.Week then
  614. self:RefreshShopSubBtnState(self.dailyBtn, false)
  615. self:RefreshShopSubBtnState(self.weekBtn, true)
  616. self:RefreshShopSubBtnState(self.roCoinBtn, false)
  617. self:RefreshShopSubBtnState(self.goldBtn, false)
  618. self:RefreshShopSubBtnState(self.monthBtn, false)
  619. elseif shopSubType == Enum.RuneShopSubType.ROCoin then
  620. self:RefreshShopSubBtnState(self.dailyBtn, false)
  621. self:RefreshShopSubBtnState(self.weekBtn, false)
  622. self:RefreshShopSubBtnState(self.roCoinBtn, true)
  623. self:RefreshShopSubBtnState(self.goldBtn, false)
  624. self:RefreshShopSubBtnState(self.monthBtn, false)
  625. elseif shopSubType == Enum.RuneShopSubType.Gold then
  626. self:RefreshShopSubBtnState(self.dailyBtn, false)
  627. self:RefreshShopSubBtnState(self.weekBtn, false)
  628. self:RefreshShopSubBtnState(self.roCoinBtn, false)
  629. self:RefreshShopSubBtnState(self.goldBtn, true)
  630. self:RefreshShopSubBtnState(self.monthBtn, false)
  631. elseif shopSubType == Enum.RuneShopSubType.Daily then
  632. self:RefreshShopSubBtnState(self.dailyBtn, true)
  633. self:RefreshShopSubBtnState(self.weekBtn, false)
  634. self:RefreshShopSubBtnState(self.roCoinBtn, false)
  635. self:RefreshShopSubBtnState(self.goldBtn, false)
  636. self:RefreshShopSubBtnState(self.monthBtn, false)
  637. else
  638. self:RefreshShopSubBtnState(self.dailyBtn, false)
  639. self:RefreshShopSubBtnState(self.weekBtn, false)
  640. self:RefreshShopSubBtnState(self.roCoinBtn, false)
  641. self:RefreshShopSubBtnState(self.goldBtn, false)
  642. self:RefreshShopSubBtnState(self.monthBtn, true)
  643. end
  644. local endTime = self.controller:GetRemainTime()
  645. if endTime then
  646. self:StartRefreshTimer(self, true)
  647. if endTime < 0 then endTime = 0 end
  648. self.timeBox:SetActive(true)
  649. self.timeBox.textTime.text.text = string.formatbykey('RuneShopRefreshTime', DateTimeUtil.convertSeconds2TimeStr1(endTime, true, true, false))
  650. else
  651. self:StopRefreshTimer(self)
  652. self.timeBox:SetActive(false)
  653. end
  654. local showGoodsDatas = self.controller:GetShowGoodsDatas()
  655. local length = (showGoodsDatas and #showGoodsDatas or 0)
  656. if resetPos then
  657. self.giftsBox.scrollView.loopGridView:RefreshListByIndex(length, 0)
  658. else
  659. self.giftsBox.scrollView.loopGridView:RefreshListByIndex(length)
  660. end
  661. end
  662. function UIRuneShopBTView:RefreshShopSubBtnState(itemLua, isOn)
  663. itemLua.off:SetActive(not isOn)
  664. itemLua.on:SetActive(isOn)
  665. itemLua.button.interactable = (not isOn)
  666. end
  667. function UIRuneShopBTView:GetItemByRowColumnGifts(loopGridView, itemIdx, row, column)
  668. local data = self.controller:GetShowGoodsDataByIdx(itemIdx + 1)
  669. if not data then return nil end
  670. local shopSubType = self.controller:GetShopSubType()
  671. if shopSubType == Enum.RuneShopSubType.ROCoin then
  672. return self:RefreshRoCoinShopGoodsItem(loopGridView, data)
  673. else
  674. return self:RefreshMoneyShopGoodsItem(loopGridView, data)
  675. end
  676. end
  677. function UIRuneShopBTView:RefreshMoneyShopGoodsItem(loopGridView, data)
  678. local item = loopGridView:NewListViewItem('RuneShopGoodsItem')
  679. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'RuneShopGoodsItem', item.gameObject)
  680. if itemLua then
  681. itemLua.itemIcon.image.sprite = nil
  682. itemLua.itemIcon.image.enabled = false
  683. itemLua.presentPrice.icon:SetActive(false)
  684. itemLua.presentPrice.currency:SetActive(true)
  685. local cfgData = data.cfgData
  686. if cfgData then
  687. CommonUtil.LoadIcon(self, cfgData.Pic, function(sprite)
  688. if sprite then
  689. itemLua.itemIcon.image.sprite = sprite
  690. itemLua.itemIcon.image.enabled = true
  691. end
  692. end, itemLua, 'ItemIcon')
  693. itemLua.itemName.text.text = string.formatbykey(cfgData.Name)
  694. if cfgData.FirstBuyReward and #cfgData.FirstBuyReward > 0 and data:IsFirstBuy() then
  695. itemLua.discount:SetActive(true)
  696. itemLua.discount.text.text.text = string.formatbykey('LabelFirst')
  697. self:RefreshGiftsItem(itemLua, FirstBuyBgIconPath, cfgData.FirstBuyPic, cfgData.Reward)
  698. elseif cfgData.ExtraBuyReward and #cfgData.ExtraBuyReward > 0 then
  699. itemLua.discount:SetActive(true)
  700. itemLua.discount.text.text.text = string.formatbykey('LabelExtra')
  701. self:RefreshGiftsItem(itemLua, ExtraBuyBgIconPath, cfgData.ExtraBuyPic, cfgData.Reward)
  702. else
  703. itemLua.discount:SetActive(false)
  704. self:RefreshGiftsItem(itemLua, nil, nil, cfgData.Reward)
  705. end
  706. else
  707. itemLua.discount:SetActive(false)
  708. itemLua.itemName.text.text = ''
  709. itemLua.specialReward:SetActive(false)
  710. itemLua.goodsItems:SetActive(false)
  711. end
  712. local remainBuyNum = data:GetRemainBuyNum()
  713. if remainBuyNum >= 0 then
  714. itemLua.purchaseLimit:SetActive(true)
  715. itemLua.purchaseLimit.text.text = string.formatbykey('RuneShopLimitBuy', tostring(remainBuyNum))
  716. else
  717. itemLua.purchaseLimit:SetActive(false)
  718. end
  719. local price = data:GetPrice()
  720. if price <= 0 then
  721. itemLua.presentPrice.number.text.text = string.formatbykey('Free')
  722. else
  723. itemLua.presentPrice.number.text.text = FloatToPrice(price)
  724. end
  725. if data:IsSoldout() then
  726. itemLua.soldout:SetActive(true)
  727. itemLua.button.onClick:RemoveAllListeners()
  728. itemLua.presentPrice.button.onClick:RemoveAllListeners()
  729. else
  730. itemLua.soldout:SetActive(false)
  731. self.uiBase:AddButtonUniqueEventListener(itemLua.button, self, self.OnClickGiftItem, data:GetId())
  732. self.uiBase:AddButtonUniqueEventListener(itemLua.presentPrice.button, self, self.OnClickGiftPrice, data:GetId())
  733. end
  734. end
  735. return item
  736. end
  737. function UIRuneShopBTView:RefreshRoCoinShopGoodsItem(gridView, data)
  738. local item = gridView:NewListViewItem('ShopGoodsItem')
  739. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'ShopGoodsItem', item.gameObject)
  740. local cfgData = data:GetCfgData()
  741. local rewards = cfgData.Reward
  742. local cfgId = rewards[1][1]
  743. CommonUtil.UpdateItemPrefab(self, itemLua.iconItem, {cfgId = cfgId}, nil)
  744. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(Enum.ItemIds.ROCoin)
  745. CommonUtil.LoadIcon(self, itemCfgData.MiniIcon, function (sprite)
  746. itemLua.presentPrice.icon.image.sprite = sprite
  747. itemLua.originalPrice.icon.image.sprite = sprite
  748. end, itemLua, 'CurrenyIcon')
  749. itemLua.itemName.text.text = string.formatbykey(cfgData.Name)
  750. local price = data:GetPrice()
  751. if price <= 0 then
  752. itemLua.presentPrice.number.text.text = string.formatbykey('Free')
  753. else
  754. itemLua.presentPrice.number.text.text = FloatToPrice(price)
  755. end
  756. itemLua.discount:SetActive(false)
  757. itemLua.originalPrice:SetActive(false)
  758. local remainBuyNum = data:GetRemainBuyNum()
  759. if remainBuyNum >= 0 then
  760. itemLua.purchaseLimit:SetActive(true)
  761. itemLua.purchaseLimit.text.text = string.formatbykey("RuneShopLimitBuy", remainBuyNum)
  762. itemLua.limitBox:SetActive(false)
  763. else
  764. itemLua.purchaseLimit:SetActive(false)
  765. itemLua.limitBox:SetActive(false)
  766. end
  767. itemLua.soldout:SetActive(data:IsSoldout())
  768. self.uiBase:AddButtonUniqueEventListener(itemLua.button, self, self.OnClickShopGoodsItem, data)
  769. self.uiBase:AddButtonUniqueEventListener(itemLua.presentPrice.button, self, self.OnClickShopGoodsItem, data)
  770. return item
  771. end
  772. function UIRuneShopBTView:RefreshGiftsItem(itemLua, bgPic, numPic, rewards)
  773. if numPic and numPic ~= '' then
  774. itemLua.specialReward.bg.image.sprite = nil
  775. itemLua.specialReward.bg.image.enabled = false
  776. CommonUtil.LoadIcon(self, bgPic, function(sprite)
  777. if sprite then
  778. itemLua.specialReward.bg.image.sprite = sprite
  779. itemLua.specialReward.bg.image.enabled = true
  780. end
  781. end, itemLua, 'SpecialRewardBgIcon')
  782. itemLua.specialReward.num.image.sprite = nil
  783. itemLua.specialReward.num.image.enabled = false
  784. CommonUtil.LoadIcon(self, numPic, function(sprite)
  785. if sprite then
  786. itemLua.specialReward.num.image.sprite = sprite
  787. itemLua.specialReward.num.image.enabled = true
  788. end
  789. end, itemLua, 'SpecialRewardNumIcon')
  790. itemLua.specialReward:SetActive(true)
  791. itemLua.goodsItems:SetActive(false)
  792. else
  793. itemLua.specialReward:SetActive(false)
  794. if rewards then
  795. itemLua.goodsItems:SetActive(true)
  796. local reward = rewards[1]
  797. if reward then
  798. itemLua.iconSmallItem1:SetActive(true)
  799. CommonUtil.UpdateItemPrefab(self, itemLua.iconSmallItem1, {cfgId = reward[1], num = reward[2]}, Enum.ItemIEnterType.Bag)
  800. else
  801. itemLua.iconSmallItem1:SetActive(false)
  802. end
  803. reward = rewards[2]
  804. if reward then
  805. itemLua.iconSmallItem2:SetActive(true)
  806. CommonUtil.UpdateItemPrefab(self, itemLua.iconSmallItem2, {cfgId = reward[1], num = reward[2]}, Enum.ItemIEnterType.Bag)
  807. else
  808. itemLua.iconSmallItem2:SetActive(false)
  809. end
  810. reward = rewards[3]
  811. if reward then
  812. itemLua.iconSmallItem3:SetActive(true)
  813. CommonUtil.UpdateItemPrefab(self, itemLua.iconSmallItem3, {cfgId = reward[1], num = reward[2]}, Enum.ItemIEnterType.Bag)
  814. else
  815. itemLua.iconSmallItem3:SetActive(false)
  816. end
  817. else
  818. itemLua.goodsItems:SetActive(false)
  819. end
  820. end
  821. end
  822. function UIRuneShopBTView:GetItemByRowColumnLimited(loopGridView, itemIdx, row, column)
  823. local data = self.controller:GetShowGoodsDataByIdx(itemIdx + 1)
  824. if not data then return nil end
  825. local item = loopGridView:NewListViewItem('RuneShopLimitedItem')
  826. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'RuneShopLimitedItem', item.gameObject)
  827. if itemLua then
  828. itemLua.itemIcon.image.sprite = nil
  829. itemLua.itemIcon.image.enabled = false
  830. local cfgData = data.cfgData
  831. if cfgData then
  832. CommonUtil.LoadIcon(self, cfgData.Banner, function(sprite)
  833. if sprite then
  834. itemLua.itemIcon.image.sprite = sprite
  835. itemLua.itemIcon.image.enabled = true
  836. end
  837. end, itemLua, 'ItemIcon')
  838. end
  839. if data:HasEndTime() then
  840. local timerStr = data:CalculateLimitTime()
  841. itemLua.timerLab.text.text.text = string.formatbykey('RuneShopLimitTime', timerStr)
  842. itemLua.timerLab:SetActive(true)
  843. self:StartRefreshTimer(itemLua, data)
  844. else
  845. self:StopRefreshTimer(itemLua)
  846. itemLua.timerLab:SetActive(false)
  847. end
  848. local price = data:GetPrice()
  849. if price <= 0 then
  850. itemLua.presentPrice.number.text.text = string.formatbykey('Free')
  851. else
  852. itemLua.presentPrice.number.text.text = FloatToPrice(price)
  853. end
  854. if data:IsSoldout() then
  855. itemLua.soldout:SetActive(true)
  856. itemLua.button.onClick:RemoveAllListeners()
  857. itemLua.presentPrice.button.onClick:RemoveAllListeners()
  858. else
  859. itemLua.soldout:SetActive(false)
  860. self.uiBase:AddButtonUniqueEventListener(itemLua.button, self, self.OnClickLimitedItem, data:GetId(), itemIdx)
  861. self.uiBase:AddButtonUniqueEventListener(itemLua.presentPrice.button, self, self.OnClickLimitedPrice, data:GetId(), itemIdx)
  862. end
  863. itemLua.redPoint:SetActive(ManagerContainer.RedPointMgr.RSLimitGiftRPCtr:GetRedPointStatusById(data:GetId()))
  864. end
  865. return item
  866. end
  867. function UIRuneShopBTView:RefreshLimitedView(resetPos)
  868. local showGoodsDatas = self.controller:GetShowGoodsDatas()
  869. local length = (showGoodsDatas and #showGoodsDatas or 0)
  870. if resetPos then
  871. self.limitedBox.scrollView.loopGridView:RefreshListByIndex(length, 0)
  872. else
  873. self.limitedBox.scrollView.loopGridView:RefreshListByIndex(length)
  874. end
  875. end
  876. function UIRuneShopBTView:StartRefreshTimer(itemLua, goodsData)
  877. local timer = self.refreshTimer
  878. if not timer then
  879. timer = Timer.New(slot(self.RefreshTimer, self), 1, -1)
  880. self.refreshTimer = timer
  881. end
  882. local updateItemMap = timer.updateItemMap
  883. if not updateItemMap then
  884. updateItemMap = {}
  885. timer.updateItemMap = updateItemMap
  886. end
  887. updateItemMap[itemLua] = goodsData
  888. if not timer.running then
  889. timer:Start()
  890. end
  891. end
  892. function UIRuneShopBTView:StopRefreshTimer(itemLua)
  893. local timer = self.refreshTimer
  894. if timer then
  895. local updateItemMap = timer.updateItemMap
  896. if updateItemMap then
  897. updateItemMap[itemLua] = nil
  898. end
  899. if not updateItemMap or table_is_empty(updateItemMap) then
  900. timer:Stop()
  901. end
  902. end
  903. end
  904. function UIRuneShopBTView:StopAndClearRefreshTimer()
  905. if self.refreshTimer then
  906. self.refreshTimer:Stop()
  907. self.refreshTimer.time = 1
  908. self.refreshTimer.duration = 1
  909. self.refreshTimer.updateItemMap = nil
  910. end
  911. end
  912. function UIRuneShopBTView:DisposeRefreshTimer()
  913. self:StopAndClearRefreshTimer()
  914. self.refreshTimer = nil
  915. end
  916. function UIRuneShopBTView:RefreshTimer()
  917. local timer = self.refreshTimer
  918. if not timer then return end
  919. local updateItemMap = timer.updateItemMap
  920. if not updateItemMap or table_is_empty(updateItemMap) then
  921. timer:Stop()
  922. return
  923. end
  924. local minRemainTime = nil
  925. local runeShopType = self.controller:GetShopType()
  926. if runeShopType == Enum.RuneShopType.MonthCard then
  927. for itemLua, goodsData in pairs(updateItemMap) do
  928. local timerStr, outTime, remainTime = goodsData:CalculateLimitTime()
  929. if not outTime then
  930. itemLua.textDsc.text.text = string.formatbykey('DscClubMonth2', timerStr)
  931. itemLua.active:SetActive(true)
  932. itemLua.unActive:SetActive(false)
  933. else
  934. updateItemMap[itemLua] = nil
  935. itemLua.textDsc.text.text = string.formatbykey('DscClubMonth1')
  936. itemLua.active:SetActive(false)
  937. itemLua.unActive:SetActive(true)
  938. end
  939. if remainTime and remainTime > 0 then
  940. if not minRemainTime or minRemainTime > remainTime then
  941. minRemainTime = remainTime
  942. end
  943. end
  944. end
  945. if minRemainTime and minRemainTime > 0 then
  946. minRemainTime = 1
  947. end
  948. elseif runeShopType == Enum.RuneShopType.Gifts then
  949. local endTime = self.controller:GetRemainTime()
  950. if endTime then
  951. if endTime < 0 then endTime = 0 end
  952. if endTime <= 0 then
  953. timer.updateItemMap = nil
  954. end
  955. self.timeBox:SetActive(true)
  956. self.timeBox.textTime.text.text = string.formatbykey('RuneShopRefreshTime', DateTimeUtil.convertSeconds2TimeStr1(endTime, true, true, false))
  957. else
  958. self.timeBox:SetActive(false)
  959. timer.updateItemMap = nil
  960. end
  961. if endTime and endTime > 0 then
  962. if not minRemainTime or minRemainTime > endTime then
  963. minRemainTime = endTime
  964. end
  965. end
  966. elseif runeShopType == Enum.RuneShopType.LimitTime then
  967. for itemLua, goodsData in pairs(updateItemMap) do
  968. if goodsData:HasEndTime() then
  969. local timerStr, outTime, remainTime = goodsData:CalculateLimitTime()
  970. if outTime then
  971. updateItemMap[itemLua] = nil
  972. end
  973. itemLua.timerLab.text.text.text = string.formatbykey('RuneShopLimitTime', timerStr)
  974. itemLua.timerLab:SetActive(true)
  975. if remainTime and remainTime > 0 then
  976. if not minRemainTime or minRemainTime > remainTime then
  977. minRemainTime = remainTime
  978. end
  979. end
  980. else
  981. updateItemMap[itemLua] = nil
  982. itemLua.timerLab:SetActive(false)
  983. end
  984. if minRemainTime and minRemainTime > 0 then
  985. minRemainTime = 1
  986. end
  987. end
  988. end
  989. if not minRemainTime or minRemainTime <= 0 then
  990. self:StopRefreshTimer()
  991. else
  992. -- 降低刷新频率
  993. if self.refreshTimer then
  994. local validTime = nil
  995. if minRemainTime >= 86400 then
  996. validTime = minRemainTime % 3600
  997. if validTime == 0 then validTime = 3600 end
  998. elseif minRemainTime >= 3600 then
  999. validTime = minRemainTime % 60
  1000. if validTime == 0 then validTime = 60 end
  1001. else
  1002. validTime = 1
  1003. end
  1004. if validTime then
  1005. self.refreshTimer.duration = validTime
  1006. else
  1007. self:StopRefreshTimer()
  1008. end
  1009. end
  1010. end
  1011. end
  1012. function UIRuneShopBTView:SetHideLB()
  1013. if IShServer() then
  1014. self.controller:SetData({Enum.RuneShopType.Gifts,Enum.RuneShopSubType.ROCoin})
  1015. self.controller:InitData()
  1016. self.privilegeCardToggle:SetActive(false)
  1017. self.weekToggle:SetActive(false)
  1018. self.passportToggle:SetActive(false)
  1019. self.limitedToggle:SetActive(false)
  1020. self.weekBtn:SetActive(false)
  1021. self.monthBtn:SetActive(false)
  1022. end
  1023. end
  1024. return UIRuneShopBTView