miduo_client/Assets/ManagedResources/~Lua/Modules/Ranking/RankingListMainPanel.lua

253 lines
11 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")
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