sk-client/Assets/ManagedResources/~Lua/Modules/DefenseTraining/DefenseTrainingRankPopup.lua

299 lines
11 KiB
Lua

require("Base/BasePanel")
DefenseTrainingRankPopup = Inherit(BasePanel)
local this = DefenseTrainingRankPopup
local _tabIdx = 1
local TabBox = require("Modules/Common/TabBox") -- 引用
local _TabData = {
[1] = { default = "X1_tongyong_fenlan_weixuanzhong_02", select = "X1_tongyong_fenlan_yixuanzhong_02", name = GetLanguageStrById(12556),title = "X1_jingjichang_paihangyeqian" },
[2] = { default = "X1_tongyong_fenlan_weixuanzhong_02", select = "X1_tongyong_fenlan_yixuanzhong_02", name = GetLanguageStrById(10080),title = "X1_jingjichang_richangjiangli" },
}
local rankPicArray = {
"X1_tongyong_diyi",
"X1_tongyong_dier",
"X1_tongyong_disan",
}
--初始化组件(用于子类重写)
function DefenseTrainingRankPopup:InitComponent()
this.BackMask = Util.GetGameObject(self.gameObject, "BackMask")
this.btnClose = Util.GetGameObject(self.gameObject, "bg/btnClose")
this.tabBox = Util.GetGameObject(self.gameObject, "bg/TabBox")
this.RANK = Util.GetGameObject(self.gameObject, "RANK")
this.REWARD = Util.GetGameObject(self.gameObject, "REWARD")
--> 排行
this.Scroll_1 = Util.GetGameObject(self.gameObject, "RANK/Scroll")
this.RankUserPre = Util.GetGameObject(self.gameObject, "RANK/RankUserPre")
local w = this.Scroll_1.transform.rect.width
local h = this.Scroll_1.transform.rect.height
this.scrollView_1 = SubUIManager.Open(SubUIConfig.ScrollCycleView, this.Scroll_1.transform, this.RankUserPre, nil,
Vector2.New(w, h), 1, 1, Vector2.New(0, 0))
this.scrollView_1.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(0,0)
this.scrollView_1.gameObject:GetComponent("RectTransform").anchorMin = Vector2.New(0.5, 0.5)
this.scrollView_1.gameObject:GetComponent("RectTransform").anchorMax = Vector2.New(0.5, 0.5)
this.scrollView_1.gameObject:GetComponent("RectTransform").pivot = Vector2.New(0.5, 0.5)
this.scrollView_1.moveTween.MomentumAmount = 1
this.scrollView_1.moveTween.Strength = 2
this.MyRankUser = Util.GetGameObject(self.gameObject, "RANK/MyRankUser")
this.MyRankUserGrid = Util.GetGameObject(self.gameObject, "RANK/MyRankUser/Grid")
this.MyRankUserNoRank = Util.GetGameObject(self.gameObject, "RANK/MyRankUser/NoRank")
--> 奖励
this.Scroll_2 = Util.GetGameObject(self.gameObject, "REWARD/Scroll")
this.ScrollPre = Util.GetGameObject(self.gameObject, "REWARD/ScrollPre")
w = this.Scroll_2.transform.rect.width
h = this.Scroll_2.transform.rect.height
this.scrollView_2 = SubUIManager.Open(SubUIConfig.ScrollCycleView, this.Scroll_2.transform, this.ScrollPre, nil,
Vector2.New(w, h), 1, 1, Vector2.New(0, 5))
this.scrollView_2.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(0,0)
this.scrollView_2.gameObject:GetComponent("RectTransform").anchorMin = Vector2.New(0.5, 0.5)
this.scrollView_2.gameObject:GetComponent("RectTransform").anchorMax = Vector2.New(0.5, 0.5)
this.scrollView_2.gameObject:GetComponent("RectTransform").pivot = Vector2.New(0.5, 0.5)
this.scrollView_2.moveTween.MomentumAmount = 1
this.scrollView_2.moveTween.Strength = 2
this.itemList = {}
end
--绑定事件(用于子类重写)
function DefenseTrainingRankPopup:BindEvent()
Util.AddClick(this.BackMask, function()
self:ClosePanel()
end)
Util.AddClick(this.btnClose, function()
self:ClosePanel()
end)
end
--添加事件监听(用于子类重写)
function DefenseTrainingRankPopup:AddListener()
end
--移除事件监听(用于子类重写)
function DefenseTrainingRankPopup:RemoveListener()
end
--界面打开时调用(用于子类重写)
function DefenseTrainingRankPopup:OnOpen()
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function DefenseTrainingRankPopup:OnShow()
this.tabCtrl=TabBox.New()
this.tabCtrl:SetTabAdapter(this.OnTabAdapter)
this.tabCtrl:SetTabIsLockCheck(this.OnTabIsLockCheck)
this.tabCtrl:SetChangeTabCallBack(this.OnChangeTab)
_tabIdx = 1
this.tabCtrl:Init(this.tabBox, _TabData)
DefenseTrainingRankPopup.ChangeTab(_tabIdx)
--> mine
this.MyRankUserGrid:SetActive(false)
this.MyRankUserNoRank:SetActive(false)
if DefenseTrainingManager.myRankInfo and DefenseTrainingManager.myRankInfo.rank ~= -1 then
this.MyRankUserGrid:SetActive(true)
DefenseTrainingRankPopup:FillMine(this.MyRankUser, DefenseTrainingManager.myRankInfo)
else
this.MyRankUserNoRank:SetActive(true)
end
this:RefreshScroll_1(1)
this:RefreshScroll_2(1)
end
function DefenseTrainingRankPopup.OnTabAdapter(tab, index, status)
local tabLab = Util.GetGameObject(tab, "Text")
Util.GetGameObject(tab,"Image"):GetComponent("Image").sprite = Util.LoadSprite(_TabData[index][status])
tabLab:GetComponent("Text").text = _TabData[index].name
Util.GetGameObject(tab,"select"):GetComponent("Image").sprite = Util.LoadSprite(_TabData[index].title)
Util.GetGameObject(tab,"select/Text"):GetComponent("Text").text = _TabData[index].name
if status == "select" then
tabLab:SetActive(false)
Util.GetGameObject(tab,"select"):SetActive(true)
else
tabLab:SetActive(true)
Util.GetGameObject(tab,"select"):SetActive(false)
end
end
function DefenseTrainingRankPopup.OnTabIsLockCheck(index)
end
function DefenseTrainingRankPopup.OnChangeTab(index, lastIndex)
DefenseTrainingRankPopup.ChangeTab(index, 1)
end
function DefenseTrainingRankPopup.ChangeTab(index, scrollIndex)
_tabIdx = index
this.RANK:SetActive(false)
this.REWARD:SetActive(false)
if _tabIdx == 1 then
this.RANK:SetActive(true)
elseif _tabIdx == 2 then
this.REWARD:SetActive(true)
end
-- this:RefreshScroll(scrollIndex)
end
function DefenseTrainingRankPopup:RefreshScroll_1(_index)
this.scrollView_1:SetData(DefenseTrainingManager.ranks, function(index, root)
self:FillItem(root, DefenseTrainingManager.ranks[index])
end)
if _index then
this.scrollView_1:SetIndex(_index)
end
end
function DefenseTrainingRankPopup:FillItem(go, data)
local headpos = Util.GetGameObject(go, "Grid/User/headBox/headpos")
local name = Util.GetGameObject(go, "Grid/User/headBox/name"):GetComponent("Text")
local lv = Util.GetGameObject(go, "Grid/User/headBox/lvFrame/lv"):GetComponent("Text")
local Stage = Util.GetGameObject(go, "Grid/Stage/Text"):GetComponent("Text")
local RankImage = Util.GetGameObject(go, "Grid/Rank/Image")
local RankText = Util.GetGameObject(go, "Grid/Rank/Text")
local power = Util.GetGameObject(go, "Grid/User/headBox/power"):GetComponent("Text")
RankImage:SetActive(false)
RankText:SetActive(false)
if data.rankInfo.rank <= 3 then
RankImage:SetActive(true)
RankImage:GetComponent("Image").sprite = Util.LoadSprite(rankPicArray[data.rankInfo.rank])
else
RankText:SetActive(true)
RankText:GetComponent("Text").text = tostring(data.rankInfo.rank)
end
Stage.text = data.rankInfo.param1 or 0
name.text = data.userName
lv.text = data.level
power.text = data.force
if not this.playerHead then
this.playerHead = {}
end
if not this.playerHead[go] then
this.playerHead[go] = SubUIManager.Open(SubUIConfig.PlayerHeadView, headpos.transform)
end
this.playerHead[go]:Reset()
this.playerHead[go]:SetHead(data.head)
this.playerHead[go]:SetFrame(data.headFrame)
this.playerHead[go]:SetUID(data.uid)
end
function DefenseTrainingRankPopup:FillMine(go, data)
local headpos = Util.GetGameObject(go, "Grid/User/headBox/headpos")
local name = Util.GetGameObject(go, "Grid/User/headBox/name"):GetComponent("Text")
local lv = Util.GetGameObject(go, "Grid/User/headBox/lvFrame/lv"):GetComponent("Text")
local Stage = Util.GetGameObject(go, "Grid/Stage/Text"):GetComponent("Text")
local RankImage = Util.GetGameObject(go, "Grid/Rank/Image")
local RankText = Util.GetGameObject(go, "Grid/Rank/Text")
local power = Util.GetGameObject(go, "Grid/User/headBox/power"):GetComponent("Text")
RankImage:SetActive(false)
RankText:SetActive(false)
if data.rank <= 3 then
RankImage:SetActive(true)
RankImage:GetComponent("Image").sprite = Util.LoadSprite(rankPicArray[data.rank])
else
RankText:SetActive(true)
RankText:GetComponent("Text").text = tostring(data.rank)
end
Stage.text = data.param1 or 0
name.text = PlayerManager.nickName
lv.text = PlayerManager.level
power.text = PlayerManager.maxForce
if not this.playerHead then
this.playerHead = {}
end
if not this.playerHead[go] then
this.playerHead[go] = SubUIManager.Open(SubUIConfig.PlayerHeadView, headpos.transform)
end
this.playerHead[go]:Reset()
this.playerHead[go]:SetHead(PlayerManager.head)
this.playerHead[go]:SetFrame(PlayerManager.frame)
this.playerHead[go]:SetUID(PlayerManager.uid)
end
function DefenseTrainingRankPopup:RefreshScroll_2(scrollIndex)
local allConfigData = ConfigManager.GetAllConfigsData(ConfigName.DefTrainingRanking)
table.sort(allConfigData, function(a, b)
return a.Id < b.Id
end)
this.scrollView_2:SetData(allConfigData, function(index, root)
self:FillItem_2(root, allConfigData[index])
end)
if scrollIndex then
this.scrollView_2:SetIndex(scrollIndex)
end
end
function DefenseTrainingRankPopup:FillItem_2(go, data)
local RewardGrid = Util.GetGameObject(go, "RewardGrid")
local num = Util.GetGameObject(go, "rank/num")
local Image = Util.GetGameObject(go, "rank/Image")
num:SetActive(false)
Image:SetActive(false)
if this.itemList[go] == nil then
this.itemList[go] = {}
for i = 1, 4 do --< 目前最多支持四个item
this.itemList[go][i] = SubUIManager.Open(SubUIConfig.ItemView, RewardGrid.transform)
end
end
local itemData = data.RankingAward
for i = 1, 4 do
local ItemView = this.itemList[go][i]
if i <= #itemData then
ItemView.gameObject:SetActive(true)
ItemView:OnOpen(false, {itemData[i][1], itemData[i][2]}, 0.6, nil, nil, nil, nil, nil)
else
ItemView.gameObject:SetActive(false)
end
end
if data.Id <= 3 then
Image:SetActive(true)
Image:GetComponent("Image").sprite = Util.LoadSprite(rankPicArray[data.Id])
else
num:SetActive(true)
num:GetComponent("Text").text = data.RankingMin .. "-" .. data.RankingMax
end
end
--界面关闭时调用(用于子类重写)
function DefenseTrainingRankPopup:OnClose()
if this.playerHead then
for _, v in pairs(this.playerHead) do
v:Recycle()
end
this.playerHead = {}
end
end
--界面销毁时调用(用于子类重写)
function DefenseTrainingRankPopup:OnDestroy()
this.itemList = {}
end
return DefenseTrainingRankPopup