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

253 lines
11 KiB
Lua
Raw Normal View History

2021-04-21 13:12:04 +08:00
require("Base/BasePanel")
2020-06-08 13:57:30 +08:00
RankingListMainPanel = Inherit(BasePanel)
local this = RankingListMainPanel
local curIndex = 1
local rankKingListGo = {}
local TabBox = require("Modules/Common/TabBox")
2023-10-13 11:24:19 +08:00
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] },
2020-06-08 13:57:30 +08:00
}
2023-10-13 11:24:19 +08:00
local _TabFontColor = { default = Color.New(255 / 255, 255 / 255, 255 / 255, 1),
select = Color.New(255 / 255, 255 / 255, 255 / 255, 1),
2020-06-08 13:57:30 +08:00
lock = Color.New(130 / 255, 128 / 255, 120 / 255, 1),
}
local _TabRedpot = {}
2020-06-08 13:57:30 +08:00
local ranks = {}
local proud = {}
this.playerScrollHead = {}--排行第一头像
--初始化组件(用于子类重写)
function RankingListMainPanel:InitComponent()
2021-04-21 13:12:04 +08:00
this.spLoader = SpriteLoader.New()
2020-06-08 13:57:30 +08:00
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")
2020-06-08 13:57:30 +08:00
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)
2020-06-08 13:57:30 +08:00
end
--添加事件监听(用于子类重写)
function RankingListMainPanel:AddListener()
end
--移除事件监听(用于子类重写)
function RankingListMainPanel:RemoveListener()
end
--界面打开时调用(用于子类重写)
function RankingListMainPanel:OnOpen(msg)
ranks = msg.ranks
2021-07-29 16:35:58 +08:00
curIndex = 1
2021-09-27 17:46:40 +08:00
-- LogYellow("#msg.ranks "..#msg.ranks.." "..#msg.proud)
2021-07-29 16:35:58 +08:00
for i = 1, #msg.ranks do
2021-09-27 17:46:40 +08:00
-- LogYellow("msg.ranks "..msg.ranks[i].uid)
-- LogYellow("msg.proud "..msg.proud[i])
2021-07-29 16:35:58 +08:00
end
2020-06-08 13:57:30 +08:00
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")
2021-04-21 13:12:04 +08:00
Util.GetGameObject(tab,"Image"):GetComponent("Image").sprite = this.spLoader:LoadSprite(_TabData[index][status])
2023-10-13 11:24:19 +08:00
Util.GetGameObject(tab,"Image"):GetComponent("Image"):SetNativeSize()
2021-02-23 20:13:59 +08:00
tabLab:GetComponent("Text").text = GetCurLanguage() ~= 2 and _TabData[index].name or "<size=40>".._TabData[index].name.."</size>"
2020-06-08 13:57:30 +08:00
tabLab:GetComponent("Text").color = _TabFontColor[status]
Util.GetGameObject(tab, "LockImage"):SetActive(status == "lock" )
-- 刷新红点显示
_TabRedpot[index] = Util.GetGameObject(tab, "Redpot")
this.RefreshTabRedpot(index)
2022-04-26 17:48:46 +08:00
if status=="lock" then
tab:SetActive(false)
end
end
-- tab可用性检测
2020-06-08 13:57:30 +08:00
function this.PageTabIsLockCheck(index)
if index == 2 then
-- 开服前七天, 未跨服都不打开跨服排行榜
2022-04-25 17:57:31 +08:00
if not CheckFunctionOpen(FUNCTION_OPEN_TYPE.CROSS_RANK) or PlayerManager.isCross == 0 then
2021-07-29 16:35:58 +08:00
return true, "未划分跨服分组!"
end
2020-06-08 13:57:30 +08:00
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
2020-06-08 13:57:30 +08:00
--切换视图
function this.SwitchView(index)
curIndex = index
proud = RankingManager.GetRankProud()
--先执行上一面板关闭逻辑
2021-07-29 16:35:58 +08:00
local currankKingList = {}
2021-09-09 14:05:44 +08:00
local _GoIndex = #rankKingListGo + 1
2020-06-08 13:57:30 +08:00
for i = 1, math.max(#rankKingListGo, #rankKingList) do
2021-09-27 17:46:40 +08:00
if rankKingList[i] and curIndex == rankKingList[i].isRankingMainPanelShow then
2021-09-09 14:05:44 +08:00
local go = rankKingListGo[_GoIndex]
2020-06-18 20:39:29 +08:00
if not go then
go=newObject(this.ItemPre)
go.transform:SetParent(this.grid.transform)
go.transform.localScale = Vector3.one
go.transform.localPosition=Vector3.zero;
2021-09-09 14:05:44 +08:00
--LogPink("i "..i)
rankKingListGo[_GoIndex] = go
_GoIndex = _GoIndex + 1
2020-06-18 20:39:29 +08:00
end
go.gameObject:SetActive(false)
2021-07-29 16:35:58 +08:00
table.insert(currankKingList, rankKingList[i])
2020-06-08 13:57:30 +08:00
end
end
for i = 1, #rankKingList do
2021-07-29 16:35:58 +08:00
if curIndex == rankKingList[i].isRankingMainPanelShow then
for j = 1, #currankKingList do
if currankKingList[j].rankType == rankKingList[i].rankType then
2021-09-09 14:05:44 +08:00
--LogYellow("j "..j)
2021-07-29 16:35:58 +08:00
rankKingListGo[j]:SetActive(true)
this.SingleRankKingListShow(j,i)
end
end
2020-06-18 20:39:29 +08:00
end
2020-06-08 13:57:30 +08:00
end
end
2021-07-29 16:35:58 +08:00
function this.SingleRankKingListShow(indexm,id)
local go = rankKingListGo[indexm]
local sData = rankKingList[id]
local dData = ranks[sData.RankingListMainSortId]
2020-06-08 13:57:30 +08:00
local proud = proud[sData.rankType]
2021-04-21 13:12:04 +08:00
Util.GetGameObject(go,"BG"):GetComponent("Image").sprite = this.spLoader:LoadSprite(sData.bgImage)
2023-10-13 11:24:19 +08:00
Util.GetGameObject(go,"BG/showBg"):GetComponent("Image").sprite = this.spLoader:LoadSprite(sData.showBg)
2020-06-08 13:57:30 +08:00
Util.GetGameObject(go,"heor"):SetActive(dData.uid ~= 0 )
2023-10-13 11:24:19 +08:00
2020-06-08 13:57:30 +08:00
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)
2020-09-25 21:19:01 +08:00
this.playerScrollHead[go]:SetLayer(this.sortingOrder)
this.playerScrollHead[go]:SetEffectScale(0.7)
2020-06-08 13:57:30 +08:00
end
--膜拜
local clickBtn = Util.GetGameObject(go,"clickBtn")
local getRewardBtn = Util.GetGameObject(go,"getRewardBtn")
local getRewardBtnText = Util.GetGameObject(go,"getRewardBtn/Text"):GetComponent("Text")
2023-10-13 11:24:19 +08:00
Util.GetGameObject(go,"BG/rankName"):GetComponent("Text").text=sData.name
2020-06-08 13:57:30 +08:00
getRewardBtn:SetActive(dData.uid ~= 0 )
Util.AddOnceClick(clickBtn, function()
UIManager.OpenPanel(UIName.RankingSingleListPanel,sData)
end)
2021-02-23 20:13:59 +08:00
getRewardBtnText.fontSize = GetCurLanguage() ~= 2 and 50 or 40--根据语言设置大小
2020-06-08 13:57:30 +08:00
if proud == 0 then--没有膜拜过
getRewardBtn:GetComponent("Button").enabled = true
2020-06-30 18:59:44 +08:00
Util.GetGameObject(go,"getRewardBtn/redPoint"):SetActive(true)
2021-03-02 16:53:12 +08:00
getRewardBtnText.text = Language[11120]
2020-06-08 13:57:30 +08:00
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, "#")
2021-03-02 16:53:12 +08:00
PopupTipPanel.ShowTip(Language[11676]..GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.ItemConfig,tonumber(itemData[1])).Name).."×"..itemData[2].."")
2020-06-08 13:57:30 +08:00
this.SwitchView(curIndex)
2020-06-30 18:59:44 +08:00
CheckRedPointStatus(RedPointType.RankingSort)
-- 刷新红点显示
this.RefreshTabRedpot(curIndex)
2020-06-08 13:57:30 +08:00
end)
end)
else
getRewardBtn:GetComponent("Button").enabled = false
2021-03-02 16:53:12 +08:00
getRewardBtnText.text = Language[11677]
2020-06-30 18:59:44 +08:00
Util.GetGameObject(go,"getRewardBtn/redPoint"):SetActive(false)
2020-06-08 13:57:30 +08:00
end
2021-07-29 17:11:10 +08:00
Util.SetGray(getRewardBtn,proud ~= 0)
2020-06-08 13:57:30 +08:00
end
--界面关闭时调用(用于子类重写)
function RankingListMainPanel:OnClose()
CheckRedPointStatus(RedPointType.RankingSort)
2020-06-08 13:57:30 +08:00
end
--界面销毁时调用(用于子类重写)
function RankingListMainPanel:OnDestroy()
2021-04-21 13:12:04 +08:00
this.spLoader:Destroy()
2020-06-08 13:57:30 +08:00
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")
2021-07-29 17:11:10 +08:00
local FightLeveStar = Util.GetGameObject(go,"FightLeveStar")
2020-06-08 13:57:30 +08:00
fight:SetActive(false)
warPower:SetActive(false)
trial:SetActive(false)
2021-07-29 17:11:10 +08:00
FightLeveStar:SetActive(false)
2020-06-08 13:57:30 +08:00
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)
2021-07-29 17:11:10 +08:00
elseif rankType == RANK_TYPE.FORCE_CURR_RANK or rankType == RANK_TYPE.JUMPSERVER_FORCE_CURR_RANK then
2020-06-08 13:57:30 +08:00
warPower:SetActive(true)
if nameText then
nameText:GetComponent("Text").text = data.userName
end
2020-06-28 17:48:49 +08:00
Util.GetGameObject(go,"warPower/Text"):GetComponent("Text").text = data.rankInfo.param1--data.force
2021-07-29 17:11:10 +08:00
elseif rankType == RANK_TYPE.GUILD_FORCE_RANK or rankType == RANK_TYPE.JUMPSERVER_GUILD_FORCE_RANK then
2020-06-08 13:57:30 +08:00
warPower:SetActive(true)
if nameText then
nameText:GetComponent("Text").text = data.guildName
end
Util.GetGameObject(go,"warPower/Text"):GetComponent("Text").text = data.rankInfo.param1
2021-07-29 17:11:10 +08:00
elseif rankType == RANK_TYPE.MONSTER_RANK or rankType == RANK_TYPE.JUMPSERVER_MONSTER_RANK then
2020-06-08 13:57:30 +08:00
trial:SetActive(true)
if nameText then
nameText:GetComponent("Text").text = data.userName
end
2021-03-03 15:36:17 +08:00
Util.GetGameObject(go,"trial"):GetComponent("Text").text = GetLanguageStrById(Language[11689])..data.rankInfo.param1
2021-07-29 17:11:10 +08:00
elseif rankType == RANK_TYPE.FIGHTLEVEL_STAR or rankType == RANK_TYPE.JUMPSERVER_FIGHTLEVEL_STAR then--山河社稷图星星
FightLeveStar:SetActive(true)
if nameText then
2021-07-30 19:20:53 +08:00
nameText:GetComponent("Text").text = data.userName
2021-07-29 17:11:10 +08:00
end
Util.GetGameObject(FightLeveStar,"Text"):GetComponent("Text").text = data.rankInfo.param1
2020-06-08 13:57:30 +08:00
end
end
2021-04-21 13:12:04 +08:00
return RankingListMainPanel