require("Base/BasePanel") JumpServerHightLadderPanel = Inherit(BasePanel) local this = JumpServerHightLadderPanel local datas = {} local liveNodeList = {} local goList = {} local stage = 0 local enterable = false --local JoinRank = ConfigManager.GetConfigData(ConfigName.MServerArenaSetting,1).JoinRank local isFirstRefresh = false local curPos = 1 --初始化组件(用于子类重写) function JumpServerHightLadderPanel:InitComponent() this.spLoader = SpriteLoader.New() this.timeText = Util.GetGameObject(self.gameObject, "titleObg/timeImage/Text") this.helpBtn = Util.GetGameObject(self.gameObject, "HelpBtn") this.helpPos = this.helpBtn:GetComponent("RectTransform").localPosition this.sortBtn = Util.GetGameObject(self.gameObject, "rightBtns/sortBtn") this.rewardSortBtn = Util.GetGameObject(self.gameObject, "rightBtns/rewardSortBtn") this.recordBtn = Util.GetGameObject(self.gameObject, "rightBtns/recordBtn") this.shopBtn = Util.GetGameObject(self.gameObject, "rightBtns/shopBtn") this.formationBtn = Util.GetGameObject(self.gameObject, "rightBtns/formationBtn") this.backBtn = Util.GetGameObject(self.gameObject, "backBtn") -- this.singlePre = Util.GetGameObject(self.gameObject, "middleObg/singlePre") -- this.rect = Util.GetGameObject(self.gameObject, "middleObg/rect") -- this.scrollView=SubUIManager.Open(SubUIConfig.ScrollCycleView,this.rect.transform,this.singlePre, -- nil,Vector2.New(1079.9,1533.4),1,1,Vector2.New(0,0)) -- this.scrollView.moveTween.MomentumAmount = 1 -- this.scrollView.moveTween.Strength = 2 for i = 1, 4 do goList[i] = Util.GetGameObject(self.gameObject, "middleObg/rect/singlePre (" .. i .. ")") end this.mySortText = Util.GetGameObject(self.gameObject, "endObg/mySortText") this.sdBtn = Util.GetGameObject(self.gameObject, "endObg/sdBtn") this.numInfo = Util.GetGameObject(self.gameObject, "endObg/numInfo") Util.GetGameObject(self.gameObject, "endObg/sdBtn/Text"):GetComponent("Text").text = "扫 荡" Util.GetGameObject(self.gameObject, "endObg/numInfo/mianfeiText"):GetComponent("Text").text = "免费次数:" this.mianfeiText = Util.GetGameObject(self.gameObject, "endObg/numInfo/mianfeiText/Text"):GetComponent("Text") Util.GetGameObject(self.gameObject, "endObg/numInfo/buyText"):GetComponent("Text").text = "购买次数:" this.buyText = Util.GetGameObject(self.gameObject, "endObg/numInfo/buyText/Text"):GetComponent("Text") this.addNumBtn = Util.GetGameObject(self.gameObject, "endObg/numInfo/addNumBtn/click") this.canPlayerTipText = Util.GetGameObject(self.gameObject, "endObg/canPlayerTipText") this.signObj = Util.GetGameObject(self.gameObject, "signObj") this.btn_left = Util.GetGameObject(self.gameObject, "signObj/btn_left") this.btn_right = Util.GetGameObject(self.gameObject, "signObj/btn_right") this.selectObj = Util.GetGameObject(self.gameObject, "signObj/selectBar/selectBtn") this.signBtnList = {} for i = 1, 4 do local proObj = {} local btn = Util.GetGameObject(self.gameObject, "signObj/selectBar/btn" .. i) proObj.img = btn:GetComponent("Image") proObj.img.sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(i)) proObj.btn_sign = Util.GetGameObject(btn, "btn") proObj.red = Util.GetGameObject(btn, "btn/red") proObj.info = Util.GetGameObject(self.gameObject, "signObj/selectBar/btn" .. i .. "/info"):GetComponent("Text") proObj.btn = btn this.signBtnList[i] = proObj end this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform) end --绑定事件(用于子类重写) function JumpServerHightLadderPanel:BindEvent() for i = 1, #this.signBtnList do Util.AddClick(this.signBtnList[i].btn_sign, function() local sureFunc = function() NetManager.LuofuRegisterRequest(i, function() this.SetSignBtnShow() end) end local args = {} args[1] = "确认报名当前所选阵营?" args[2] = "确认" args[3] = "取消" args[4] = sureFunc UIManager.OpenPanel(UIName.GMCommonConfirmPanel, args) end) end Util.AddClick(this.btn_left, function() if curPos - 1 <= 0 then curPos = 4 else curPos = curPos - 1 end JumpServerManager.GetWorldArenaInfoRequest(curPos, function() this.SetSelectPos() --this.OnShowPanel() end) end) Util.AddClick(this.btn_right, function() if curPos + 1 > 4 then curPos = 1 else curPos = curPos + 1 end JumpServerManager.GetWorldArenaInfoRequest(curPos, function() this.SetSelectPos() --this.OnShowPanel() end) end) Util.AddClick(this.backBtn, function() self:ClosePanel() end) Util.AddClick(this.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.JumpServerHeightLadder, this.helpPos.x, this.helpPos.y) end) Util.AddClick(this.sortBtn, function() JumpServerManager.SetCurPersonInfo(nil) UIManager.OpenPanel(UIName.RankingSingleListPanel, rankKingList[18]) end) Util.AddClick(this.rewardSortBtn, function() UIManager.OpenPanel(UIName.JumpServerHightLadderRewardSortPanel, FUNCTION_OPEN_TYPE.JumpServer_HightLadder) end) Util.AddClick(this.recordBtn, function() UIManager.OpenPanel(UIName.JumpServerHightLadderRecordPopup) end) Util.AddClick(this.shopBtn, function() JumpManager.GoJump(40083) end) Util.AddClick(this.formationBtn, function() -- if not ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.JumpServer_HightLadder) then -- PopupTipPanel.ShowTip(Language[10082]) -- return -- end if JumpServerManager.arenaType == 0 then PopupTipPanel.ShowTip("报名后才能设置编队") return end UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.JUMPSERVER_HIGHTLADDER) end) Util.AddClick(this.sdBtn, function() --条件判断 this.BuyVipFun(1, 2, function() --直接战斗 JumpServerManager.StarFightHightLadder(nil, 1, function(msg) PrivilegeManager.RefreshPrivilegeUsedTimes(PRIVILEGE_TYPE.JUMPSERVER_GIGHTLADDER_MIANFEINUM, 1) --更新特权 this.RefreshBuyNum() this.OnShowPanel() end) end) end) Util.AddClick(this.addNumBtn, function() this.BuyVipFun(2, nil) end) end --添加事件监听(用于子类重写) function JumpServerHightLadderPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.JumpServerHeightLadder.UpdateHeightLadderPanel, this.OnShowPanel) Game.GlobalEvent:AddEvent(GameEvent.Privilege.OnPrivilegeZeroUpdate, this.RefreshBuyNum) Game.GlobalEvent:AddEvent(GameEvent.Privilege.OnPrivilegeUpdate, this.RefreshBuyNum) -- Game.GlobalEvent:AddEvent(GameEvent.JumpServerHeightLadder.UpdateHeightLadderNum, this.RefreshBuyNum) end --移除事件监听(用于子类重写) function JumpServerHightLadderPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.JumpServerHeightLadder.UpdateHeightLadderPanel, this.OnShowPanel) Game.GlobalEvent:RemoveEvent(GameEvent.Privilege.OnPrivilegeZeroUpdate, this.RefreshBuyNum) Game.GlobalEvent:RemoveEvent(GameEvent.Privilege.OnPrivilegeUpdate, this.RefreshBuyNum) -- Game.GlobalEvent:AddEvent(GameEvent.JumpServerHeightLadder.UpdateHeightLadderNum, this.RefreshBuyNum) end --跨服 function JumpServerHightLadderPanel:OnOpen() FormationManager.GetFormationByID(FormationTypeDef.JUMPSERVER_HIGHTLADDER) curPos = JumpServerManager.arenaType if curPos == 0 then curPos = 1 end this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.JumpServerHightLadder }) this.RefreshOnOpen() isFirstRefresh = false end --界面打开时调用(用于子类重写) function JumpServerHightLadderPanel:OnShow() local timeStr = "后开始" if stage == JumpServer_Stage.Attack then timeStr = "后结束" elseif stage == JumpServer_Stage.End then timeStr = "后开始" end this.RemainTimeDown(this.timeText, this.timeText:GetComponent("Text"), JumpServerManager.GetHightLadderDataEndTime(), timeStr) end function this.SetSelectPos() this.selectObj.transform:SetParent(this.signBtnList[curPos].btn.transform) this.selectObj.transform.localPosition = Vector3.zero end function this.SetSignBtnShow() --攻击阶段不显示膜拜信息 this.signObj:SetActive(stage ~= JumpServer_Stage.Attack) for i = 1, #this.signBtnList do this.signBtnList[i].btn_sign:SetActive(JumpServerManager.arenaType == 0) this.signBtnList[i].info.gameObject:SetActive(false) if JumpServerManager.arenaType > 0 then this.signBtnList[JumpServerManager.arenaType].info.gameObject:SetActive(true) end end end function JumpServerHightLadderPanel.RefreshOnOpen() JumpServerManager.GetWorldArenaInfoRequest(curPos) end function this:OnSortingOrderChange() -- Util.AddParticleSortLayer(this.effect, self.sortingOrder - orginLayer) end function this.OnShowPanel() stage = JumpServerManager.GetHightLadderDatastage() datas = JumpServerManager.GetHightLadderDataArenaInfo() enterable = JumpServerManager.GetHightLadderDataEnterable() LogError("datas.arenaEnemys " .. #datas.arenaEnemys) for i = 1, 4 do local curData = datas.arenaEnemys[i] or {} this.ShowSingleData(goList[i], curData, i) end this.SetSignBtnShow() this.SetSelectPos() LogError("JumpServerManager.arenaType==" .. JumpServerManager.arenaType) this.canPlayerTipText:SetActive(false) this.mySortText:SetActive(false) this.sdBtn:SetActive(false) this.numInfo:SetActive(false) local timeStr = "" LogPink("stage " .. stage) this.canPlayerTipText.transform.localPosition = Vector3.New(1.3, 46.5, 0) this.canPlayerTipText:GetComponent("Text").text = "" -- "本服千战逐胜台前"..JoinRank.."名可以参加" timeStr = "后开始" --1 未开始 2 战斗阶段 3 膜拜阶段 if stage == JumpServer_Stage.NoStar then this.canPlayerTipText:SetActive(true) elseif stage == JumpServer_Stage.Attack then timeStr = "后结束" if enterable then this.mySortText:SetActive(true) this.sdBtn:SetActive(true) this.numInfo:SetActive(true) local myRank = JumpServerManager.GetHightLadderDataMyRank() <= 1000 and JumpServerManager.GetHightLadderDataMyRank() or "1000+" this.mySortText:GetComponent("Text").text = "我的排名:" .. myRank this.RefreshBuyNum() else this.canPlayerTipText:SetActive(true) end elseif stage == JumpServer_Stage.End then timeStr = "后开始" if enterable then if GetTimeStampCorrespondingWeekNum(GetTimeStamp()) >= 2 and GetTimeStampCorrespondingWeekNum(GetTimeStamp()) < 3 then --优化,战斗阶段结束后的下个周二零点后(本服竞技场重置),不再显示上期排名和邮件提示,改为显示:本服千战逐胜台前100名可参加 this.canPlayerTipText:GetComponent("Text").text = "" --"本服千战逐胜台前"..JoinRank.."名可以参加" else this.canPlayerTipText.transform.localPosition = Vector3.New(1.3, 11.85, 0) local myRank = JumpServerManager.GetHightLadderDataMyRank() <= 1000 and JumpServerManager.GetHightLadderDataMyRank() or "1000+" this.mySortText:GetComponent("Text").text = "我的排名:" .. myRank if JumpServerManager.GetHightLadderDataMyRank() <= 1000 then this.canPlayerTipText:GetComponent("Text").text = "已通过邮件发放排名奖励" else this.canPlayerTipText:GetComponent("Text").text = "无法获得排名奖励" end this.mySortText:SetActive(true) end else end this.canPlayerTipText:SetActive(true) end this.RemainTimeDown(this.timeText, this.timeText:GetComponent("Text"), JumpServerManager.GetHightLadderDataEndTime(), timeStr) end function this.RefreshBuyNum() LogGreen("JumpServerManager.GetCanBattleCount() " .. JumpServerManager.GetCanBattleCount()) LogGreen("JumpServerManager.GetCanBuyBattleCount() " .. JumpServerManager.GetCanBuyBattleCount()) this.mianfeiText.text = JumpServerManager.GetCanBattleCount() this.buyText.text = JumpServerManager.GetCanBuyBattleCount() end function this.ShowSingleData(go, data, i) if not data then return end local playerInfo = Util.GetGameObject(go, "playerInfo") local sdBtn = Util.GetGameObject(go, "sdBtn") local cliclBtn = Util.GetGameObject(go, "click") local sdBtnRedPoint = Util.GetGameObject(go, "sdBtn/redPoint") local dianzanImage = Util.GetGameObject(go, "sdBtn/dianzanImage") local liveDef = Util.GetGameObject(go, "liveDef") playerInfo:SetActive(false) sdBtn:SetActive(false) liveDef:SetActive(false) sdBtnRedPoint:SetActive(false) dianzanImage:SetActive(false) --1 未开始 2 战斗阶段 3 膜拜阶段 if stage == JumpServer_Stage.NoStar and data.personInfo == nil then sdBtn:SetActive(true) liveDef:SetActive(true) Util.GetGameObject(go, "sdBtn/Text"):SetActive(true) Util.GetGameObject(go, "sdBtn/Text"):GetComponent("Text").text = "虚以待位" local str = "s_sanjiechumo_ren_1" --i % 2 > 0 and "s_sanjiechumo_ren_1" or "s_sanjiechumo_ren_2" Util.GetGameObject(go, "liveDef"):GetComponent("Image").sprite = this.spLoader:LoadSprite(str) Util.AddOnceClick(sdBtn, function() end) Util.AddOnceClick(cliclBtn, function() end) elseif stage == JumpServer_Stage.Attack and data and data.personInfo then playerInfo:SetActive(true) sdBtn:SetActive(true) Util.GetGameObject(go, "sdBtn/Text"):SetActive(true) Util.GetGameObject(go, "sdBtn/Text"):GetComponent("Text").text = "挑 战" Util.GetGameObject(go, "playerInfo/name/nameText"):GetComponent("Text").text = data.personInfo.servername .. " " .. data.personInfo.name Util.GetGameObject(go, "playerInfo/warPower/powerBtn/value"):GetComponent("Text").text = data.personInfo .totalForce Util.GetGameObject(go, "playerInfo/warPower/Text"):GetComponent("Text").text = "第" .. data.personInfo.rank .. "名" local live = Util.GetGameObject(go, "playerInfo/live") this.LocadPersonInfoLive(go, data.personInfo, live) --NameManager.roleSex sdBtnRedPoint:SetActive(JumpServerManager.GetCanBattleCount() > 0 and enterable) Util.AddOnceClick(sdBtn, function() if not enterable then --PopupTipPanel.ShowTip("本服千战逐胜台前"..JoinRank.."名可以参加") PopupTipPanel.ShowTip("本次赛季您并未报名,无法参战") return end this.BuyVipFun(1, 1, function() --直接战斗 JumpServerManager.StarFightHightLadder(data.personInfo, 0, function(msg) if msg then PrivilegeManager.RefreshPrivilegeUsedTimes(PRIVILEGE_TYPE.JUMPSERVER_GIGHTLADDER_MIANFEINUM, 1) --更新特权 this.OnShowPanel() end this.RefreshBuyNum() end) end) end) Util.AddOnceClick(cliclBtn, function() JumpServerManager.SetCurPersonInfo(data.personInfo) local formation = FormationTypeDef.LuoFuZhengFeng1 if JumpServerManager.arenaType ~= 0 and JumpServerManager.stage == 3 then if JumpServerManager.arenaType == 1 then formation = FormationTypeDef.LuoFuZhengFeng1 elseif JumpServerManager.arenaType == 2 then formation = FormationTypeDef.LuoFuZhengFeng2 elseif JumpServerManager.arenaType == 3 then formation = FormationTypeDef.LuoFuZhengFeng3 elseif JumpServerManager.arenaType == 4 then formation = FormationTypeDef.LuoFuZhengFeng4 end else if curPos == 1 then formation = FormationTypeDef.LuoFuZhengFeng1 elseif curPos == 2 then formation = FormationTypeDef.LuoFuZhengFeng2 elseif curPos == 3 then formation = FormationTypeDef.LuoFuZhengFeng3 elseif curPos == 4 then formation = FormationTypeDef.LuoFuZhengFeng4 end end LogGreen("编队Id:" .. formation) JumpServerManager.showRankType = formation UIManager.OpenPanel(UIName.PlayerInfoPopup, data.personInfo.uid, PLAYER_INFO_VIEW_TYPE.JUPMSERVER, data.personInfo.servername, formation) end) elseif stage == JumpServer_Stage.NoStar and data and data.personInfo then playerInfo:SetActive(true) sdBtn:SetActive(true) LogPink("data.personInfo.name " .. data.personInfo.name .. " data.personInfo.rank " .. data.personInfo.rank .. " data.hadProud " .. tostring(data.hadProud)) Util.GetGameObject(go, "playerInfo/name/nameText"):GetComponent("Text").text = data.personInfo.servername .. " " .. data.personInfo.name Util.GetGameObject(go, "playerInfo/warPower/powerBtn/value"):GetComponent("Text").text = data.personInfo .totalForce Util.GetGameObject(go, "playerInfo/warPower/Text"):GetComponent("Text").text = "第" .. data.personInfo.rank .. "名" local live = Util.GetGameObject(go, "playerInfo/live") this.LocadPersonInfoLive(go, data.personInfo, live) sdBtnRedPoint:SetActive(not data.hadProud) Util.GetGameObject(go, "sdBtn/Text"):GetComponent("Text").text = "膜 拜" Util.GetGameObject(go, "sdBtn/Text"):SetActive(not data.hadProud) Util.GetGameObject(go, "sdBtn/dianzanImage/Text"):GetComponent("Text").text = data.worshipTime dianzanImage:SetActive(data.hadProud) LogError("data.hadProud===" .. tostring(data.hadProud) .. " data.worshipTime==" .. data.worshipTime .. " personInfo.servername==" .. data.personInfo.servername) if data.hadProud then sdBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite("X1_zhanling_pata_bt_03") else sdBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite("X1_zhanling_pata_bt_03") end Util.AddOnceClick(sdBtn, function() if not data.hadProud then JumpServerManager.GetWorldArenaProudRequest(data.personInfo, function(msg) this.RefreshOnOpen() end) end end) Util.AddOnceClick(cliclBtn, function() JumpServerManager.SetCurPersonInfo(nil) local formation = FormationTypeDef.LuoFuZhengFeng1 if JumpServerManager.arenaType ~= 0 and JumpServerManager.stage == 3 then if JumpServerManager.arenaType == 1 then formation = FormationTypeDef.LuoFuZhengFeng1 elseif JumpServerManager.arenaType == 2 then formation = FormationTypeDef.LuoFuZhengFeng2 elseif JumpServerManager.arenaType == 3 then formation = FormationTypeDef.LuoFuZhengFeng3 elseif JumpServerManager.arenaType == 4 then formation = FormationTypeDef.LuoFuZhengFeng4 end else if curPos == 1 then formation = FormationTypeDef.LuoFuZhengFeng1 elseif curPos == 2 then formation = FormationTypeDef.LuoFuZhengFeng2 elseif curPos == 3 then formation = FormationTypeDef.LuoFuZhengFeng3 elseif curPos == 4 then formation = FormationTypeDef.LuoFuZhengFeng4 end end UIManager.OpenPanel(UIName.PlayerInfoPopup, data.personInfo.uid, PLAYER_INFO_VIEW_TYPE.JUPMSERVER, data.personInfo.servername) end) end end function this.LocadPersonInfoLive(go, data, live) -- if liveNodeList[go] then -- poolManager:UnLoadLive(liveNodeList[go].name, liveNodeList[go].go, PoolManager.AssetType.GameObject) -- end -- local npc = roleSex == ROLE_SEX.BOY and "live2d_npc_map_boy" or "live2d_npc_map_nv" -- local scale = roleSex == ROLE_SEX.BOY and Vector3.one * 0.26 or Vector3.one * 0.16 -- local live2d = poolManager:LoadLive(npc, live,scale, Vector3.zero) -- local SkeletonGraphic = live2d:GetComponent("SkeletonGraphic") -- if SkeletonGraphic then -- SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) -- SkeletonGraphic.transform.localEulerAngles = Vector3.New(0, 0, 0) -- end -- liveNodeList[go] = {name=npc, go=live2d} --local boyIconRes = data.sex == ROLE_SEX.BOY and "Dragon Ball- (21)" or "Dragon Ball- (586)1" --local icon = Util.GetGameObject(live, "Image") --icon:GetComponent("Image").sprite = this.spLoader:LoadSprite(boyIconRes) local headFrame = CommonPool.CreateNode(POOL_ITEM_TYPE.PLAYER_HEAD, live) headFrame:Reset() headFrame:SetHead(data.head) headFrame:SetFrame(data.headFrame) headFrame:SetLevel(data.level) headFrame:SetScale(Vector3.one * 1.4) headFrame:SetLayer(this.sortingOrder) headFrame:SetEffectScale(1.6) --[[ if liveNodeList[go] then liveNodeList[go]:OnClose() liveNodeList[go] = nil end local curPlayerLiveViewData = { skin = data.userSkin, sex = data.gender, ride = data.userMount, designation = 0--data.userTitle, } liveNodeList[go] = PlayerLiveView:New(live.transform,2, curPlayerLiveViewData,this.sortingOrder) liveNodeList[go]:SetNameHeight(-2.5) if data.userMount and data.userMount > 0 and data.userMount ~= PlayerRide.YUJIAN then liveNodeList[go]:OnOpen(GetPlayerRoleSingleConFig().Scale6,Vector3.New(0,-118.65,0),WALK_DIR.IDLE_LEFT) else liveNodeList[go]:OnOpen(GetPlayerRoleSingleConFig().Scale6,Vector3.New(0,-118.65,0),WALK_DIR.IDLE_FRONT) end ]] -- liveNodeList[go] = {name=npc, go=live2d} end --刷新倒计时显示 function this.RemainTimeDown(_timeTextExpertgo, _timeTextExpert, timeDown, str) if timeDown - GetTimeStamp() > 0 then if _timeTextExpertgo then _timeTextExpertgo:SetActive(true) end if _timeTextExpert then _timeTextExpert.text = this.TimeStampToDateString(timeDown - GetTimeStamp()) .. str end if this.timer then this.timer:Stop() this.timer = nil end this.timer = Timer.New(function() if _timeTextExpert then -- LogGreen(" 跨服天梯 "..this.TimeStampToDateString(timeDown)..str) _timeTextExpert.text = this.TimeStampToDateString(timeDown - GetTimeStamp()) .. str end if timeDown - GetTimeStamp() < 0 then if _timeTextExpertgo then _timeTextExpertgo:SetActive(false) end this.timer:Stop() this.timer = nil if not isFirstRefresh then Timer.New(function() LogError("跨服天梯前端刷新") JumpServerManager.GetWorldArenaInfoRequest(curPos) isFirstRefresh = true end, 2):Start() end end -- timeDown = timeDown - 1 end, 1, -1, true) this.timer:Start() else if _timeTextExpertgo then _timeTextExpertgo:SetActive(false) end if not isFirstRefresh then Timer.New(function() LogError("跨服天梯前端刷新") JumpServerManager.GetWorldArenaInfoRequest(curPos) isFirstRefresh = true end, 2):Start() end end end function this.TimeStampToDateString(second) local day = math.floor(second / (24 * 3600)) local minute = math.floor(second / 60) % 60 local sec = second % 60 local hour = math.floor(math.floor(second - day * 24 * 3600 - sec - minute * 60) / 3600) if day > 0 then return string.format("%d天%02d时%02d分%02d秒", day, hour, minute, sec) else return string.format("%02d时%02d分%02d秒", hour, minute, sec) end end function this.BuyVipFun(type, warOrSd, fun) if type == 1 then if JumpServerManager.GetCanBattleCount() <= 0 then --今日已无剩余次数! if JumpServerManager.GetCanBuyBattleCount() <= 0 then PopupTipPanel.ShowTip("今日已无挑战次数!") else --是否花费XX妖晶购买1次挑战次数并发起挑战? local costId, finalNum, oriCostNum = ShopManager.calculateBuyCost(SHOP_TYPE.FUNCTION_SHOP, JumpServerManager.shopGoodId, 1) local itemName = ConfigManager.GetConfigData(ConfigName.ItemConfig, costId).Name local tipStr = warOrSd == 1 and "是否花费%s%s购买1次挑战次数并发起挑战?" or "是否花费%s%s购买1次挑战次数并进行扫荡?" MsgPanel.ShowTwo(string.format(tipStr, finalNum, itemName), nil, function() --买东西 if finalNum > BagManager.GetItemCountById(costId) then PopupTipPanel.ShowTip(string.format("%s不足!", itemName)) return end --买东西 ShopManager.RequestBuyShopItem(SHOP_TYPE.FUNCTION_SHOP, JumpServerManager.shopGoodId, 1, function() PrivilegeManager.RefreshPrivilegeUsedTimes(PRIVILEGE_TYPE.JUMPSERVER_GIGHTLADDER_BUYNUM, 1) --更新特权 local tipStr2 = warOrSd == 1 and "挑战成功!" or "扫荡成功!" if warOrSd == 2 then PopupTipPanel.ShowTip(tipStr2) end if fun then fun() end end) end) end else if warOrSd == 1 then if fun then fun() end else MsgPanel.ShowTwo("扫荡后可直接获得挑战奖励并保持当前排名,确定消耗一次挑战次数进行扫荡?", nil, function() if fun then fun() end end) end end elseif type == 2 then if JumpServerManager.GetCanBuyBattleCount() <= 0 then PopupTipPanel.ShowTip("今日已无购买剩余次数!") else local costId, finalNum, oriCostNum = ShopManager.calculateBuyCost(SHOP_TYPE.FUNCTION_SHOP, JumpServerManager.shopGoodId, 1) local itemName = ConfigManager.GetConfigData(ConfigName.ItemConfig, costId).Name local tipStr = "是否花费%s%s购买1次挑战次数?" MsgPanel.ShowTwo(string.format(tipStr, finalNum, itemName), nil, function() --买东西 if finalNum > BagManager.GetItemCountById(costId) then PopupTipPanel.ShowTip(string.format(Language[11652], itemName)) return end ShopManager.RequestBuyShopItem(SHOP_TYPE.FUNCTION_SHOP, JumpServerManager.shopGoodId, 1, function() PrivilegeManager.RefreshPrivilegeUsedTimes(PRIVILEGE_TYPE.JUMPSERVER_GIGHTLADDER_BUYNUM, 1) --更新特权 this.RefreshBuyNum() end) end) end end end --界面关闭时调用(用于子类重写) function JumpServerHightLadderPanel:OnClose() if this.timer then this.timer:Stop() this.timer = nil end end --界面销毁时调用(用于子类重写) function JumpServerHightLadderPanel:OnDestroy() for key, value in pairs(liveNodeList) do -- poolManager:UnLoadLive(value.name, value.go, PoolManager.AssetType.GameObject) -- liveNodeList = {} value:OnClose() end this.spLoader:Destroy() end return JumpServerHightLadderPanel