miduo_client/Assets/ManagedResources/~Lua/Modules/LingMaiMiJing/LingMaiMiJingPanel.lua

295 lines
12 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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] = "天级",
}
local effectName = {
[6] = "ui-tianmen-huang",
[5] = "ui-tianmen-zi",
[4] = "ui-tianmen-lan",
[3] = "ui-tianmen-lv",
}
--初始化组件(用于子类重写)
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")
Util.GetGameObject(self.jump,"Time"):SetActive(false)
Util.GetGameObject(self.jump,"Time2"):SetActive(false)
self.inputField = Util.GetGameObject(self.jump, "Input/Text"):GetComponent("Text")
--rightBtns
self.rightBtns = Util.GetGameObject(self.gameObject,"rightBtns")
self.sortBtn = Util.GetGameObject(self.rightBtns,"sortBtn")
self.sortBtn:SetActive(false)
self.rewardBtn = Util.GetGameObject(self.rightBtns,"rewardBtn")
self.rewardBtn:SetActive(false)
self.recordBtn = Util.GetGameObject(self.rightBtns,"recordBtn")
self.recordRed = Util.GetGameObject(self.recordBtn,"red")
self.storeBtn = Util.GetGameObject(self.rightBtns,"storeBtn")
self.storeBtn:SetActive(false)
--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()
RankingManager.InitData(RANK_TYPE.LINGMAIMIJING_RANK, function(msg)
local data,myData=RankingManager.GetRankingInfo()
UIManager.OpenPanel(UIName.GeneralRankRewardPanel,5,myData.rank)--需要活动id和我的排名
end)
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)
Util.AddClick(self.storeBtn,function()
JumpManager.GoJump(40044)
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.LingMai})
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 <= 100)
self.inputField.text = string.format("第%s页",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)
local Obj = Util.GetGameObject(item,"GameObject")
Util.GetGameObject(Obj,"icon"):GetComponent("Image").sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(data.RewardList[j][1]))
Util.GetGameObject(Obj,"Text"):GetComponent("Text").text = string.format( "%s/分",data.RewardList[j][2])
ForceRebuildLayout(Obj.transform)
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("<color=red>宝岛未开启!</color>")
end
end)
for i = 3, 6 do
Util.GetGameObject(go,effectName[i]):SetActive(false)
end
local effect1 = Util.GetGameObject(go,effectName[data.Quality])
Util.SetParticleSortLayer(effect1, self.sortingOrder + 1)
effect1:SetActive(data.uid == PlayerManager.uid)
local effect2 = Util.GetGameObject(go,"title/saoguang-lingmai")
Util.SetParticleSortLayer(effect2, self.sortingOrder + 1)
effect2:SetActive(data.Quality == 6)
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
local allStayTime=tonumber(ConfigManager.GetConfigData(ConfigName.SpecialConfig,158).Value)
--我已占领了多久
self.mytime.text = string.format("%s/%s分",math.floor(timeStayAtHere/60),allStayTime/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("",TimeToHMS(time))
self.leftTime.text = TimeToHMS(time)
self.timer = Timer.New(function ()
time = time - 1
timeStayAtHere = timeStayAtHere + 1
self.leftTime.text =TimeToHMS(time)
self.mytime.text = string.format("%s/%s分",math.floor(timeStayAtHere/60),allStayTime/60)
self.recordRed:SetActive(LingMaiMiJingManager.CheckRecord())
if time <= 0 or (self.data.startTime>0 and timeStayAtHere>allStayTime) then
self:OnShow()
self.data.startTime=0
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