| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156 |
- local UIClimbingTowerView = require("UIClimbingTower/UIClimbingTowerView_Generate")
- local PreviewSystem = require "PreviewSystem"
- local RoleViewSystem = require "RoleViewSystem"
- local IconItemCtr = require "Common.IconItemCtr"
- local previewSystem
- local moveState = false
- local LastmoveState = false
- function UIClimbingTowerView:OnAwake(data)
- self.controller = require("UIClimbingTower/UIClimbingTowerCtr"):new()
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UIClimbingTowerView:AddEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.EID_REFRESH_CLIMBINGTOWER_DATA,self,self.UpdateLevelsData)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.REFRESH_CLIMBINGTOWER_DAYREWARD,self,self.GetPopGot)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.EID_CHANGE_TOWER_SHOW_REFRESH,self,self.ShowChange)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.EID_REFRESH_PEAKTOWER_WIN_DATA,self,self.UpdatePeakTowerDataAfterWin)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name,UIEventNames.EID_Refresh_ClimbingTower_FriendInfo,self,self.RefreshClimbingTowerFriendInfo)
- ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_TOWER_LEVEL_MIN_FIGHT_POWER_ACK, self.OnFightPowerAck,self)
- end
- function UIClimbingTowerView:GetPopGot(data)
- if not data then
- return
- end
- local rewards = {}
- for i = 1, #data do
- table.insert(rewards,{cfgId = data[i].key,num = data[i].value})
- end
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot,{rewards = rewards})
- end
- function UIClimbingTowerView:FillContent(data, uiBase)
- self.uiBase = uiBase
- local gameObject = self.uiBase:GetRoot()
- if gameObject ~= nil then
- self.gameObject = gameObject
- self.transform = gameObject.transform
- end
- self:InitGenerate(self.transform, data)
- self:Init()
- end
- function UIClimbingTowerView:Init()
- self.initedOver = false
- self.otherType = nil
- self.uIGoto:SetActive(true)
- self.text2.uILocalizeScript:SetContent("GoToLvlUp")
- self.text1.uILocalizeScript:SetContentAndValues("LvlUpNum", {0})
- self:OnHeroLvChanged()
- self:InitBattleBuffView()
- --会跳往主角界面
- if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIMain) == false then
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIMain)
- end
- --打开限时礼包
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.LIMIT_RECHARGE_OPEN_UI_NTF)
- -- --适配宽度
- -- if nil ~= self.scrollview and nil ~= self.scrollview.content and nil ~= self.scrollview.content.gridLayoutGroup then
- -- local rectTrans = self.scrollview.content:GetComponent(Enum.TypeInfo.RectTransform)
- -- if nil ~= rectTrans then
- -- self.scrollview.content.gridLayoutGroup.cellSize = Vector2(rectTrans.rect.width, self.scrollview.content.gridLayoutGroup.cellSize.y)
- -- end
- -- end
- -- self:InitGrid()
- self.cover:SetActive(true)
- self.cover.animator:Play("CoverKeep")
- --保护机制 5秒后关闭云
- if self.cloudTimer then
- self.cloudTimer:Stop()
- end
- if not self.cloudTimer then
- self.cloudTimer = Timer.New(slot(self.CloudOut, self), 1)
- end
- if not self.cloudTimer.running then
- self.cloudTimer:Start()
- end
- self:Refresh()
- if not self.queryTimer then
- self.queryTimer = FrameTimer.New(slot(self.QueryDatas, self), 1)
- end
- if not self.queryTimer.running then
- self.queryTimer:Start()
- end
- end
- function UIClimbingTowerView:QueryDatas()
- local type = self.controller:GetCurTowerType()
- self.controller:SendTowerInfoReq(type)
- end
- function UIClimbingTowerView:Refresh()
- local tdmgr = ManagerContainer.DataMgr.TowerDataMgr
- local mode = tdmgr:GetTowerMode()
- local isWj = mode == 2
- self.scrollview:SetActive(not isWj)
- self.wJNode:SetActive(isWj)
- local type = self.controller:GetCurTowerType()
- self:SetTitle(mode)
- if isWj then
- local curwjInfo = tdmgr:GetCurWJTowerInfo()
- self:RefWJNpcView(curwjInfo.npcList,curwjInfo.lv)
- end
- if type == Enum.UnlimitTowerType.PeakTower then
- self.rewardLoopGridMap = {}
- self.scrollItemGoes = {}
- self.roleSystemMap = {}
- self.previewSystemMap = {}
- self.scrollview.loopListView.mOnSnapItemFinished = function(loopListView, loopListViewItem)
- return self:OnSnapItemFinished(loopListView, loopListViewItem)
- end
- -- self.boardTitle.uILocalizeScript:SetContent("TopTowerTitle")
- elseif type == Enum.UnlimitTowerType.ClimbingTower then
- -- self.boardTitle.uILocalizeScript:SetContent("TitleClimbingTower")
- end
- --local isShowTop_Lock = (self.controller:FindLevelIsPassed() == true and type == Enum.UnlimitTowerType.ClimbingTower)
- self.btnTowerTop:SetActive(false) --type == Enum.UnlimitTowerType.ClimbingTower
- self.btnTowerTop_lock:SetActive(false) --not isShowTop_Lock
- self.btnTower:SetActive(true)--type == Enum.UnlimitTowerType.PeakTower
- self.btnStatistics:SetActive(type == Enum.UnlimitTowerType.ClimbingTower)
- end
- function UIClimbingTowerView:InitGrid()
- self.scrollview.loopListView:InitListView(0, function(gridView, itemIndex)
- return self:GetItemByRowColumn(gridView, itemIndex)
- end, nil)
- end
- function UIClimbingTowerView:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- end
- function UIClimbingTowerView:AddUIEventListener()
- self.uiBase:AddButtonEventListener(self.closeBtn.button,self,self.OnClickClose)
- self.uiBase:AddButtonEventListener(self.rankBtn.button,self,self.OnClickRank)
- self.uiBase:AddButtonEventListener(self.playRuleBtn.button, self, self.OnClickPlayRuleBtn)
- self.uiBase:AddButtonEventListener(self.btnStatistics.button,self,self.OnClickBtnStatistics)
- --角色升级动画弹出播放
- self.uiBase:AddButtonEventListener(self.btnInOut.button,self,self.OnPlayChangeShowState)
- -- 前往角色界面
- self.uiBase:AddButtonEventListener(self.btnGoto.button,self,self.OnShowRoleWnd)
- self.uiBase:AddButtonEventListener(self.btnTower.button, self, self.ShowTowerMode)
- self.uiBase:AddButtonEventListener(self.btnTowerTop.button, self, self.ShowTowerMode)
- self.uiBase:AddButtonEventListener(self.btnPresent.button, self, self.OnBtnPresentClick)
- self.uiBase:AddButtonEventListener(self.towerBgBtn.button,self,self.CloseModeNode)
- self.uiBase:AddButtonEventListener(self.wjchallengeBtn.button,self,self.OnClickWJBtn)
- self.uiBase:AddButtonEventListener(self.gotoBtn.button,self,self.OnClickRewardInfo)
- end
- function UIClimbingTowerView:OnSnapItemFinished(loopListView, loopListViewItem)
- for _,v in pairs(self.scrollItemGoes) do
- local instanceId = v.gameObject:GetInstanceID()
- if v.gameObject.activeSelf then
- self.previewSystemMap[instanceId]:RemoveGo(v.gameObject)
- end
- end
- end
- function UIClimbingTowerView:ShowChange(needChange)
- self:Clear()
- self.cover:SetActive(true)
-
- self:InitGrid()
-
- LogError("Show change "..Inspect(needChange))
- --保护机制 5秒后关闭云
- if not self.cloudTimer then
- self.cloudTimer = Timer.New(slot(self.CloudOut, self), 1)
- end
- if not self.cloudTimer.running then
- self.cloudTimer:Start()
- end
- if needChange and self.otherType then
- self.controller:ChangeToOtherType()
- self.otherType = nil
- end
- self:Refresh()
- end
- function UIClimbingTowerView:CloudOut()
- self.cover.animator:Play("CoverOut")
- end
- function UIClimbingTowerView:OnBtnTowerClick()
- --ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('ClimbingTowerClickTips')
- LogError('OnBtnTowerClick')
- self.otherType = 1 - self.controller:GetCurTowerType()
- local needQuery = self.controller:SendTowerInfoReq(self.otherType)
- if not needQuery then
- self:ShowChange(true)
- self:UpdateLevelsData()
- end
- end
- function UIClimbingTowerView:OnBtnPresentClick()
- local server_time = ManagerContainer.LuaTimerMgr:CurLuaServerTime()
- local servertime = type(server_time) == "number" and server_time or #server_time
- local dayRewardTime = ManagerContainer.DataMgr.TowerDataMgr:GetDayRewardTime()
- if dayRewardTime < servertime then
- local curlevel = ManagerContainer.DataMgr.TowerDataMgr:GetCurChallengeLevel() - 1
- local curRewardData,nextRewardData,NoReward = self:GetRewardDataBylv(curlevel)
- local tipsKey = ""
- local data = nil
- if NoReward then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("PresentErrorTips2")
- return
- end
- if nextRewardData then
- tipsKey = "ClimbingTowerDayRewardTips1"
- data = {curRewardData[2],nextRewardData[1] - curlevel,nextRewardData[2]}
- else
- tipsKey = "ClimbingTowerDayRewardTips2"
- data = {curRewardData[2]}
- end
- ManagerContainer.LuaUIMgr:ShowMessageBox(tipsKey,data,nil,self,self.OnSureGetDayReward)
- else
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("PresentErrorTips1")
- end
- end
- function UIClimbingTowerView:OnSureGetDayReward()
- ManagerContainer.DataMgr.TowerDataMgr:OnClimbingTowerDayRewardREQ()
- end
- function UIClimbingTowerView:GetRewardDataBylv(lv)
- local str = GlobalConfig.Instance:GetConfigStrValue(357)
- local tab = CommonUtil.DeserializeGlobalStrToNumberTable(str)
- if tab then
- for i = 1, #tab do
- local curData = tab[i]
- local nextData = tab[i + 1]
- if nextData then
- if lv < curData[1] then
- return {0,0},curData,true
- elseif curData[1] <= lv and lv < nextData[1] then
- return curData,nextData
- end
- else
- return curData,nil
- end
- end
- end
- end
- --角色升级后 升级动画弹出播放
- function UIClimbingTowerView:OnHeroLvChanged()
- local nCount,nId = self:GetLeveUpNum()
- if nCount > 0 then
- moveState = true
- if nil ~= self.light then
- self.light:SetActive(true)
- end
- else
- if nil ~= self.light then
- self.light:SetActive(false)
- end
- end
- self:OnPlayChangeShow(nCount)
- end
- --获取上阵角色可升级数量
- function UIClimbingTowerView:GetLeveUpNum()
- local nBattlePatnerNum = 0
- local nPartnerId = -1
- --可上阵伙伴
- local tbBattlePartner = self:GetSortPartner()
- for i = 1, #tbBattlePartner do
- --是否可升级
- local lvUpState = ManagerContainer.RedPointMgr.HeroRPCtr:GetPartnerLvUpRPStatusById(tbBattlePartner[i].id)
- if lvUpState then
- if nPartnerId == -1 then
- nPartnerId = tbBattlePartner[i].id
- end
- nBattlePatnerNum = nBattlePatnerNum + 1
- end
- end
- return nBattlePatnerNum , nPartnerId
- end
- function UIClimbingTowerView:GetSortPartner()
- local partnerDatas = ManagerContainer.DataMgr.PartnerData:GetPartnersDataByInBattle()
- local sortedPartnerDatas = {}
- for _,v in pairs(partnerDatas) do
- sortedPartnerDatas[#sortedPartnerDatas + 1] = v
- end
- table.sort(sortedPartnerDatas, function (a, b)
- if a.owned and b.owned then
- return a.post < b.post
- else
- if a.owned and not b.owned then
- return true
- elseif not a.owned and b.owned then
- return false
- else
- return a.post < b.post
- end
- end
- end)
- return sortedPartnerDatas
- end
- --按钮点击 角色升级动画弹出播放
- function UIClimbingTowerView:OnPlayChangeShowState()
- moveState = not moveState
- self:OnPlayChangeShow()
- end
- --展示升级动画弹出播放
- function UIClimbingTowerView:OnPlayChangeShow(nCount)
- if nil == self.text1 or nil == self.bgGoto then
- return
- end
- if nil ~= nCount then
- self.text1.uILocalizeScript:SetContentAndValues("LvlUpNum", {nCount})
- end
- if LastmoveState ~= moveState then
- if moveState then
- self.bgGoto.animator:CrossFade("UIGotoIn", 0.1)
- else
- self.bgGoto.animator:CrossFade("UIGotoOut", 0.1)
- end
- LastmoveState = moveState
- end
- end
- -- 前往角色界面
- function UIClimbingTowerView:OnShowRoleWnd()
- local ncount,nId = self:GetLeveUpNum()
- if nId == -1 then
- nId = nil
- end
- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UIMAINVIEW_CHANGE_NOTICE, Enum.MainViewPageType.Role, nId)
- end
- function UIClimbingTowerView:OnHide()
- end
- function UIClimbingTowerView:OnShow(data)
- self.controller:SetData(data)
- self:UpdateLevelsData()
- end
- function UIClimbingTowerView:Clear()
- self.initedOver = false
- if self.queryTimer then
- self.queryTimer:Stop()
- self.queryTimer = nil
- end
- if self.cloudTimer then
- self.cloudTimer:Stop()
- self.cloudTimer = nil
- end
- if self.peakRefreshTimer then
- self.peakRefreshTimer:Stop()
- self.peakRefreshTimer = nil
- end
- local type = self.controller:GetCurTowerType()
- if type == Enum.UnlimitTowerType.PeakTower then
- if self.scrollItemGoes then
- self.scrollItemGoes = nil
- end
- if self.rewardLoopGridMap then
- for _, v in pairs(self.rewardLoopGridMap) do
- v:Dispose()
- end
- self.rewardLoopGridMap = nil
- end
- if self.previewSystemMap then
- for _, v in pairs(self.previewSystemMap) do
- v:Dispose()
- end
- self.previewSystemMap = nil
- end
- if self.roleSystemMap then
- for _, v in pairs(self.roleSystemMap) do
- v:Dispose()
- end
- self.rewardLoopGridMap = nil
- end
- end
- self.scrollview.loopListView:Dispose()
- end
- function UIClimbingTowerView:OnClose()
- self:Clear()
- self.cover:SetActive(false)
- end
- function UIClimbingTowerView:OnDispose()
- end
- function UIClimbingTowerView:RefreshClimbingTowerFriendInfo(levelIds)
- self.scrollview.loopListView:RefreshAllShownItem()
- end
- function UIClimbingTowerView:FindItemGo(levelId)
- if self.scrollview.content == nil then
- return nil
- end
- return self.scrollview.content.transform:Find(tostring(levelId))
- end
- function UIClimbingTowerView:UpdateLevelsData()
- self.controller:RefreshTowerDatas()
- local loopListView = self.scrollview.loopListView
- local length = self.controller:GetShowDataLength()
- local curTowerFloorIdx = self.controller:GetCurTowerFloorIdx()
- local type = self.controller:GetCurTowerType()
- if type == Enum.UnlimitTowerType.PeakTower then
- if curTowerFloorIdx < length then
- length = math.min(curTowerFloorIdx + 5, length)
- if curTowerFloorIdx <= 2 then
- curTowerFloorIdx = 1
- else
- curTowerFloorIdx = curTowerFloorIdx - 1
- end
- else
- curTowerFloorIdx = length - 2
- end
- self.peakStep = 0
- loopListView:SetListItemCount(length, false)
- self.scrollview.loopListView:MovePanelToItemIndex(curTowerFloorIdx - 1, 0)
- if not self.peakRefreshTimer then
- self.peakRefreshTimer = FrameTimer.New(slot(self.RefreshPeakTowerItems, self), 10, 3)
- end
- if not self.peakRefreshTimer.running then
- self.peakRefreshTimer:Start()
- end
- elseif type == Enum.UnlimitTowerType.ClimbingTower then
- if curTowerFloorIdx <= 2 then
- curTowerFloorIdx = 1
- else
- curTowerFloorIdx = curTowerFloorIdx - 1
- end
- loopListView:SetListItemCount(length, false)
- if curTowerFloorIdx > 1 then
- loopListView:MovePanelToItemIndex(curTowerFloorIdx - 1, 0)
- end
- end
-
- self.initedOver = true
- -- self.cover.animator:Play("CoverOut")
- end
- function UIClimbingTowerView:RefreshPeakTowerItems()
- self.peakStep = self.peakStep + 1
- local length = self.controller:GetShowDataLength()
- for i = 1, length do
- self:RefreshTopPeakItemByIdx(nil, i)
- end
- if self.peakStep >= 3 then
- self.peakStep = -1
- end
- end
- function UIClimbingTowerView:SetNpcInfo(levelNode,npcImg,natureImg,npc,Level)
- --怪物等級為爬塔層數 * 2
- levelNode.text.text = tostring(Level * 2)
- CommonUtil.LoadIcon(self, npc.npcImg, function (sprite)
- npcImg.image.sprite = sprite
- npcImg.image:SetNativeSize()
- if npc.offset~= nil then
- npcImg.rectTransform.anchoredPosition = npc.offset
- end
- end)
- CommonUtil.LoadIcon(self, npc.natureIcon, function (sprite)
- natureImg.image.sprite = sprite
- end)
- end
- function UIClimbingTowerView:GetItemByRowColumn(gridView, itemIndex, row, column)
- local length = self.controller:GetShowDataLength();
- if (itemIndex < 0 or itemIndex >=length) then
- return nil
- end
- local type = self.controller:GetCurTowerType()
- if type == Enum.UnlimitTowerType.ClimbingTower then
- return self:RefreshClimbingTowerItem(gridView, itemIndex)
- elseif type == Enum.UnlimitTowerType.PeakTower then
- return self:RefreshPeakTowerItem(gridView, itemIndex)
- end
- return nil
- end
- function UIClimbingTowerView:RefreshClimbingTowerItem(gridView, idx)
- local levelData = self.controller:GetShowDataByIdx(idx)
- local item = gridView:NewListViewItem("ClimbingTowerLevelItem")
- local levelLua = CommonUtil.BindGridViewItem2Lua(self, "ClimbingTowerLevelItem", item.gameObject)
- levelLua.gameObject.name = levelData.levelId
- levelLua.levelNum.text.text = "第"..levelData.levelId.."层"
- levelLua.passedNode:SetActive(levelData.hasPassed)
- levelLua.challengeBtn:SetActive(levelData.levelId == self.controller:GetCurTowerFloorIdx())
- levelLua.friendNode:SetActive(levelData:HasFriend())
- levelLua.newLevelNode:SetActive(levelData.levelId > self.controller:GetCurTowerFloorIdx())
- levelLua.bottomNode:SetActive(levelData.levelId <= self.controller:GetCurTowerFloorIdx())
- if nil ~= levelData.CardUnlock and "" ~= levelData.CardUnlock then
- levelLua.unLock.unlocktext.uILocalizeScript:SetContent(levelData.CardUnlock)
- levelLua.unLock:SetActive(true)
- else
- levelLua.unLock:SetActive(false)
- end
-
- if levelData.hasPassed then
- levelLua.npcList:SetActive(false)
- else
- levelLua.npcList:SetActive(true)
- for i=1, #levelData.npcs do
- local npc = levelData.npcs[i]
- if npc.npcImg ~= nil then
- if i == 1 then
- self:SetNpcInfo(levelLua.npcList.npcLevel1,levelLua.npcList.npc1,levelLua.npcList.natureIcon1,npc,levelData.levelId)
- elseif i == 2 then
- self:SetNpcInfo(levelLua.npcList.npcLevel2,levelLua.npcList.npc2,levelLua.npcList.natureIcon2,npc,levelData.levelId)
- elseif i == 3 then
- self:SetNpcInfo(levelLua.npcList.npcLevel3,levelLua.npcList.npc3,levelLua.npcList.natureIcon3,npc,levelData.levelId)
- elseif i == 4 then
- self:SetNpcInfo(levelLua.npcList.npcLevel4,levelLua.npcList.npc4,levelLua.npcList.natureIcon4,npc,levelData.levelId)
- end
- end
- end
- end
- self:HideAllItems(levelLua)
- if levelData.specialReward ~= nil then
- for i =1, #levelData.specialReward do
- self:SetSpecialData(self:GetItemGo(levelLua,i),levelData.specialReward[i][1],levelData.specialReward[i][2])
- end
- levelLua.bonusNode:SetActive(true)
- else
- levelLua.bonusNode:SetActive(false)
- end
-
- self.uiBase:AddButtonUniqueEventListener(levelLua.levelInfoBtn.button, self, self.OnClickViewLevelInfo, levelData.levelId)
- self.uiBase:AddButtonUniqueEventListener(levelLua.challengeBtn.button, self, self.OnClickChallengeBtn, levelData.levelId)
- self.uiBase:AddButtonUniqueEventListener(levelLua.friendNode.button, self, self.OnClickFriendBtn, levelData.levelId)
- return item
- end
- function UIClimbingTowerView:UpdatePeakTowerDataAfterWin(idx)
- self.controller:RefreshTowerDatas()
- local loopListView = self.scrollview.loopListView
- local length = self.controller:GetShowDataLength()
- local curTowerFloorIdx = self.controller:GetCurTowerFloorIdx()
- local type = self.controller:GetCurTowerType()
- if type == Enum.UnlimitTowerType.PeakTower then
- if curTowerFloorIdx < length then
- length = math.min(curTowerFloorIdx + 5, length)
- end
- end
- self.peakStep = -1
- loopListView:SetListItemCount(length, false)
- loopListView:RefreshAllShownItem()
- end
- function UIClimbingTowerView:RefreshPeakTowerItem(gridView, idx)
- local showData = self.controller:GetShowDataByIdx(idx)
- local item = gridView:NewListViewItem("ClimbingTowerTopItem")
- local itemlua = CommonUtil.BindGridViewItem2Lua(self, "ClimbingTowerTopItem", item.gameObject)
- local instanceId = item.gameObject:GetInstanceID()
- local curTowerFloorIdx = self.controller:GetCurTowerFloorIdx()
- local curState = curTowerFloorIdx > showData.floorIdx
- local selfUid = ManagerContainer.DataMgr.UserData:GetUserRoleId()
- local userData = showData:GetRoleInfo()
- local isRobot = userData.isRobot
- if not self.scrollItemGoes[instanceId] then
- self.scrollItemGoes[instanceId] = itemlua
- end
- item.gameObject.name = showData.floorIdx
-
- if not userData.inited then
- itemlua.playerNode:SetActive(false)
- itemlua.challengeBtn:SetActive(false)
- itemlua.btnBuy:SetActive(false)
- itemlua.rewards:SetActive(false)
- itemlua.passedNode:SetActive(false)
-
- itemlua.cover:SetActive(true)
- itemlua.btnBuy:SetActive(false)
- itemlua.challengeBtn:SetActive(false)
- itemlua.levelNum.text.text = I18N.SetLanguageValue("TopTowerLevel", showData.floorIdx)
-
- itemlua.btnMessage:SetActive(false)
- return item
- end
- itemlua.playerNode:SetActive(not curState)
- itemlua.challengeBtn:SetActive(not curState)
- itemlua.btnBuy:SetActive(not curState)
- itemlua.rewards:SetActive(not curState)
- itemlua.passedNode:SetActive(curState)
- itemlua.nametext.text.text = userData.nickName
- itemlua.cover:SetActive(curTowerFloorIdx < showData.floorIdx)
- itemlua.btnBuy:SetActive(curTowerFloorIdx == showData.floorIdx)
- itemlua.challengeBtn:SetActive(curTowerFloorIdx == showData.floorIdx)
- itemlua.levelNum.text.text = I18N.SetLanguageValue("TopTowerLevel", showData.floorIdx)
- itemlua.btnMessage:SetActive(not isRobot and selfUid ~= userData.uid)
- if self.peakStep == -1 then
- self:RefreshTopPeakItemByIdx(itemlua, showData.floorIdx)
- end
-
- return item
- end
- function UIClimbingTowerView:RefreshTopPeakItemByIdx(itemlua, idx)
- if not itemlua then
- itemlua = self:GetTopPeakItemByIdx(idx)
- end
- if not itemlua then return end
- local showData = self.controller:GetShowDataByIdx(idx - 1)
- local instanceId = itemlua.gameObject:GetInstanceID()
- if not showData then return end
- local heroData = showData:GetRoleHeroData()
- local curTowerFloorIdx = self.controller:GetCurTowerFloorIdx()
- local curState = curTowerFloorIdx > showData.floorIdx
- local userData = showData:GetRoleInfo()
- if not curState then
- if self.peakStep == -1 or self.peakStep == 2 then
- if not self.roleSystemMap[instanceId] then
- self.roleSystemMap[instanceId] = RoleViewSystem:new()
- end
- if not self.previewSystemMap[instanceId] then
- self.previewSystemMap[instanceId] = PreviewSystem:new("Preview", 256, 256)
- self.previewSystemMap[instanceId]:SetView(Vector3(-0.116, 1.649, 2.5), Quaternion.Euler(12.174, -182.628, 0.085))
- end
- itemlua.pos:SetActive(true)
- local selectZone = userData.selectZone
- if selectZone == 0 then
- local serverData = ManagerContainer.LuaGameMgr.serverData
- selectZone = serverData and serverData.id or 0
- end
- itemlua.servertext.text.text = I18N.SetLanguageValue("TopTowerServer", selectZone-1)--ManagerContainer.LuaGameMgr.serverData.name--
- itemlua.atknum.text.text = userData.fightPower
- self.roleSystemMap[instanceId]:CancelCreate()
- self.previewSystemMap[instanceId]:RemoveAllGo()
- self.roleSystemMap[instanceId]:SetHeroId(instanceId)
- self.roleSystemMap[instanceId]:RefreshView(Enum.RoleInEnvType.RoleMainView, userData.roleCfgId, userData.viewData, heroData and heroData.extGoesShowData or nil, self, self.LoadModelCB)
-
- itemlua.roleModel.rawImage.texture = self.previewSystemMap[instanceId]:GetRenderTexture()
- end
- if self.peakStep == -1 or self.peakStep == 3 then
- local loopGridView = itemlua.scrollView.loopGridView
- if not self.rewardLoopGridMap[instanceId] then
- self.rewardLoopGridMap[instanceId] = loopGridView
- end
-
- if not itemlua.initedLoop then
- loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
- return self:GetRewardItemByRowColumn(gridView, itemIndex, row, column)
- end, nil)
- itemlua.initedLoop = true
- end
-
- local cfgData = ManagerContainer.CfgMgr:GetTopTowerRewardCfgDataByLv(showData.floorIdx)
- self.curPeakTowerItemRewardData = cfgData and cfgData.RewardItems or nil
- local rewardLength = cfgData and #cfgData.RewardItems or 0
- loopGridView:RefreshListByIndex(rewardLength, 0)
-
- local cost = cfgData and cfgData.BuyRoadCost or nil
- itemlua.btnBuy.icon.image.enabled = false
- if cost and cost[1] then
- local key = cost[1][1]
- local val = cost[1][2]
- local ownNum = CommonUtil.GetOwnResCountByItemId(key)
- local costCfgData = ManagerContainer.CfgMgr:GetItemById(key)
- if costCfgData.Icon and costCfgData.Icon ~= '' then
- CommonUtil.LoadIcon(self, costCfgData.Icon, function (sprite)
- itemlua.btnBuy.icon.image.sprite = sprite
- itemlua.btnBuy.icon.image.enabled = true
- end, 'ItemIcon'..idx)
- end
- if ownNum < val then
- itemlua.btnBuy.num.text.text = string.format(Constant.PinkColorText, val)
- else
- itemlua.btnBuy.num.text.text = val
- end
- self.uiBase:AddButtonUniqueEventListener(itemlua.btnBuy.button, self, self.OnPeakTowerBuyClick, showData.floorIdx, val)
- end
- self.uiBase:AddButtonUniqueEventListener(itemlua.challengeBtn.button, self, self.OnPeakTowerChallengeClick, showData.floorIdx)
- self.uiBase:AddButtonUniqueEventListener(itemlua.btnMessage.button, self, self.OnCheckFightInfo, showData.floorIdx)
- end
- end
- end
- function UIClimbingTowerView:LoadModelCB(go, result, instanceId)
- if not go then return end
- if self.previewSystemMap[instanceId] and go ~= nil then
- go.name = instanceId
- self.scrollItemGoes[instanceId].pos:SetActive(false)
- self.scrollItemGoes[instanceId].roleModel:SetActive(true)
- self.previewSystemMap[instanceId]:UpdateGo(go)
- end
- go:SetActive(true)
- end
- function UIClimbingTowerView:GetTopPeakItemByIdx(idx)
- local item = self.scrollview.loopListView:GetShownItemByItemIndex(idx - 1)
- if item then
- local itemlua = CommonUtil.GetBindGridViewItem2Lua(self, "ClimbingTowerTopItem", item.gameObject)
- return itemlua
- end
- end
- function UIClimbingTowerView:OnPeakTowerBuyClick(button, params)
- self.curBuyIdx = params[0]
- local data = {"PeakTowerBuyTips", {params[1]}, nil, self, self.ConfirmBuy}
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
- end
- function UIClimbingTowerView:ConfirmBuy()
- if not self.curBuyIdx then return end
- self.controller:SendPeakTowerBuyReq(self.curBuyIdx)
- end
- function UIClimbingTowerView:OnPeakTowerChallengeClick(button, params)
- local floorIdx = params[0]
- self.controller:SendChallengeReq(floorIdx)
- end
- function UIClimbingTowerView:OnCheckFightInfo(button, params)
- local idx = params[0]
- self.controller:QueryCrossFightInfo(idx)
- end
- function UIClimbingTowerView:GetRewardItemByRowColumn(gridView, itemIndex, row, column)
- if not self.curPeakTowerItemRewardData then
- return nil
- end
- local showData = self.curPeakTowerItemRewardData[itemIndex + 1]
- if not showData then
- return nil
- end
- local item = gridView:NewListViewItem("IconSmallItem")
- local itemlua = CommonUtil.BindGridViewItem2Lua(self, "IconItem", item.gameObject)
- local data = {cfgId = showData[1], num = showData[2]}
- IconItemCtr:SetData(self, itemlua, data, Enum.ItemIEnterType.Bag, self, self.OnItemClick)
- return item
- end
- function UIClimbingTowerView:OnItemClick(button,params)
- ManagerContainer.LuaUIMgr:OpenTips(params[0])
- end
- function UIClimbingTowerView:SetSpecialData(itemlua,itemId,itemCnt)
- CommonUtil.SetRewardItemData(self,itemId,itemlua,itemCnt, self.OnClickItem)
- itemlua:SetActive(true)
- end
- function UIClimbingTowerView:GetItemGo(levelLua,idx)
- if idx == 1 then
- return levelLua.bonusNode.items.item1
- elseif idx ==2 then
- return levelLua.bonusNode.items.item2
- else
- return levelLua.bonusNode.items.item3
- end
- end
- function UIClimbingTowerView:HideAllItems(levelLua)
- for i = 1, 3 do
- local go = self:GetItemGo(levelLua,i)
- go:SetActive(false)
- end
- end
- function UIClimbingTowerView:OnClickItem(btn,params)
- local logicData = params[0]
- ManagerContainer.LuaUIMgr:OpenTips(logicData)
- end
- function UIClimbingTowerView:OnClickClose()
- --ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UIMAINVIEW_CHANGE_NOTICE, Enum.MainViewPageType.Town)
- ManagerContainer.LuaUIMgr:OpenSourceUI(self)
- end
- function UIClimbingTowerView:OnDragScrollView()
- self.controller:SendFriendPassTowerInfo()
- end
- function UIClimbingTowerView:OnFightPowerAck(data)
- local bIsOpen = true
- if self.controller == nil then return end
- if nil ~= data.min_tower_info then
- --LogError(Inspect(data.min_tower_info))
- local info = data.min_tower_info
- local levelInfo = self.controller:GetLevelInfo(info.tower_level)
- bIsOpen = tonumber(self.lastClickViewInfo) == tonumber(info.tower_level)
- if levelInfo ~= nil then
- levelInfo:SetLowestPlayerInfo(info.brief,info.fight_power,info.record_time,info.battle_time)
- end
- end
- if bIsOpen then
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIClimbingTowerLevelInfo,self.lastClickViewInfo)
- end
- end
- function UIClimbingTowerView:OnClickViewLevelInfo(btn,param)
- local levelId = param[0]
- self.lastClickViewInfo = levelId
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_TOWER_LEVEL_MIN_FIGHT_POWER_REQ, {tower_level = levelId})
- end
- function UIClimbingTowerView:OnClickChallengeBtn(btn,param)
- local levelId = param[0]
- if levelId ~= self.controller:GetCurTowerFloorIdx() then
- return
- end
- self.controller:EnterBattle(levelId)
- end
- function UIClimbingTowerView:OnClickFriendBtn(btn,param)
- local levelId = param[0]
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIClimbingTowerFriendInfo,levelId)
- end
- function UIClimbingTowerView:OnClickRank()
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIClimbingTowerRank)
- end
- function UIClimbingTowerView:OnClickPlayRuleBtn()
- local type = self.controller:GetCurTowerType()
- if type == Enum.UnlimitTowerType.ClimbingTower then
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayRule, {'PlayExplainTitle', 'PracticeTowerPlayExplain'})
- elseif type == Enum.UnlimitTowerType.PeakTower then
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayRule, {'PlayExplainTitle', 'TopTowerRule'})
- end
- end
- function UIClimbingTowerView:OnClickBtnStatistics()
- if LuaBattleBridge.HasStatistics(BattleMode.Time,BattleSubMode.ClimbingTower) then
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleStatistics,{BattleMode.Time,BattleSubMode.ClimbingTower})
- else
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("NullBattleInformation2")
- end
- end
- function UIClimbingTowerView:ShowTowerMode()
- -- local type = self.controller:GetCurTowerType()
- -- if type == Enum.UnlimitTowerType.ClimbingTower then
-
- -- elseif type == Enum.UnlimitTowerType.PeakTower then
-
- -- end
- local TDMgr = ManagerContainer.DataMgr.TowerDataMgr
- local tmode = TDMgr:GetTowerMode()
- self.towerModes:SetActive(true)
- self:RefTowerModeBtn(tmode)
- end
- function UIClimbingTowerView:RefTowerModeBtn(cmode)
- local curMode = cmode
- local AllMode = {0,1,2} ---0 c 1 P 2 W
- -- local emUnlockLevel = GlobalConfig.Instance:GetConfigIntValue(365)
- -- local curLevel = ManagerContainer.LuaBattleMgr:GetCurDiffLvID()
- -- if(curLevel >= emUnlockLevel)then
- -- table.insert(AllMode,2)
- -- end
- local needShowModeBtn = {}
- for _, v in ipairs(AllMode) do
- if v ~= curMode then
- table.insert(needShowModeBtn,v)
- end
- end
- self.modeNode.loopVerticalScrollRect:ClearCells()
- CommonUtil.LoopGridViewEleCreateNew(self,
- self.modeNode.loopVerticalScrollRect,
- self.content.verticalLayoutGroup,
- needShowModeBtn,
- 0,
- self,
- self.UpdateModeNode,
- nil, nil, 0);
- end
- function UIClimbingTowerView:UpdateModeNode(_itemLua, _idx,_data)
- if not _itemLua or not _data then return end
- CommonUtil.UpdateItemPrefab(self, _itemLua, _data, nil,self,self.OnClickTowerMode)
- end
- function UIClimbingTowerView:OnClickTowerMode(btn, data)
- -- LogError("点击 data = " ..Inspect(data))
- local mdata = data[0]
- local TDMgr = ManagerContainer.DataMgr.TowerDataMgr
- local UnlockInfo = TDMgr:GetModelockInfo(mdata)
- if not UnlockInfo.isunlock then
- local towertxt = self:GetCurTowerTitle(mdata)
- local txtT =I18N.T("TitleClimbingTower")
- local txtU = I18N.T(towertxt)
- local txt = I18N.SetLanguageValue("TowerUnlock",txtT,UnlockInfo.unlockLv,txtU)
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(txt)
- return
- end
- local tmode = TDMgr:GetTowerMode()
- if mdata < 2 then
- if tmode >= 2 then
- local type = self.controller:GetCurTowerType()
- if mdata ~= type then
- --self.controller:SetCurTowerType(1 - mdata)
- self:OnBtnTowerClick()
- else
- self.cover:SetActive(true)
- -- 保护机制 5秒后关闭云
- if not self.cloudTimer then
- self.cloudTimer = Timer.New(slot(self.CloudOut, self), 1)
- end
- if not self.cloudTimer.running then
- self.cloudTimer:Start()
- end
- end
- else
- self:OnBtnTowerClick()
- end
-
- else
- --self.boardTitle.uILocalizeScript:SetContent("TopTowerTitle")
- self.cover:SetActive(true)
- -- 保护机制 5秒后关闭云
- if not self.cloudTimer then
- self.cloudTimer = Timer.New(slot(self.CloudOut, self), 1)
- end
- if not self.cloudTimer.running then
- self.cloudTimer:Start()
- end
- end
- local isWj = mdata == 2
- self.scrollview:SetActive(not isWj)
- self.wJNode:SetActive(isWj)
- if isWj then
- local curwjInfo = TDMgr:GetCurWJTowerInfo()
- self:RefWJNpcView(curwjInfo.npcList,curwjInfo.lv)
- end
- self:SetTitle(mdata)
- TDMgr:SetTowerMode(mdata)
- self.towerModes:SetActive(false)
- end
- function UIClimbingTowerView:CloseModeNode()
- self.towerModes:SetActive(false)
- end
- function UIClimbingTowerView:RefWJNpcView(npclist,lv)
- for i=1, #npclist do
- local npc = npclist[i]
- if npc.npcImg ~= nil then
- if i == 1 then
- self:SetNpcInfo(self.wjnpcList.npcLevel1,self.wjnpcList.npc1,self.wjnpcList.natureIcon1,npc,npc.npcLevel)
- elseif i == 2 then
- self:SetNpcInfo(self.wjnpcList.npcLevel2,self.wjnpcList.npc2,self.wjnpcList.natureIcon2,npc,npc.npcLevel)
- elseif i == 3 then
- self:SetNpcInfo(self.wjnpcList.npcLevel3,self.wjnpcList.npc3,self.wjnpcList.natureIcon3,npc,npc.npcLevel)
- elseif i == 4 then
- self:SetNpcInfo(self.wjnpcList.npcLevel4,self.wjnpcList.npc4,self.wjnpcList.natureIcon4,npc,npc.npcLevel)
- end
- end
- end
- self.levelNum.text.text = I18N.SetLanguageValue("TopTowerLevel",lv)
- self:RefWjReword()
- end
- function UIClimbingTowerView:SetTitle(mode)
- self.boardTitle.uILocalizeScript:SetContent(self:GetCurTowerTitle(mode))
- end
- function UIClimbingTowerView:GetCurTowerTitle(mode)
- local modeTxt ="TitleClimbingTower"
- if(mode == 1) then
- modeTxt ="TopTowerTitle"
- elseif mode == 2 then
- modeTxt ="wjTower"
- end
- return modeTxt
- end
- function UIClimbingTowerView:OnClickWJBtn()
- --ManagerContainer.DataMgr.TowerDataMgr:EnterBattle_WJ(1,{})
- ManagerContainer.DataMgr.TowerDataMgr:SendWjBeginReq()
- end
- function UIClimbingTowerView:RefWjReword()
- -- local rewardlist = ManagerContainer.DataMgr.TowerDataMgr:GetCurWjReword()
- -- self.wjGoodsItems.loopHorizontalScrollRect:ClearCells()
- -- CommonUtil.LoopGridViewEleCreateNew(self,
- -- self.wjGoodsItems.loopHorizontalScrollRect,
- -- self.wjContent.horizontalLayoutGroup,
- -- rewardlist,
- -- 0,
- -- self,
- -- self.UpdateRewardItem,
- -- nil,nil,0);
- self.wjReword:SetActive(false)
- self:RefWjSpReword()
- self:RefreshBattleBuffInfo()
- end
- function UIClimbingTowerView:UpdateRewardItem(_itemLua, _idx,_data)
- if not _itemLua or not _data then return end
- --_itemLua.gameObject:SetParent(wnd.content.transform)
- CommonUtil.UpdateItemPrefab(self, _itemLua, _data, Enum.ItemIEnterType.Bag,self,self.OnClickItem)
- end
- function UIClimbingTowerView:RefWjSpReword()
- local rewardlist = ManagerContainer.DataMgr.TowerDataMgr:GetCurSpecialReword(true)
- self.wjSpGoodsItems.loopHorizontalScrollRect:ClearCells()
- CommonUtil.LoopGridViewEleCreateNew(self,
- self.wjSpGoodsItems.loopHorizontalScrollRect,
- self.wjSpContent.horizontalLayoutGroup,
- rewardlist,
- 0,
- self,
- self.UpdateSpRewardItem,
- nil,nil,0);
- end
- function UIClimbingTowerView:UpdateSpRewardItem(_itemLua, _idx,_data)
- if not _itemLua or not _data then return end
- --_itemLua.gameObject:SetParent(wnd.content.transform)
- CommonUtil.UpdateItemPrefab(self, _itemLua, _data, Enum.ItemIEnterType.Bag,self,self.OnClickItem)
- end
- function UIClimbingTowerView:OnClickRewardInfo()
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIWJTowerRewardInfo)
- end
- function UIClimbingTowerView:GetItemByIndexPrivilege(loopListView, itemIdx)
-
- local item = loopListView:NewListViewItem('EntryUnlockDscItem')
- local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'EntryUnlockDscItem', item.gameObject)
- local curID = itemIdx + 1
- LogError("itemIdx = "..itemIdx)
- local cfgs = ManagerContainer.CfgMgr:GetWjBattleBuffCfg()
- local cfg = cfgs[curID]
- if cfg == nil then
- return
- end
- local buffinfo = ManagerContainer.DataMgr.TowerDataMgr:GetCurBattleBuffInfo()
- local curLv = buffinfo["buff"..curID]
- if curLv == nil then
- return
- end
- local lvEffect = cfg.BuffEffect[1][2]
- --local curEffect = lvEffect * curLv
- if itemLua then
- local p1 = I18N.T('WjBattleType'..curID)
- local txt = I18N.SetLanguageValue('WjBattleBuff_Dec',p1,lvEffect,lvEffect,curLv,cfg.Max)
- local idx = 0
- if curLv > 0 then
- idx = 1
- txt = "<color=#00ff06>"..txt.."</color>"
- end
- itemLua.icon.uIImageSwitchSprite:ChangeSprite(idx)
-
- itemLua.desTxt.text.text = txt
- end
- ManagerContainer.LuaUIMgr:ForceRebuildLayoutImmediate(item.CachedRectTransform)
- return item
- end
- function UIClimbingTowerView:InitBattleBuffView()
- self.privilegeScrollView.loopListView:InitListView(0, function (loopListView, itemIdx)
- return self:GetItemByIndexPrivilege(loopListView, itemIdx)
- end, nil, nil)
- end
- function UIClimbingTowerView:RefreshBattleBuffInfo()
- self.privilegeScrollView.loopListView:SetListItemCount(0, true)
- self.privilegeScrollView.loopListView:SetListItemCount(3, true)
- local cfgs = ManagerContainer.CfgMgr:GetWjBattleBuffCfg()
- local buffinfo = ManagerContainer.DataMgr.TowerDataMgr:GetCurBattleBuffInfo()
- local value = 0
- for i = 1, 3, 1 do
- local cfg = cfgs[i]
- local curLv = buffinfo["buff" .. i]
- if curLv > 0 then
- local lvEffect = cfg.BuffEffect[1][2]
- local curEffect = lvEffect * curLv
- value = value + curEffect
- end
- end
- local txt = I18N.SetLanguageValue('WjBattleBuff_Dec2',value,value)
- if value > 0 then
- txt = "<color=#00ff06>"..txt.."</color>"
- end
- self.privilegeScrollView.entryUnlockDscItem.battleBuffTxt.text.text = txt
- end
- return UIClimbingTowerView
|