require("Base/BasePanel") local LingMaiMiJingPanel = Inherit(BasePanel) local lodeConfig = ConfigManager.GetConfig(ConfigName.LodeConfig) local TEXTLIST = { [1] = "距抢夺期结束:%s", [2] = "距灵脉秘境开启:%s", [3] = "距灵脉秘境关闭:%s", } local veinName = { [3] = "l_lmmj_huangjilingmai", [4] = "l_lmmj_xuanjilingmai", [5] = "l_lmmj_dijilingmai", [6] = "l_lmmj_tianjilingmai", } local fakeName = { [3] = "黄级", [4] = "玄级", [5] = "地级", [6] = "天级", } --初始化组件(用于子类重写) function LingMaiMiJingPanel:InitComponent() self.spLoader = SpriteLoader.New() -- 屏幕适配修改 self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform) self.backBtn = Util.GetGameObject(self.gameObject,"backBtn") self.helpBtn = Util.GetGameObject(self.gameObject,"HelpBtn") self.helpPosition=self.helpBtn:GetComponent("RectTransform").localPosition --top self.topBar = Util.GetGameObject(self.gameObject,"topBar") self.leftTime = Util.GetGameObject(self.topBar,"Text"):GetComponent("Text") --bottom self.bottom = Util.GetGameObject(self.gameObject,"bottomBar") self.time = Util.GetGameObject(self.bottom,"time") self.TextTip = Util.GetGameObject(self.bottom,"Text") self.mytime = Util.GetGameObject(self.bottom,"time/Text"):GetComponent("Text") self.rewardGrid = Util.GetGameObject(self.bottom,"grid") self.rewardPre = Util.GetGameObject(self.rewardGrid,"rewardPre") self.rewardList = {} self.jump = Util.GetGameObject(self.bottom,"Jump") self.jumpBtn = Util.GetGameObject(self.jump,"btnJump") self.battleTime = Util.GetGameObject(self.jump,"Time/Text"):GetComponent("Text") self.buyTime = Util.GetGameObject(self.jump,"Time2/Text"):GetComponent("Text") self.inputField = Util.GetGameObject(self.jump, "Input/InputField"):GetComponent("InputField") --rightBtns self.rightBtns = Util.GetGameObject(self.gameObject,"rightBtns") self.sortBtn = Util.GetGameObject(self.rightBtns,"sortBtn") self.rewardBtn = Util.GetGameObject(self.rightBtns,"rewardBtn") self.recordBtn = Util.GetGameObject(self.rightBtns,"recordBtn") self.recordRed = Util.GetGameObject(self.recordBtn,"red") --contentgrid self.contentGrid = Util.GetGameObject(self.gameObject,"ContentGrid") self.veinList = {} self.itemList = {} for i = 1, 5 do self.veinList[i] = Util.GetGameObject(self.contentGrid,"VeinPre ("..i..")") end --左右切换按钮 self.lastBtn = Util.GetGameObject(self.gameObject,"lastBtn") self.nextBtn = Util.GetGameObject(self.gameObject,"nextBtn") end --绑定事件(用于子类重写) function LingMaiMiJingPanel:BindEvent() Util.AddClick(self.backBtn,function() LingMaiMiJingManager.curPage = 0 self:ClosePanel() end) Util.AddOnceClick(self.helpBtn, function() UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.LingMaiMiJing,self.helpPosition.x,self.helpPosition.y) end) Util.AddOnceClick(self.recordBtn, function() LingMaiMiJingManager.OpenRecord() end) Util.AddOnceClick(self.rewardBtn, function() NetManager.RequestRankInfo(RANK_TYPE.LINGMAIMIJING_RANK, function (msg)--请求数据 LogYellow("我的排名:"..tostring(msg.myRankInfo.rank)) UIManager.OpenPanel(UIName.GeneralRankRewardPanel,5,msg.myRankInfo.rank)--需要活动id,和我的排名 end,0,1,0) end) Util.AddOnceClick(self.sortBtn, function() UIManager.OpenPanel(UIName.RankingSingleListPanel,rankKingList[33]) end) Util.AddClick(self.lastBtn,function() LingMaiMiJingManager.curPage = LingMaiMiJingManager.curPage - 1 self:OnShow() end) Util.AddClick(self.nextBtn,function() LingMaiMiJingManager.curPage = LingMaiMiJingManager.curPage + 1 self:OnShow() end) Util.AddClick(self.jumpBtn,function() UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.LingMaiJump,#self.groupList/5) end) end --添加事件监听(用于子类重写) function LingMaiMiJingPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.LingMaiMiJing.RefreshPanel, self.OnShow,self) Game.GlobalEvent:AddEvent(GameEvent.LingMaiMiJing.ClosePanel, self.OnClose,self) end --移除事件监听(用于子类重写) function LingMaiMiJingPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.LingMaiMiJing.RefreshPanel, self.OnShow,self) Game.GlobalEvent:RemoveEvent(GameEvent.LingMaiMiJing.ClosePanel, self.OnClose,self) end --跨服 function LingMaiMiJingPanel:OnOpen() self.UpView:OnOpen({showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main}) if LingMaiMiJingManager.state == 2 then LingMaiMiJingManager.curPage = 1 end end --界面打开时调用(用于子类重写) function LingMaiMiJingPanel:OnShow() NetManager.GetLingMaiInfoRequest(LingMaiMiJingManager.curPage,function () if LingMaiMiJingManager.state == 0 then self:ClosePanel() return end self.data = LingMaiMiJingManager.GetData() self:SetTime() self:SetMydata() self:SetVeins() self.groupList = ConfigManager.TryGetAllConfigsDataByKey(ConfigName.LodeConfig,"Group",lodeConfig[self.data.lingmaiData[1].Id].Group) self.lastBtn:SetActive(LingMaiMiJingManager.curPage - 1 > 0) self.nextBtn:SetActive(LingMaiMiJingManager.curPage + 1 <= 50) self.inputField.text = LingMaiMiJingManager.curPage end) end function LingMaiMiJingPanel:SetMydata() if self.data.myPlaceId > 0 then self.time:SetActive(true) self.TextTip:SetActive(false) self.rewardGrid:SetActive(true) local configData = lodeConfig[self.data.myPlaceId] for i = 1, #self.rewardList do self.rewardList[i]:SetActive(false) end for j = 1, #configData.RewardList do local item = self.rewardList[j] if not item then item = newObjToParent(self.rewardPre,self.rewardGrid.transform) self.rewardList[j] = item end item:SetActive(true) Util.GetGameObject(item,"icon"):GetComponent("Image").sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(configData.RewardList[j][1])) Util.GetGameObject(item,"Text"):GetComponent("Text").text = string.format( "%s/分",configData.RewardList[j][2]) end else self.time:SetActive(false) self.TextTip:SetActive(true) self.rewardGrid:SetActive(false) end if self.data.state ~= 1 then self.time:SetActive(false) self.TextTip:SetActive(false) self.rewardGrid:SetActive(false) end self.buyTime.text = string.format("剩余购买次数:%s",PrivilegeManager.GetPrivilegeRemainValue(2031)) self.battleTime.text = string.format("剩余挑战次数:%s",PrivilegeManager.GetPrivilegeRemainValue(2030)) ForceRebuildLayout(self.bottom.transform) end function LingMaiMiJingPanel:SetVeins() for i = 1, 5 do local go = self.veinList[i] local data = self.data.lingmaiData[i] local num = Util.GetGameObject(go,"title/Num"):GetComponent("Text") local nameImg = Util.GetGameObject(go,"title/NameImg"):GetComponent("Image") local obtain = Util.GetGameObject(go,"obtain") local obtainImg = Util.GetGameObject(go,"obtain"):GetComponent("Image") local name = Util.GetGameObject(go,"obtain/name"):GetComponent("Text") local server = Util.GetGameObject(go,"obtain/server"):GetComponent("Text") local grid = Util.GetGameObject(go,"obtain/grid") local rewardPre = Util.GetGameObject(grid,"rewardPre") rewardPre:SetActive(false) obtain:SetActive(LingMaiMiJingManager.state == 1) local img = data.uid == PlayerManager.uid and "l_lmmj_lingmaixinxidi01" or "l_lmmj_lingmaixinxidi" obtainImg.sprite = self.spLoader:LoadSprite(img) nameImg.sprite = self.spLoader:LoadSprite(veinName[data.Quality]) num.text = data.No server.text = data.servername == "" and fakeName[data.Quality] or data.servername name.text = data.name if not self.itemList[i] then self.itemList[i] = {} end for k = 1, #self.itemList[i] do self.itemList[i][k]:SetActive(false) end for j = 1, #data.RewardList do local item = self.itemList[i][j] if not item then item = newObjToParent(rewardPre,grid.transform) self.itemList[i][j] = item end item:SetActive(true) Util.GetGameObject(item,"icon"):GetComponent("Image").sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(data.RewardList[j][1])) Util.GetGameObject(item,"Text"):GetComponent("Text").text = string.format( "%s/分",data.RewardList[j][2]) end Util.AddOnceClick(go,function () if LingMaiMiJingManager.state == 1 then UIManager.OpenPanel(UIName.PlayerInfoPopup, data.uid,PLAYER_INFO_VIEW_TYPE.LINGMAIMIJING,data.serverName and data.serverName or nil,data) else PopupTipPanel.ShowTip("灵脉秘境未开启!") end end) end end function LingMaiMiJingPanel:SetTime() if self.timer then self.timer:Stop() self.timer = nil end local time = self.data.endTime - GetTimeStamp() local timeStayAtHere = GetTimeStamp() - self.data.startTime --我已占领了多久 self.mytime.text = string.format("%s分",math.floor( timeStayAtHere/60 )) --判断上方时间显示文字 local text = TEXTLIST[self.data.state] if self.data.state == 2 and CalculateSecondsNowTo_N_OClock(24) <= 10800 then text = TEXTLIST[3] else end self.leftTime.text = string.format(text,TimeToHMS(time)) self.timer = Timer.New(function () time = time - 1 timeStayAtHere = timeStayAtHere + 1 self.leftTime.text = string.format(text,TimeToHMS(time)) self.mytime.text = string.format("%s分",math.floor( timeStayAtHere/60 )) self.recordRed:SetActive(LingMaiMiJingManager.CheckRecord()) if time <= 0 then self:OnShow() end end, 1, -1, true) self.timer:Start() end --界面关闭时调用(用于子类重写) function LingMaiMiJingPanel:OnClose() if self.timer then self.timer:Stop() self.timer = nil end end --界面销毁时调用(用于子类重写) function LingMaiMiJingPanel:OnDestroy() self.spLoader:Destroy() self.veinList = {} self.rewardList = {} self.itemList = {} end return LingMaiMiJingPanel