253 lines
11 KiB
Lua
253 lines
11 KiB
Lua
require("Base/BasePanel")
|
||
RankingListMainPanel = Inherit(BasePanel)
|
||
local this = RankingListMainPanel
|
||
local curIndex = 1
|
||
local rankKingListGo = {}
|
||
local TabBox = require("Modules/Common/TabBox")
|
||
local _TabData={ [1] = { default = "UI_hz_gonghui_19", select = "UI_hz_gonghui_18",lock = "r_hero_xuanze_002", name = Language[11673] },
|
||
[2] = { default = "UI_hz_gonghui_19", select = "UI_hz_gonghui_18",lock = "r_hero_xuanze_002", name = Language[11674] },
|
||
}
|
||
local _TabFontColor = { default = Color.New(255 / 255, 255 / 255, 255 / 255, 1),
|
||
select = Color.New(255 / 255, 255 / 255, 255 / 255, 1),
|
||
lock = Color.New(130 / 255, 128 / 255, 120 / 255, 1),
|
||
}
|
||
local _TabRedpot = {}
|
||
local ranks = {}
|
||
local proud = {}
|
||
this.playerScrollHead = {}--排行第一头像
|
||
--初始化组件(用于子类重写)
|
||
function RankingListMainPanel:InitComponent()
|
||
this.spLoader = SpriteLoader.New()
|
||
this.tabBox = Util.GetGameObject(self.gameObject, "TabBox")
|
||
this.TabCtrl = TabBox.New()
|
||
this.BackBtn = Util.GetGameObject(self.gameObject, "bg/btnBack")
|
||
this.mask = Util.GetGameObject(self.gameObject, "mask")
|
||
this.ItemPre = Util.GetGameObject(self.gameObject, "bg/panel/ItemPre")
|
||
this.grid = Util.GetGameObject(self.gameObject, "bg/panel/ScrollParentView/grid")
|
||
end
|
||
|
||
--绑定事件(用于子类重写)
|
||
function RankingListMainPanel:BindEvent()
|
||
Util.AddClick(this.BackBtn, function()
|
||
self:ClosePanel()
|
||
end)
|
||
Util.AddClick(this.mask, function()
|
||
self:ClosePanel()
|
||
end)
|
||
end
|
||
|
||
--添加事件监听(用于子类重写)
|
||
function RankingListMainPanel:AddListener()
|
||
end
|
||
|
||
--移除事件监听(用于子类重写)
|
||
function RankingListMainPanel:RemoveListener()
|
||
end
|
||
|
||
--界面打开时调用(用于子类重写)
|
||
function RankingListMainPanel:OnOpen(msg)
|
||
ranks = msg.ranks
|
||
curIndex = 1
|
||
-- LogYellow("#msg.ranks "..#msg.ranks.." "..#msg.proud)
|
||
for i = 1, #msg.ranks do
|
||
-- LogYellow("msg.ranks "..msg.ranks[i].uid)
|
||
-- LogYellow("msg.proud "..msg.proud[i])
|
||
end
|
||
end
|
||
|
||
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
|
||
function RankingListMainPanel:OnShow()
|
||
this.TabCtrl:SetTabAdapter(this.TabAdapter)
|
||
this.TabCtrl:SetChangeTabCallBack(this.SwitchView)
|
||
this.TabCtrl:SetTabIsLockCheck(this.PageTabIsLockCheck)
|
||
this.TabCtrl:Init(this.tabBox, _TabData, curIndex)
|
||
end
|
||
-- tab节点显示自定义
|
||
function this.TabAdapter(tab, index, status)
|
||
local tabLab = Util.GetGameObject(tab, "Text")
|
||
Util.GetGameObject(tab,"Image"):GetComponent("Image").sprite = this.spLoader:LoadSprite(_TabData[index][status])
|
||
Util.GetGameObject(tab,"Image"):GetComponent("Image"):SetNativeSize()
|
||
tabLab:GetComponent("Text").text = GetCurLanguage() ~= 2 and _TabData[index].name or "<size=40>".._TabData[index].name.."</size>"
|
||
tabLab:GetComponent("Text").color = _TabFontColor[status]
|
||
Util.GetGameObject(tab, "LockImage"):SetActive(status == "lock" )
|
||
-- 刷新红点显示
|
||
_TabRedpot[index] = Util.GetGameObject(tab, "Redpot")
|
||
this.RefreshTabRedpot(index)
|
||
if status=="lock" then
|
||
tab:SetActive(false)
|
||
end
|
||
end
|
||
-- tab可用性检测
|
||
function this.PageTabIsLockCheck(index)
|
||
if index == 2 then
|
||
-- 开服前七天, 未跨服都不打开跨服排行榜
|
||
if not CheckFunctionOpen(FUNCTION_OPEN_TYPE.CROSS_RANK) or PlayerManager.isCross == 0 then
|
||
return true, "未划分跨服分组!"
|
||
end
|
||
else
|
||
return false
|
||
end
|
||
end
|
||
|
||
function this.RefreshTabRedpot(index)
|
||
if _TabRedpot[index] then
|
||
if index == 1 then
|
||
_TabRedpot[index]:SetActive(RankingManager.RefreshRedPoint1())
|
||
else
|
||
_TabRedpot[index]:SetActive(RankingManager.RefreshRedPoint2())
|
||
end
|
||
end
|
||
end
|
||
|
||
--切换视图
|
||
function this.SwitchView(index)
|
||
curIndex = index
|
||
proud = RankingManager.GetRankProud()
|
||
--先执行上一面板关闭逻辑
|
||
local currankKingList = {}
|
||
local _GoIndex = #rankKingListGo + 1
|
||
for i = 1, math.max(#rankKingListGo, #rankKingList) do
|
||
if rankKingList[i] and curIndex == rankKingList[i].isRankingMainPanelShow then
|
||
local go = rankKingListGo[_GoIndex]
|
||
if not go then
|
||
go=newObject(this.ItemPre)
|
||
go.transform:SetParent(this.grid.transform)
|
||
go.transform.localScale = Vector3.one
|
||
go.transform.localPosition=Vector3.zero;
|
||
--LogPink("i "..i)
|
||
rankKingListGo[_GoIndex] = go
|
||
_GoIndex = _GoIndex + 1
|
||
end
|
||
go.gameObject:SetActive(false)
|
||
table.insert(currankKingList, rankKingList[i])
|
||
end
|
||
end
|
||
for i = 1, #rankKingList do
|
||
if curIndex == rankKingList[i].isRankingMainPanelShow then
|
||
for j = 1, #currankKingList do
|
||
if currankKingList[j].rankType == rankKingList[i].rankType then
|
||
--LogYellow("j "..j)
|
||
rankKingListGo[j]:SetActive(true)
|
||
this.SingleRankKingListShow(j,i)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
function this.SingleRankKingListShow(indexm,id)
|
||
local go = rankKingListGo[indexm]
|
||
local sData = rankKingList[id]
|
||
local dData = ranks[sData.RankingListMainSortId]
|
||
local proud = proud[sData.rankType]
|
||
Util.GetGameObject(go,"BG"):GetComponent("Image").sprite = this.spLoader:LoadSprite(sData.bgImage)
|
||
Util.GetGameObject(go,"BG/showBg"):GetComponent("Image").sprite = this.spLoader:LoadSprite(sData.showBg)
|
||
Util.GetGameObject(go,"heor"):SetActive(dData.uid ~= 0 )
|
||
|
||
if dData.uid ~= 0 then
|
||
this.SetInfoShow(Util.GetGameObject(go,"heor/infoGo"),dData,sData.rankType,Util.GetGameObject(go,"heor/nameText"))
|
||
--头像
|
||
local headObj=Util.GetGameObject(go,"heor/Head")
|
||
if not this.playerScrollHead[go] then
|
||
this.playerScrollHead[go]=CommonPool.CreateNode(POOL_ITEM_TYPE.PLAYER_HEAD,headObj)
|
||
end
|
||
this.playerScrollHead[go]:Reset()
|
||
this.playerScrollHead[go]:SetHead(dData.head)
|
||
this.playerScrollHead[go]:SetFrame(dData.headFrame)
|
||
this.playerScrollHead[go]:SetLevel(dData.level)
|
||
this.playerScrollHead[go]:SetScale(Vector3.one*0.6)
|
||
this.playerScrollHead[go]:SetLayer(this.sortingOrder)
|
||
this.playerScrollHead[go]:SetEffectScale(0.7)
|
||
end
|
||
--膜拜
|
||
local clickBtn = Util.GetGameObject(go,"clickBtn")
|
||
local getRewardBtn = Util.GetGameObject(go,"getRewardBtn")
|
||
local getRewardBtnText = Util.GetGameObject(go,"getRewardBtn/Text"):GetComponent("Text")
|
||
Util.GetGameObject(go,"BG/rankName"):GetComponent("Text").text=sData.name
|
||
getRewardBtn:SetActive(dData.uid ~= 0 )
|
||
Util.AddOnceClick(clickBtn, function()
|
||
UIManager.OpenPanel(UIName.RankingSingleListPanel,sData)
|
||
end)
|
||
getRewardBtnText.fontSize = GetCurLanguage() ~= 2 and 50 or 40--根据语言设置大小
|
||
if proud == 0 then--没有膜拜过
|
||
getRewardBtn:GetComponent("Button").enabled = true
|
||
Util.GetGameObject(go,"getRewardBtn/redPoint"):SetActive(true)
|
||
getRewardBtnText.text = Language[11120]
|
||
Util.AddOnceClick(getRewardBtn, function()
|
||
NetManager.RankProudRequest(sData.rankType,function ()
|
||
RankingManager.SetSingleRankProud(sData.rankType,1)
|
||
local spFata = ConfigManager.GetConfigData(ConfigName.SpecialConfig,50)
|
||
local itemData = string.split(spFata.Value, "#")
|
||
PopupTipPanel.ShowTip(Language[11676]..GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.ItemConfig,tonumber(itemData[1])).Name).."×"..itemData[2].."!")
|
||
this.SwitchView(curIndex)
|
||
CheckRedPointStatus(RedPointType.RankingSort)
|
||
-- 刷新红点显示
|
||
this.RefreshTabRedpot(curIndex)
|
||
end)
|
||
end)
|
||
else
|
||
getRewardBtn:GetComponent("Button").enabled = false
|
||
getRewardBtnText.text = Language[11677]
|
||
Util.GetGameObject(go,"getRewardBtn/redPoint"):SetActive(false)
|
||
end
|
||
Util.SetGray(getRewardBtn,proud ~= 0)
|
||
end
|
||
--界面关闭时调用(用于子类重写)
|
||
function RankingListMainPanel:OnClose()
|
||
CheckRedPointStatus(RedPointType.RankingSort)
|
||
end
|
||
|
||
--界面销毁时调用(用于子类重写)
|
||
function RankingListMainPanel:OnDestroy()
|
||
this.spLoader:Destroy()
|
||
for _, playerHead in ipairs(this.playerScrollHead) do
|
||
playerHead:Recycle()
|
||
end
|
||
this.playerScrollHead = {}
|
||
rankKingListGo = {}
|
||
end
|
||
function this.SetInfoShow(go,data,rankType,nameText)
|
||
local fight = Util.GetGameObject(go,"fight")
|
||
local warPower = Util.GetGameObject(go,"warPower")
|
||
local trial = Util.GetGameObject(go,"trial")
|
||
local FightLeveStar = Util.GetGameObject(go,"FightLeveStar")
|
||
fight:SetActive(false)
|
||
warPower:SetActive(false)
|
||
trial:SetActive(false)
|
||
FightLeveStar:SetActive(false)
|
||
if rankType == RANK_TYPE.FIGHT_LEVEL_RANK then
|
||
fight:SetActive(true)
|
||
if nameText then
|
||
nameText:GetComponent("Text").text = data.userName
|
||
end
|
||
--Util.GetGameObject(go,"fight"):GetComponent("Text").text = GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.MainLevelConfig,data.rankInfo.param1).Name)
|
||
elseif rankType == RANK_TYPE.FORCE_CURR_RANK or rankType == RANK_TYPE.JUMPSERVER_FORCE_CURR_RANK then
|
||
warPower:SetActive(true)
|
||
if nameText then
|
||
nameText:GetComponent("Text").text = data.userName
|
||
end
|
||
Util.GetGameObject(go,"warPower/Text"):GetComponent("Text").text = data.rankInfo.param1--data.force
|
||
elseif rankType == RANK_TYPE.GUILD_FORCE_RANK or rankType == RANK_TYPE.JUMPSERVER_GUILD_FORCE_RANK then
|
||
warPower:SetActive(true)
|
||
if nameText then
|
||
nameText:GetComponent("Text").text = data.guildName
|
||
end
|
||
Util.GetGameObject(go,"warPower/Text"):GetComponent("Text").text = data.rankInfo.param1
|
||
elseif rankType == RANK_TYPE.MONSTER_RANK or rankType == RANK_TYPE.JUMPSERVER_MONSTER_RANK then
|
||
trial:SetActive(true)
|
||
if nameText then
|
||
nameText:GetComponent("Text").text = data.userName
|
||
end
|
||
Util.GetGameObject(go,"trial"):GetComponent("Text").text = GetLanguageStrById(Language[11689])..data.rankInfo.param1
|
||
elseif rankType == RANK_TYPE.FIGHTLEVEL_STAR or rankType == RANK_TYPE.JUMPSERVER_FIGHTLEVEL_STAR then--山河社稷图星星
|
||
FightLeveStar:SetActive(true)
|
||
if nameText then
|
||
nameText:GetComponent("Text").text = data.userName
|
||
end
|
||
Util.GetGameObject(FightLeveStar,"Text"):GetComponent("Text").text = data.rankInfo.param1
|
||
end
|
||
end
|
||
|
||
|
||
return RankingListMainPanel
|
||
|