UIClimbingTowerView.lua 37 KB

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