UIClimbingTowerView.lua 37 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151
  1. local UIClimbingTowerView = require("UIClimbingTower/UIClimbingTowerView_Generate")
  2. local PreviewSystem = require "PreviewSystem"
  3. local RoleViewSystem = require "RoleViewSystem"
  4. local IconItemCtr = require "Common.IconItemCtr"
  5. local previewSystem
  6. local moveState = false
  7. local LastmoveState = false
  8. function UIClimbingTowerView:OnAwake(data)
  9. self.controller = require("UIClimbingTower/UIClimbingTowerCtr"):new()
  10. self.controller:Init(self)
  11. self.controller:SetData(data)
  12. end
  13. function UIClimbingTowerView:AddEventListener()
  14. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.EID_REFRESH_CLIMBINGTOWER_DATA,self,self.UpdateLevelsData)
  15. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.REFRESH_CLIMBINGTOWER_DAYREWARD,self,self.GetPopGot)
  16. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.EID_CHANGE_TOWER_SHOW_REFRESH,self,self.ShowChange)
  17. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.EID_REFRESH_PEAKTOWER_WIN_DATA,self,self.UpdatePeakTowerDataAfterWin)
  18. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.EID_Refresh_ClimbingTower_FriendInfo,self,self.RefreshClimbingTowerFriendInfo)
  19. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.WJ_ON_BATTLE_CHANGE,self,self.RefreshBattleBuffInfo)
  20. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_TOWER_LEVEL_MIN_FIGHT_POWER_ACK, self.OnFightPowerAck,self)
  21. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.WJ_ON_BOSS_CHANGE,self,self.RefWJNPC)
  22. end
  23. function UIClimbingTowerView:GetPopGot(data)
  24. if not data then
  25. return
  26. end
  27. local rewards = {}
  28. for i = 1, #data do
  29. table.insert(rewards,{cfgId = data[i].key,num = data[i].value})
  30. end
  31. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot,{rewards = rewards})
  32. end
  33. function UIClimbingTowerView:FillContent(data, uiBase)
  34. self.uiBase = uiBase
  35. local gameObject = self.uiBase:GetRoot()
  36. if gameObject ~= nil then
  37. self.gameObject = gameObject
  38. self.transform = gameObject.transform
  39. end
  40. self:InitGenerate(self.transform, data)
  41. self:Init()
  42. end
  43. function UIClimbingTowerView:Init()
  44. self.initedOver = false
  45. self.otherType = nil
  46. self.uIGoto:SetActive(true)
  47. self.text2.uILocalizeScript:SetContent("GoToLvlUp")
  48. self.text1.uILocalizeScript:SetContentAndValues("LvlUpNum", {0})
  49. self:OnHeroLvChanged()
  50. self:InitBattleBuffView()
  51. --会跳往主角界面
  52. if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIMain) == false then
  53. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIMain)
  54. end
  55. --打开限时礼包
  56. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.LIMIT_RECHARGE_OPEN_UI_NTF)
  57. -- --适配宽度
  58. -- if nil ~= self.scrollview and nil ~= self.scrollview.content and nil ~= self.scrollview.content.gridLayoutGroup then
  59. -- local rectTrans = self.scrollview.content:GetComponent(Enum.TypeInfo.RectTransform)
  60. -- if nil ~= rectTrans then
  61. -- self.scrollview.content.gridLayoutGroup.cellSize = Vector2(rectTrans.rect.width, self.scrollview.content.gridLayoutGroup.cellSize.y)
  62. -- end
  63. -- end
  64. -- self:InitGrid()
  65. self.cover:SetActive(true)
  66. self.cover.animator:Play("CoverKeep")
  67. --保护机制 5秒后关闭云
  68. if self.cloudTimer then
  69. self.cloudTimer:Stop()
  70. end
  71. if not self.cloudTimer then
  72. self.cloudTimer = Timer.New(slot(self.CloudOut, self), 1)
  73. end
  74. if not self.cloudTimer.running then
  75. self.cloudTimer:Start()
  76. end
  77. self:Refresh()
  78. if not self.queryTimer then
  79. self.queryTimer = FrameTimer.New(slot(self.QueryDatas, self), 1)
  80. end
  81. if not self.queryTimer.running then
  82. self.queryTimer:Start()
  83. end
  84. end
  85. function UIClimbingTowerView:QueryDatas()
  86. local type = self.controller:GetCurTowerType()
  87. self.controller:SendTowerInfoReq(type)
  88. end
  89. function UIClimbingTowerView:Refresh()
  90. local tdmgr = ManagerContainer.DataMgr.TowerDataMgr
  91. local mode = tdmgr:GetTowerMode()
  92. local isWj = mode == 2
  93. self.scrollview:SetActive(not isWj)
  94. self.wJNode:SetActive(isWj)
  95. local type = self.controller:GetCurTowerType()
  96. self:SetTitle(mode)
  97. if isWj then
  98. self:RefWJNPC()
  99. end
  100. if type == Enum.UnlimitTowerType.PeakTower then
  101. self.rewardLoopGridMap = {}
  102. self.scrollItemGoes = {}
  103. self.roleSystemMap = {}
  104. self.previewSystemMap = {}
  105. self.scrollview.loopListView.mOnSnapItemFinished = function(loopListView, loopListViewItem)
  106. return self:OnSnapItemFinished(loopListView, loopListViewItem)
  107. end
  108. -- self.boardTitle.uILocalizeScript:SetContent("TopTowerTitle")
  109. elseif type == Enum.UnlimitTowerType.ClimbingTower then
  110. -- self.boardTitle.uILocalizeScript:SetContent("TitleClimbingTower")
  111. end
  112. --local isShowTop_Lock = (self.controller:FindLevelIsPassed() == true and type == Enum.UnlimitTowerType.ClimbingTower)
  113. self.btnTowerTop:SetActive(false) --type == Enum.UnlimitTowerType.ClimbingTower
  114. self.btnTowerTop_lock:SetActive(false) --not isShowTop_Lock
  115. self.btnTower:SetActive(true)--type == Enum.UnlimitTowerType.PeakTower
  116. self.btnStatistics:SetActive(type == Enum.UnlimitTowerType.ClimbingTower)
  117. end
  118. function UIClimbingTowerView:InitGrid()
  119. self.scrollview.loopListView:InitListView(0, function(gridView, itemIndex)
  120. return self:GetItemByRowColumn(gridView, itemIndex)
  121. end, nil)
  122. end
  123. function UIClimbingTowerView:RemoveEventListener()
  124. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  125. end
  126. function UIClimbingTowerView:AddUIEventListener()
  127. self.uiBase:AddButtonEventListener(self.closeBtn.button,self,self.OnClickClose)
  128. self.uiBase:AddButtonEventListener(self.rankBtn.button,self,self.OnClickRank)
  129. self.uiBase:AddButtonEventListener(self.playRuleBtn.button, self, self.OnClickPlayRuleBtn)
  130. self.uiBase:AddButtonEventListener(self.btnStatistics.button,self,self.OnClickBtnStatistics)
  131. --角色升级动画弹出播放
  132. self.uiBase:AddButtonEventListener(self.btnInOut.button,self,self.OnPlayChangeShowState)
  133. -- 前往角色界面
  134. self.uiBase:AddButtonEventListener(self.btnGoto.button,self,self.OnShowRoleWnd)
  135. self.uiBase:AddButtonEventListener(self.btnTower.button, self, self.ShowTowerMode)
  136. self.uiBase:AddButtonEventListener(self.btnTowerTop.button, self, self.ShowTowerMode)
  137. self.uiBase:AddButtonEventListener(self.btnPresent.button, self, self.OnBtnPresentClick)
  138. self.uiBase:AddButtonEventListener(self.towerBgBtn.button,self,self.CloseModeNode)
  139. self.uiBase:AddButtonEventListener(self.wjchallengeBtn.button,self,self.OnClickWJBtn)
  140. self.uiBase:AddButtonEventListener(self.gotoBtn.button,self,self.OnClickRewardInfo)
  141. self.uiBase:AddButtonEventListener(self.buyBuffBtn.button,self,self.OnClickGotoBuyBuff)
  142. end
  143. function UIClimbingTowerView:OnSnapItemFinished(loopListView, loopListViewItem)
  144. for _,v in pairs(self.scrollItemGoes) do
  145. local instanceId = v.gameObject:GetInstanceID()
  146. if v.gameObject.activeSelf then
  147. self.previewSystemMap[instanceId]:RemoveGo(v.gameObject)
  148. end
  149. end
  150. end
  151. function UIClimbingTowerView:ShowChange(needChange)
  152. self:Clear()
  153. self.cover:SetActive(true)
  154. self:InitGrid()
  155. LogError("Show change "..Inspect(needChange))
  156. --保护机制 5秒后关闭云
  157. if not self.cloudTimer then
  158. self.cloudTimer = Timer.New(slot(self.CloudOut, self), 1)
  159. end
  160. if not self.cloudTimer.running then
  161. self.cloudTimer:Start()
  162. end
  163. if needChange and self.otherType then
  164. self.controller:ChangeToOtherType()
  165. self.otherType = nil
  166. end
  167. self:Refresh()
  168. end
  169. function UIClimbingTowerView:CloudOut()
  170. self.cover.animator:Play("CoverOut")
  171. end
  172. function UIClimbingTowerView:OnBtnTowerClick()
  173. --ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('ClimbingTowerClickTips')
  174. LogError('OnBtnTowerClick')
  175. self.otherType = 1 - self.controller:GetCurTowerType()
  176. local needQuery = self.controller:SendTowerInfoReq(self.otherType)
  177. if not needQuery then
  178. self:ShowChange(true)
  179. self:UpdateLevelsData()
  180. end
  181. end
  182. function UIClimbingTowerView:OnBtnPresentClick()
  183. local server_time = ManagerContainer.LuaTimerMgr:CurLuaServerTime()
  184. local servertime = type(server_time) == "number" and server_time or #server_time
  185. local dayRewardTime = ManagerContainer.DataMgr.TowerDataMgr:GetDayRewardTime()
  186. if dayRewardTime < servertime then
  187. local curlevel = ManagerContainer.DataMgr.TowerDataMgr:GetCurChallengeLevel() - 1
  188. local curRewardData,nextRewardData,NoReward = self:GetRewardDataBylv(curlevel)
  189. local tipsKey = ""
  190. local data = nil
  191. if NoReward then
  192. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("PresentErrorTips2")
  193. return
  194. end
  195. if nextRewardData then
  196. tipsKey = "ClimbingTowerDayRewardTips1"
  197. data = {curRewardData[2],nextRewardData[1] - curlevel,nextRewardData[2]}
  198. else
  199. tipsKey = "ClimbingTowerDayRewardTips2"
  200. data = {curRewardData[2]}
  201. end
  202. ManagerContainer.LuaUIMgr:ShowMessageBox(tipsKey,data,nil,self,self.OnSureGetDayReward)
  203. else
  204. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("PresentErrorTips1")
  205. end
  206. end
  207. function UIClimbingTowerView:OnSureGetDayReward()
  208. ManagerContainer.DataMgr.TowerDataMgr:OnClimbingTowerDayRewardREQ()
  209. end
  210. function UIClimbingTowerView:GetRewardDataBylv(lv)
  211. local str = GlobalConfig.Instance:GetConfigStrValue(357)
  212. local tab = CommonUtil.DeserializeGlobalStrToNumberTable(str)
  213. if tab then
  214. for i = 1, #tab do
  215. local curData = tab[i]
  216. local nextData = tab[i + 1]
  217. if nextData then
  218. if lv < curData[1] then
  219. return {0,0},curData,true
  220. elseif curData[1] <= lv and lv < nextData[1] then
  221. return curData,nextData
  222. end
  223. else
  224. return curData,nil
  225. end
  226. end
  227. end
  228. end
  229. --角色升级后 升级动画弹出播放
  230. function UIClimbingTowerView:OnHeroLvChanged()
  231. local nCount,nId = self:GetLeveUpNum()
  232. if nCount > 0 then
  233. moveState = true
  234. if nil ~= self.light then
  235. self.light:SetActive(true)
  236. end
  237. else
  238. if nil ~= self.light then
  239. self.light:SetActive(false)
  240. end
  241. end
  242. self:OnPlayChangeShow(nCount)
  243. end
  244. --获取上阵角色可升级数量
  245. function UIClimbingTowerView:GetLeveUpNum()
  246. local nBattlePatnerNum = 0
  247. local nPartnerId = -1
  248. --可上阵伙伴
  249. local tbBattlePartner = self:GetSortPartner()
  250. for i = 1, #tbBattlePartner do
  251. --是否可升级
  252. local lvUpState = ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerLvUpRPStatusById(tbBattlePartner[i].id)
  253. if lvUpState then
  254. if nPartnerId == -1 then
  255. nPartnerId = tbBattlePartner[i].id
  256. end
  257. nBattlePatnerNum = nBattlePatnerNum + 1
  258. end
  259. end
  260. return nBattlePatnerNum , nPartnerId
  261. end
  262. function UIClimbingTowerView:GetSortPartner()
  263. local partnerDatas = ManagerContainer.DataMgr.PartnerData:GetPartnersDataByInBattle()
  264. local sortedPartnerDatas = {}
  265. for _,v in pairs(partnerDatas) do
  266. sortedPartnerDatas[#sortedPartnerDatas + 1] = v
  267. end
  268. table.sort(sortedPartnerDatas, function (a, b)
  269. if a.owned and b.owned then
  270. return a.post < b.post
  271. else
  272. if a.owned and not b.owned then
  273. return true
  274. elseif not a.owned and b.owned then
  275. return false
  276. else
  277. return a.post < b.post
  278. end
  279. end
  280. end)
  281. return sortedPartnerDatas
  282. end
  283. --按钮点击 角色升级动画弹出播放
  284. function UIClimbingTowerView:OnPlayChangeShowState()
  285. moveState = not moveState
  286. self:OnPlayChangeShow()
  287. end
  288. --展示升级动画弹出播放
  289. function UIClimbingTowerView:OnPlayChangeShow(nCount)
  290. if nil == self.text1 or nil == self.bgGoto then
  291. return
  292. end
  293. if nil ~= nCount then
  294. self.text1.uILocalizeScript:SetContentAndValues("LvlUpNum", {nCount})
  295. end
  296. if LastmoveState ~= moveState then
  297. if moveState then
  298. self.bgGoto.animator:CrossFade("UIGotoIn", 0.1)
  299. else
  300. self.bgGoto.animator:CrossFade("UIGotoOut", 0.1)
  301. end
  302. LastmoveState = moveState
  303. end
  304. end
  305. -- 前往角色界面
  306. function UIClimbingTowerView:OnShowRoleWnd()
  307. local ncount,nId = self:GetLeveUpNum()
  308. if nId == -1 then
  309. nId = nil
  310. end
  311. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UIMAINVIEW_CHANGE_NOTICE, Enum.MainViewPageType.Role, nId)
  312. end
  313. function UIClimbingTowerView:OnHide()
  314. end
  315. function UIClimbingTowerView:OnShow(data)
  316. self.controller:SetData(data)
  317. self:UpdateLevelsData()
  318. end
  319. function UIClimbingTowerView:Clear()
  320. self.initedOver = false
  321. if self.queryTimer then
  322. self.queryTimer:Stop()
  323. self.queryTimer = nil
  324. end
  325. if self.cloudTimer then
  326. self.cloudTimer:Stop()
  327. self.cloudTimer = nil
  328. end
  329. if self.peakRefreshTimer then
  330. self.peakRefreshTimer:Stop()
  331. self.peakRefreshTimer = nil
  332. end
  333. local type = self.controller:GetCurTowerType()
  334. if type == Enum.UnlimitTowerType.PeakTower then
  335. if self.scrollItemGoes then
  336. self.scrollItemGoes = nil
  337. end
  338. if self.rewardLoopGridMap then
  339. for _, v in pairs(self.rewardLoopGridMap) do
  340. v:Dispose()
  341. end
  342. self.rewardLoopGridMap = nil
  343. end
  344. if self.previewSystemMap then
  345. for _, v in pairs(self.previewSystemMap) do
  346. v:Dispose()
  347. end
  348. self.previewSystemMap = nil
  349. end
  350. if self.roleSystemMap then
  351. for _, v in pairs(self.roleSystemMap) do
  352. v:Dispose()
  353. end
  354. self.rewardLoopGridMap = nil
  355. end
  356. end
  357. self.scrollview.loopListView:Dispose()
  358. end
  359. function UIClimbingTowerView:OnClose()
  360. self:Clear()
  361. self.cover:SetActive(false)
  362. end
  363. function UIClimbingTowerView:OnDispose()
  364. end
  365. function UIClimbingTowerView:RefreshClimbingTowerFriendInfo(levelIds)
  366. self.scrollview.loopListView:RefreshAllShownItem()
  367. end
  368. function UIClimbingTowerView:FindItemGo(levelId)
  369. if self.scrollview.content == nil then
  370. return nil
  371. end
  372. return self.scrollview.content.transform:Find(tostring(levelId))
  373. end
  374. function UIClimbingTowerView:UpdateLevelsData()
  375. self.controller:RefreshTowerDatas()
  376. local loopListView = self.scrollview.loopListView
  377. local length = self.controller:GetShowDataLength()
  378. local curTowerFloorIdx = self.controller:GetCurTowerFloorIdx()
  379. local type = self.controller:GetCurTowerType()
  380. if type == Enum.UnlimitTowerType.PeakTower then
  381. if curTowerFloorIdx < length then
  382. length = math.min(curTowerFloorIdx + 5, length)
  383. if curTowerFloorIdx <= 2 then
  384. curTowerFloorIdx = 1
  385. else
  386. curTowerFloorIdx = curTowerFloorIdx - 1
  387. end
  388. else
  389. curTowerFloorIdx = length - 2
  390. end
  391. self.peakStep = 0
  392. loopListView:SetListItemCount(length, false)
  393. self.scrollview.loopListView:MovePanelToItemIndex(curTowerFloorIdx - 1, 0)
  394. if not self.peakRefreshTimer then
  395. self.peakRefreshTimer = FrameTimer.New(slot(self.RefreshPeakTowerItems, self), 10, 3)
  396. end
  397. if not self.peakRefreshTimer.running then
  398. self.peakRefreshTimer:Start()
  399. end
  400. elseif type == Enum.UnlimitTowerType.ClimbingTower then
  401. if curTowerFloorIdx <= 2 then
  402. curTowerFloorIdx = 1
  403. else
  404. curTowerFloorIdx = curTowerFloorIdx - 1
  405. end
  406. loopListView:SetListItemCount(length, false)
  407. if curTowerFloorIdx > 1 then
  408. loopListView:MovePanelToItemIndex(curTowerFloorIdx - 1, 0)
  409. end
  410. end
  411. self.initedOver = true
  412. -- self.cover.animator:Play("CoverOut")
  413. end
  414. function UIClimbingTowerView:RefreshPeakTowerItems()
  415. self.peakStep = self.peakStep + 1
  416. local length = self.controller:GetShowDataLength()
  417. for i = 1, length do
  418. self:RefreshTopPeakItemByIdx(nil, i)
  419. end
  420. if self.peakStep >= 3 then
  421. self.peakStep = -1
  422. end
  423. end
  424. function UIClimbingTowerView:SetNpcInfo(levelNode,npcImg,natureImg,npc,Level)
  425. --怪物等級為爬塔層數 * 2
  426. levelNode.text.text = tostring(Level * 2)
  427. CommonUtil.LoadIcon(self, npc.npcImg, function (sprite)
  428. npcImg.image.sprite = sprite
  429. npcImg.image:SetNativeSize()
  430. if npc.offset~= nil then
  431. npcImg.rectTransform.anchoredPosition = npc.offset
  432. end
  433. end)
  434. CommonUtil.LoadIcon(self, npc.natureIcon, function (sprite)
  435. natureImg.image.sprite = sprite
  436. end)
  437. end
  438. function UIClimbingTowerView:GetItemByRowColumn(gridView, itemIndex, row, column)
  439. local length = self.controller:GetShowDataLength();
  440. if (itemIndex < 0 or itemIndex >=length) then
  441. return nil
  442. end
  443. local type = self.controller:GetCurTowerType()
  444. if type == Enum.UnlimitTowerType.ClimbingTower then
  445. return self:RefreshClimbingTowerItem(gridView, itemIndex)
  446. elseif type == Enum.UnlimitTowerType.PeakTower then
  447. return self:RefreshPeakTowerItem(gridView, itemIndex)
  448. end
  449. return nil
  450. end
  451. function UIClimbingTowerView:RefreshClimbingTowerItem(gridView, idx)
  452. local levelData = self.controller:GetShowDataByIdx(idx)
  453. local item = gridView:NewListViewItem("ClimbingTowerLevelItem")
  454. local levelLua = CommonUtil.BindGridViewItem2Lua(self, "ClimbingTowerLevelItem", item.gameObject)
  455. levelLua.gameObject.name = levelData.levelId
  456. levelLua.levelNum.text.text =I18N.SetLanguageValue("TopTowerLevel", levelData.levelId) -- "第"..levelData.levelId.."层"
  457. levelLua.passedNode:SetActive(levelData.hasPassed)
  458. levelLua.challengeBtn:SetActive(levelData.levelId == self.controller:GetCurTowerFloorIdx())
  459. levelLua.friendNode:SetActive(levelData:HasFriend())
  460. levelLua.newLevelNode:SetActive(levelData.levelId > self.controller:GetCurTowerFloorIdx())
  461. levelLua.bottomNode:SetActive(levelData.levelId <= self.controller:GetCurTowerFloorIdx())
  462. if nil ~= levelData.CardUnlock and "" ~= levelData.CardUnlock then
  463. levelLua.unLock.unlocktext.uILocalizeScript:SetContent(levelData.CardUnlock)
  464. levelLua.unLock:SetActive(true)
  465. else
  466. levelLua.unLock:SetActive(false)
  467. end
  468. if levelData.hasPassed then
  469. levelLua.npcList:SetActive(false)
  470. else
  471. levelLua.npcList:SetActive(true)
  472. for i=1, #levelData.npcs do
  473. local npc = levelData.npcs[i]
  474. if npc.npcImg ~= nil then
  475. if i == 1 then
  476. self:SetNpcInfo(levelLua.npcList.npcLevel1,levelLua.npcList.npc1,levelLua.npcList.natureIcon1,npc,levelData.levelId)
  477. elseif i == 2 then
  478. self:SetNpcInfo(levelLua.npcList.npcLevel2,levelLua.npcList.npc2,levelLua.npcList.natureIcon2,npc,levelData.levelId)
  479. elseif i == 3 then
  480. self:SetNpcInfo(levelLua.npcList.npcLevel3,levelLua.npcList.npc3,levelLua.npcList.natureIcon3,npc,levelData.levelId)
  481. elseif i == 4 then
  482. self:SetNpcInfo(levelLua.npcList.npcLevel4,levelLua.npcList.npc4,levelLua.npcList.natureIcon4,npc,levelData.levelId)
  483. end
  484. end
  485. end
  486. end
  487. self:HideAllItems(levelLua)
  488. if levelData.specialReward ~= nil then
  489. for i =1, #levelData.specialReward do
  490. self:SetSpecialData(self:GetItemGo(levelLua,i),levelData.specialReward[i][1],levelData.specialReward[i][2])
  491. end
  492. levelLua.bonusNode:SetActive(true)
  493. else
  494. levelLua.bonusNode:SetActive(false)
  495. end
  496. self.uiBase:AddButtonUniqueEventListener(levelLua.levelInfoBtn.button, self, self.OnClickViewLevelInfo, levelData.levelId)
  497. self.uiBase:AddButtonUniqueEventListener(levelLua.challengeBtn.button, self, self.OnClickChallengeBtn, levelData.levelId)
  498. self.uiBase:AddButtonUniqueEventListener(levelLua.friendNode.button, self, self.OnClickFriendBtn, levelData.levelId)
  499. return item
  500. end
  501. function UIClimbingTowerView:UpdatePeakTowerDataAfterWin(idx)
  502. self.controller:RefreshTowerDatas()
  503. local loopListView = self.scrollview.loopListView
  504. local length = self.controller:GetShowDataLength()
  505. local curTowerFloorIdx = self.controller:GetCurTowerFloorIdx()
  506. local type = self.controller:GetCurTowerType()
  507. if type == Enum.UnlimitTowerType.PeakTower then
  508. if curTowerFloorIdx < length then
  509. length = math.min(curTowerFloorIdx + 5, length)
  510. end
  511. end
  512. self.peakStep = -1
  513. loopListView:SetListItemCount(length, false)
  514. loopListView:RefreshAllShownItem()
  515. end
  516. function UIClimbingTowerView:RefreshPeakTowerItem(gridView, idx)
  517. local showData = self.controller:GetShowDataByIdx(idx)
  518. local item = gridView:NewListViewItem("ClimbingTowerTopItem")
  519. local itemlua = CommonUtil.BindGridViewItem2Lua(self, "ClimbingTowerTopItem", item.gameObject)
  520. local instanceId = item.gameObject:GetInstanceID()
  521. local curTowerFloorIdx = self.controller:GetCurTowerFloorIdx()
  522. local curState = curTowerFloorIdx > showData.floorIdx
  523. local selfUid = ManagerContainer.DataMgr.UserData:GetUserRoleId()
  524. local userData = showData:GetRoleInfo()
  525. local isRobot = userData.isRobot
  526. if not self.scrollItemGoes[instanceId] then
  527. self.scrollItemGoes[instanceId] = itemlua
  528. end
  529. item.gameObject.name = showData.floorIdx
  530. if not userData.inited then
  531. itemlua.playerNode:SetActive(false)
  532. itemlua.challengeBtn:SetActive(false)
  533. itemlua.btnBuy:SetActive(false)
  534. itemlua.rewards:SetActive(false)
  535. itemlua.passedNode:SetActive(false)
  536. itemlua.cover:SetActive(true)
  537. itemlua.btnBuy:SetActive(false)
  538. itemlua.challengeBtn:SetActive(false)
  539. itemlua.levelNum.text.text = I18N.SetLanguageValue("TopTowerLevel", showData.floorIdx)
  540. itemlua.btnMessage:SetActive(false)
  541. return item
  542. end
  543. itemlua.playerNode:SetActive(not curState)
  544. itemlua.challengeBtn:SetActive(not curState)
  545. itemlua.btnBuy:SetActive(not curState)
  546. itemlua.rewards:SetActive(not curState)
  547. itemlua.passedNode:SetActive(curState)
  548. itemlua.nametext.text.text = userData.nickName
  549. itemlua.cover:SetActive(curTowerFloorIdx < showData.floorIdx)
  550. itemlua.btnBuy:SetActive(curTowerFloorIdx == showData.floorIdx)
  551. itemlua.challengeBtn:SetActive(curTowerFloorIdx == showData.floorIdx)
  552. itemlua.levelNum.text.text = I18N.SetLanguageValue("TopTowerLevel", showData.floorIdx)
  553. itemlua.btnMessage:SetActive(not isRobot and selfUid ~= userData.uid)
  554. if self.peakStep == -1 then
  555. self:RefreshTopPeakItemByIdx(itemlua, showData.floorIdx)
  556. end
  557. return item
  558. end
  559. function UIClimbingTowerView:RefreshTopPeakItemByIdx(itemlua, idx)
  560. if not itemlua then
  561. itemlua = self:GetTopPeakItemByIdx(idx)
  562. end
  563. if not itemlua then return end
  564. local showData = self.controller:GetShowDataByIdx(idx - 1)
  565. local instanceId = itemlua.gameObject:GetInstanceID()
  566. if not showData then return end
  567. local heroData = showData:GetRoleHeroData()
  568. local curTowerFloorIdx = self.controller:GetCurTowerFloorIdx()
  569. local curState = curTowerFloorIdx > showData.floorIdx
  570. local userData = showData:GetRoleInfo()
  571. if not curState then
  572. if self.peakStep == -1 or self.peakStep == 2 then
  573. if not self.roleSystemMap[instanceId] then
  574. self.roleSystemMap[instanceId] = RoleViewSystem:new()
  575. end
  576. if not self.previewSystemMap[instanceId] then
  577. self.previewSystemMap[instanceId] = PreviewSystem:new("Preview", 256, 256)
  578. self.previewSystemMap[instanceId]:SetView(Vector3(-0.116, 1.649, 2.5), Quaternion.Euler(12.174, -182.628, 0.085))
  579. end
  580. itemlua.pos:SetActive(true)
  581. local selectZone = userData.selectZone
  582. if selectZone == 0 then
  583. local serverData = ManagerContainer.LuaGameMgr.serverData
  584. selectZone = serverData and serverData.id or 0
  585. end
  586. itemlua.servertext.text.text = I18N.SetLanguageValue("TopTowerServer", selectZone-1)--ManagerContainer.LuaGameMgr.serverData.name--
  587. itemlua.atknum.text.text = userData.fightPower
  588. self.roleSystemMap[instanceId]:CancelCreate()
  589. self.previewSystemMap[instanceId]:RemoveAllGo()
  590. self.roleSystemMap[instanceId]:SetHeroId(instanceId)
  591. self.roleSystemMap[instanceId]:RefreshView(Enum.RoleInEnvType.RoleMainView, userData.roleCfgId, userData.viewData, heroData and heroData.extGoesShowData or nil, self, self.LoadModelCB)
  592. itemlua.roleModel.rawImage.texture = self.previewSystemMap[instanceId]:GetRenderTexture()
  593. end
  594. if self.peakStep == -1 or self.peakStep == 3 then
  595. local loopGridView = itemlua.scrollView.loopGridView
  596. if not self.rewardLoopGridMap[instanceId] then
  597. self.rewardLoopGridMap[instanceId] = loopGridView
  598. end
  599. if not itemlua.initedLoop then
  600. loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  601. return self:GetRewardItemByRowColumn(gridView, itemIndex, row, column)
  602. end, nil)
  603. itemlua.initedLoop = true
  604. end
  605. local cfgData = ManagerContainer.CfgMgr:GetTopTowerRewardCfgDataByLv(showData.floorIdx)
  606. self.curPeakTowerItemRewardData = cfgData and cfgData.RewardItems or nil
  607. local rewardLength = cfgData and #cfgData.RewardItems or 0
  608. loopGridView:RefreshListByIndex(rewardLength, 0)
  609. local cost = cfgData and cfgData.BuyRoadCost or nil
  610. itemlua.btnBuy.icon.image.enabled = false
  611. if cost and cost[1] then
  612. local key = cost[1][1]
  613. local val = cost[1][2]
  614. local ownNum = CommonUtil.GetOwnResCountByItemId(key)
  615. local costCfgData = ManagerContainer.CfgMgr:GetItemById(key)
  616. if costCfgData.Icon and costCfgData.Icon ~= '' then
  617. CommonUtil.LoadIcon(self, costCfgData.Icon, function (sprite)
  618. itemlua.btnBuy.icon.image.sprite = sprite
  619. itemlua.btnBuy.icon.image.enabled = true
  620. end, 'ItemIcon'..idx)
  621. end
  622. if ownNum < val then
  623. itemlua.btnBuy.num.text.text = string.format(Constant.PinkColorText, val)
  624. else
  625. itemlua.btnBuy.num.text.text = val
  626. end
  627. self.uiBase:AddButtonUniqueEventListener(itemlua.btnBuy.button, self, self.OnPeakTowerBuyClick, showData.floorIdx, val)
  628. end
  629. self.uiBase:AddButtonUniqueEventListener(itemlua.challengeBtn.button, self, self.OnPeakTowerChallengeClick, showData.floorIdx)
  630. self.uiBase:AddButtonUniqueEventListener(itemlua.btnMessage.button, self, self.OnCheckFightInfo, showData.floorIdx)
  631. end
  632. end
  633. end
  634. function UIClimbingTowerView:LoadModelCB(go, result, instanceId)
  635. if not go then return end
  636. if self.previewSystemMap[instanceId] and go ~= nil then
  637. go.name = instanceId
  638. self.scrollItemGoes[instanceId].pos:SetActive(false)
  639. self.scrollItemGoes[instanceId].roleModel:SetActive(true)
  640. self.previewSystemMap[instanceId]:UpdateGo(go)
  641. end
  642. go:SetActive(true)
  643. end
  644. function UIClimbingTowerView:GetTopPeakItemByIdx(idx)
  645. local item = self.scrollview.loopListView:GetShownItemByItemIndex(idx - 1)
  646. if item then
  647. local itemlua = CommonUtil.GetBindGridViewItem2Lua(self, "ClimbingTowerTopItem", item.gameObject)
  648. return itemlua
  649. end
  650. end
  651. function UIClimbingTowerView:OnPeakTowerBuyClick(button, params)
  652. self.curBuyIdx = params[0]
  653. local data = {"PeakTowerBuyTips", {params[1]}, nil, self, self.ConfirmBuy}
  654. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  655. end
  656. function UIClimbingTowerView:ConfirmBuy()
  657. if not self.curBuyIdx then return end
  658. self.controller:SendPeakTowerBuyReq(self.curBuyIdx)
  659. end
  660. function UIClimbingTowerView:OnPeakTowerChallengeClick(button, params)
  661. local floorIdx = params[0]
  662. self.controller:SendChallengeReq(floorIdx)
  663. end
  664. function UIClimbingTowerView:OnCheckFightInfo(button, params)
  665. local idx = params[0]
  666. self.controller:QueryCrossFightInfo(idx)
  667. end
  668. function UIClimbingTowerView:GetRewardItemByRowColumn(gridView, itemIndex, row, column)
  669. if not self.curPeakTowerItemRewardData then
  670. return nil
  671. end
  672. local showData = self.curPeakTowerItemRewardData[itemIndex + 1]
  673. if not showData then
  674. return nil
  675. end
  676. local item = gridView:NewListViewItem("IconSmallItem")
  677. local itemlua = CommonUtil.BindGridViewItem2Lua(self, "IconItem", item.gameObject)
  678. local data = {cfgId = showData[1], num = showData[2]}
  679. IconItemCtr:SetData(self, itemlua, data, Enum.ItemIEnterType.Bag, self, self.OnItemClick)
  680. return item
  681. end
  682. function UIClimbingTowerView:OnItemClick(button,params)
  683. ManagerContainer.LuaUIMgr:OpenTips(params[0])
  684. end
  685. function UIClimbingTowerView:SetSpecialData(itemlua,itemId,itemCnt)
  686. CommonUtil.SetRewardItemData(self,itemId,itemlua,itemCnt, self.OnClickItem)
  687. itemlua:SetActive(true)
  688. end
  689. function UIClimbingTowerView:GetItemGo(levelLua,idx)
  690. if idx == 1 then
  691. return levelLua.bonusNode.items.item1
  692. elseif idx ==2 then
  693. return levelLua.bonusNode.items.item2
  694. else
  695. return levelLua.bonusNode.items.item3
  696. end
  697. end
  698. function UIClimbingTowerView:HideAllItems(levelLua)
  699. for i = 1, 3 do
  700. local go = self:GetItemGo(levelLua,i)
  701. go:SetActive(false)
  702. end
  703. end
  704. function UIClimbingTowerView:OnClickItem(btn,params)
  705. local logicData = params[0]
  706. ManagerContainer.LuaUIMgr:OpenTips(logicData)
  707. end
  708. function UIClimbingTowerView:OnClickClose()
  709. --ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UIMAINVIEW_CHANGE_NOTICE, Enum.MainViewPageType.Town)
  710. ManagerContainer.LuaUIMgr:OpenSourceUI(self)
  711. end
  712. function UIClimbingTowerView:OnDragScrollView()
  713. self.controller:SendFriendPassTowerInfo()
  714. end
  715. function UIClimbingTowerView:OnFightPowerAck(data)
  716. local bIsOpen = true
  717. if self.controller == nil then return end
  718. if nil ~= data.min_tower_info then
  719. --LogError(Inspect(data.min_tower_info))
  720. local info = data.min_tower_info
  721. local levelInfo = self.controller:GetLevelInfo(info.tower_level)
  722. bIsOpen = tonumber(self.lastClickViewInfo) == tonumber(info.tower_level)
  723. if levelInfo ~= nil then
  724. levelInfo:SetLowestPlayerInfo(info.brief,info.fight_power,info.record_time,info.battle_time)
  725. end
  726. end
  727. if bIsOpen then
  728. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIClimbingTowerLevelInfo,self.lastClickViewInfo)
  729. end
  730. end
  731. function UIClimbingTowerView:OnClickViewLevelInfo(btn,param)
  732. local levelId = param[0]
  733. self.lastClickViewInfo = levelId
  734. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_TOWER_LEVEL_MIN_FIGHT_POWER_REQ, {tower_level = levelId})
  735. end
  736. function UIClimbingTowerView:OnClickChallengeBtn(btn,param)
  737. local levelId = param[0]
  738. if levelId ~= self.controller:GetCurTowerFloorIdx() then
  739. return
  740. end
  741. self.controller:EnterBattle(levelId)
  742. end
  743. function UIClimbingTowerView:OnClickFriendBtn(btn,param)
  744. local levelId = param[0]
  745. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIClimbingTowerFriendInfo,levelId)
  746. end
  747. function UIClimbingTowerView:OnClickRank()
  748. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIClimbingTowerRank)
  749. end
  750. function UIClimbingTowerView:OnClickPlayRuleBtn()
  751. local type = self.controller:GetCurTowerType()
  752. if type == Enum.UnlimitTowerType.ClimbingTower then
  753. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayRule, {'PlayExplainTitle', 'PracticeTowerPlayExplain'})
  754. elseif type == Enum.UnlimitTowerType.PeakTower then
  755. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayRule, {'PlayExplainTitle', 'TopTowerRule'})
  756. end
  757. end
  758. function UIClimbingTowerView:OnClickBtnStatistics()
  759. if LuaBattleBridge.HasStatistics(BattleMode.Time,BattleSubMode.ClimbingTower) then
  760. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleStatistics,{BattleMode.Time,BattleSubMode.ClimbingTower})
  761. else
  762. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("NullBattleInformation2")
  763. end
  764. end
  765. function UIClimbingTowerView:ShowTowerMode()
  766. -- local type = self.controller:GetCurTowerType()
  767. -- if type == Enum.UnlimitTowerType.ClimbingTower then
  768. -- elseif type == Enum.UnlimitTowerType.PeakTower then
  769. -- end
  770. local TDMgr = ManagerContainer.DataMgr.TowerDataMgr
  771. local tmode = TDMgr:GetTowerMode()
  772. self.towerModes:SetActive(true)
  773. self:RefTowerModeBtn(tmode)
  774. end
  775. function UIClimbingTowerView:RefTowerModeBtn(cmode)
  776. local curMode = cmode
  777. local AllMode = {0,1} ---0 c 1 P 2 W
  778. -- local emUnlockLevel = GlobalConfig.Instance:GetConfigIntValue(365)
  779. -- local curLevel = ManagerContainer.LuaBattleMgr:GetCurDiffLvID()
  780. -- if(curLevel >= emUnlockLevel)then
  781. -- table.insert(AllMode,2)
  782. -- end
  783. local needShowModeBtn = {}
  784. for _, v in ipairs(AllMode) do
  785. if v ~= curMode then
  786. table.insert(needShowModeBtn,v)
  787. end
  788. end
  789. self.modeNode.loopVerticalScrollRect:ClearCells()
  790. CommonUtil.LoopGridViewEleCreateNew(self,
  791. self.modeNode.loopVerticalScrollRect,
  792. self.content.verticalLayoutGroup,
  793. needShowModeBtn,
  794. 0,
  795. self,
  796. self.UpdateModeNode,
  797. nil, nil, 0);
  798. end
  799. function UIClimbingTowerView:UpdateModeNode(_itemLua, _idx,_data)
  800. if not _itemLua or not _data then return end
  801. CommonUtil.UpdateItemPrefab(self, _itemLua, _data, nil,self,self.OnClickTowerMode)
  802. end
  803. function UIClimbingTowerView:OnClickTowerMode(btn, data)
  804. -- LogError("点击 data = " ..Inspect(data))
  805. local mdata = data[0]
  806. local TDMgr = ManagerContainer.DataMgr.TowerDataMgr
  807. local UnlockInfo = TDMgr:GetModelockInfo(mdata)
  808. if not UnlockInfo.isunlock then
  809. local towertxt = self:GetCurTowerTitle(mdata)
  810. local txtT =I18N.T("TitleClimbingTower")
  811. local txtU = I18N.T(towertxt)
  812. local txt = I18N.SetLanguageValue("TowerUnlock",txtT,UnlockInfo.unlockLv,txtU)
  813. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(txt)
  814. return
  815. end
  816. local tmode = TDMgr:GetTowerMode()
  817. if mdata < 2 then
  818. if tmode >= 2 then
  819. local type = self.controller:GetCurTowerType()
  820. if mdata ~= type then
  821. --self.controller:SetCurTowerType(1 - mdata)
  822. self:OnBtnTowerClick()
  823. else
  824. self.cover:SetActive(true)
  825. -- 保护机制 5秒后关闭云
  826. if not self.cloudTimer then
  827. self.cloudTimer = Timer.New(slot(self.CloudOut, self), 1)
  828. end
  829. if not self.cloudTimer.running then
  830. self.cloudTimer:Start()
  831. end
  832. end
  833. else
  834. self:OnBtnTowerClick()
  835. end
  836. else
  837. --self.boardTitle.uILocalizeScript:SetContent("TopTowerTitle")
  838. self.cover:SetActive(true)
  839. -- 保护机制 5秒后关闭云
  840. if not self.cloudTimer then
  841. self.cloudTimer = Timer.New(slot(self.CloudOut, self), 1)
  842. end
  843. if not self.cloudTimer.running then
  844. self.cloudTimer:Start()
  845. end
  846. end
  847. local isWj = mdata == 2
  848. self.scrollview:SetActive(not isWj)
  849. self.wJNode:SetActive(isWj)
  850. if isWj then
  851. local curwjInfo = TDMgr:GetCurWJTowerInfo()
  852. self:RefWJNpcView(curwjInfo.npcList,curwjInfo.lv)
  853. end
  854. self:SetTitle(mdata)
  855. TDMgr:SetTowerMode(mdata)
  856. self.towerModes:SetActive(false)
  857. end
  858. function UIClimbingTowerView:CloseModeNode()
  859. self.towerModes:SetActive(false)
  860. end
  861. function UIClimbingTowerView:RefWJNpcView(npclist,lv)
  862. for i=1, #npclist do
  863. local npc = npclist[i]
  864. if npc.npcImg ~= nil then
  865. if i == 1 then
  866. self:SetNpcInfo(self.wjnpcList.npcLevel1,self.wjnpcList.npc1,self.wjnpcList.natureIcon1,npc,npc.npcLevel)
  867. elseif i == 2 then
  868. self:SetNpcInfo(self.wjnpcList.npcLevel2,self.wjnpcList.npc2,self.wjnpcList.natureIcon2,npc,npc.npcLevel)
  869. elseif i == 3 then
  870. self:SetNpcInfo(self.wjnpcList.npcLevel3,self.wjnpcList.npc3,self.wjnpcList.natureIcon3,npc,npc.npcLevel)
  871. elseif i == 4 then
  872. self:SetNpcInfo(self.wjnpcList.npcLevel4,self.wjnpcList.npc4,self.wjnpcList.natureIcon4,npc,npc.npcLevel)
  873. end
  874. end
  875. end
  876. self.levelNum.text.text = I18N.SetLanguageValue("TopTowerLevel",lv)
  877. self:RefWjReword()
  878. end
  879. function UIClimbingTowerView:SetTitle(mode)
  880. self.boardTitle.uILocalizeScript:SetContent(self:GetCurTowerTitle(mode))
  881. end
  882. function UIClimbingTowerView:GetCurTowerTitle(mode)
  883. local modeTxt ="TitleClimbingTower"
  884. if(mode == 1) then
  885. modeTxt ="TopTowerTitle"
  886. elseif mode == 2 then
  887. modeTxt ="wjTower"
  888. end
  889. return modeTxt
  890. end
  891. function UIClimbingTowerView:OnClickWJBtn()
  892. --ManagerContainer.DataMgr.TowerDataMgr:EnterBattle_WJ(1,{})
  893. ManagerContainer.DataMgr.TowerDataMgr:SendWjBeginReq()
  894. end
  895. function UIClimbingTowerView:RefWjReword()
  896. -- local rewardlist = ManagerContainer.DataMgr.TowerDataMgr:GetCurWjReword()
  897. -- self.wjGoodsItems.loopHorizontalScrollRect:ClearCells()
  898. -- CommonUtil.LoopGridViewEleCreateNew(self,
  899. -- self.wjGoodsItems.loopHorizontalScrollRect,
  900. -- self.wjContent.horizontalLayoutGroup,
  901. -- rewardlist,
  902. -- 0,
  903. -- self,
  904. -- self.UpdateRewardItem,
  905. -- nil,nil,0);
  906. self.wjReword:SetActive(false)
  907. self:RefWjSpReword()
  908. self:RefreshBattleBuffInfo()
  909. end
  910. function UIClimbingTowerView:UpdateRewardItem(_itemLua, _idx,_data)
  911. if not _itemLua or not _data then return end
  912. --_itemLua.gameObject:SetParent(wnd.content.transform)
  913. CommonUtil.UpdateItemPrefab(self, _itemLua, _data, Enum.ItemIEnterType.Bag,self,self.OnClickItem)
  914. end
  915. function UIClimbingTowerView:RefWjSpReword()
  916. local rewardlist = ManagerContainer.DataMgr.TowerDataMgr:GetCurSpecialReword(true)
  917. self.wjSpGoodsItems.loopHorizontalScrollRect:ClearCells()
  918. CommonUtil.LoopGridViewEleCreateNew(self,
  919. self.wjSpGoodsItems.loopHorizontalScrollRect,
  920. self.wjSpContent.horizontalLayoutGroup,
  921. rewardlist,
  922. 0,
  923. self,
  924. self.UpdateSpRewardItem,
  925. nil,nil,0);
  926. end
  927. function UIClimbingTowerView:UpdateSpRewardItem(_itemLua, _idx,_data)
  928. if not _itemLua or not _data then return end
  929. --_itemLua.gameObject:SetParent(wnd.content.transform)
  930. CommonUtil.UpdateItemPrefab(self, _itemLua, _data, Enum.ItemIEnterType.Bag,self,self.OnClickItem)
  931. end
  932. function UIClimbingTowerView:OnClickRewardInfo()
  933. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIWJTowerRewardInfo)
  934. end
  935. function UIClimbingTowerView:GetItemByIndexPrivilege(loopListView, itemIdx)
  936. local item = loopListView:NewListViewItem('EntryUnlockDscItem')
  937. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'EntryUnlockDscItem', item.gameObject)
  938. local curID = itemIdx + 1
  939. LogError("itemIdx = "..itemIdx)
  940. local buffinfos = ManagerContainer.DataMgr.TowerDataMgr:GetCurAllBattleBuffInfo()
  941. local curInfo = buffinfos.infos[curID]
  942. if itemLua then
  943. local p1 = I18N.T('WjBattleType'..curID)
  944. local txt = I18N.SetLanguageValue('WjBattleBuff_Dec',p1,curInfo.lvEffect,curInfo.lvEffect,curInfo.curLv,curInfo.max)
  945. local idx = 0
  946. if curInfo.curLv > 0 then
  947. idx = 1
  948. txt = "<color=#00ff06>"..txt.."</color>"
  949. end
  950. itemLua.icon.uIImageSwitchSprite:ChangeSprite(idx)
  951. itemLua.desTxt.text.text = txt
  952. end
  953. ManagerContainer.LuaUIMgr:ForceRebuildLayoutImmediate(item.CachedRectTransform)
  954. return item
  955. end
  956. function UIClimbingTowerView:InitBattleBuffView()
  957. self.privilegeScrollView.loopListView:InitListView(0, function (loopListView, itemIdx)
  958. return self:GetItemByIndexPrivilege(loopListView, itemIdx)
  959. end, nil, nil)
  960. end
  961. function UIClimbingTowerView:RefreshBattleBuffInfo()
  962. self.privilegeScrollView.loopListView:SetListItemCount(0, true)
  963. self.privilegeScrollView.loopListView:SetListItemCount(3, true)
  964. local buffinfo = ManagerContainer.DataMgr.TowerDataMgr:GetCurAllBattleBuffInfo()
  965. local txt = I18N.SetLanguageValue('WjBattleBuff_Dec2',buffinfo.value,buffinfo.value)
  966. if buffinfo.value > 0 then
  967. txt = "<color=#00ff06>"..txt.."</color>"
  968. end
  969. self.privilegeScrollView.entryUnlockDscItem.battleBuffTxt.text.text = txt
  970. end
  971. function UIClimbingTowerView:OnClickGotoBuyBuff()
  972. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIWjBattleBuffView)
  973. end
  974. function UIClimbingTowerView:RefWJNPC()
  975. local curwjInfo = ManagerContainer.DataMgr.TowerDataMgr:GetCurWJTowerInfo()
  976. self:RefWJNpcView(curwjInfo.npcList,curwjInfo.lv)
  977. end
  978. return UIClimbingTowerView