sk-client/Assets/ManagedResources/~Lua/Modules/Expert/ExpertRewardSortPanel.lua

249 lines
11 KiB
Lua

require("Base/BasePanel")
ExpertRewardSortPanel = Inherit(BasePanel)
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local this = ExpertRewardSortPanel
local activeId = 0
local type = 0
local activityType = 0 --活动类型
local expertSortDataTabs = {}--排行
local expertRewardSortTabs = {}--排行奖励
-- 头像对象管理
local _PlayerHeadList = {}
--初始化组件(用于子类重写)
function ExpertRewardSortPanel:InitComponent()
self.btnBack = Util.GetGameObject(self.gameObject, "btnBack")
--排名
-- self.titleTextExpert = Util.GetGameObject(self.gameObject, "Title"):GetComponent("Text")
self.content2 = Util.GetGameObject(self.gameObject, "content2")
self.myRank = Util.GetGameObject(self.gameObject, "content2/bottom/info/myRank"):GetComponent("Text")
self.myValue = Util.GetGameObject(self.gameObject, "content2/bottom/info/myValue"):GetComponent("Text")
self.sortPre = Util.GetGameObject(self.gameObject, "content2/item")
self.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(self.gameObject, "content2/scrollRect").transform,
self.sortPre, nil, Vector2.New(916, 1124.7), 1, 1, Vector2.New(15, 0))
self.ScrollView.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(0, 0)
self.ScrollView.gameObject:GetComponent("RectTransform").anchorMin = Vector2.New(0.5, 0.5)
self.ScrollView.gameObject:GetComponent("RectTransform").anchorMax = Vector2.New(0.5, 0.5)
self.ScrollView.moveTween.MomentumAmount = 1
self.ScrollView.moveTween.Strength = 1
--奖励
self.content3 = Util.GetGameObject(self.gameObject, "content3")
self.expertRewardSortGrid = Util.GetGameObject(self.gameObject, "content3/scrollRect/grid")
self.expertRewardSortPre = Util.GetGameObject(self.gameObject, "content3/item")
for i = 1, 1 do
expertRewardSortTabs[i] = Util.GetGameObject(self.gameObject, "content3/scrollRect/grid/item")
end
this.myActivityRewardGo = Util.GetGameObject(self.gameObject, "content3/Record")
end
--绑定事件(用于子类重写)
function ExpertRewardSortPanel:BindEvent()
Util.AddClick(self.btnBack, function()
self:ClosePanel()
end)
end
--添加事件监听(用于子类重写)
function ExpertRewardSortPanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.RankingList.OnGoldExperSortChange,this.SetGoldExperSortInfo)
end
--移除事件监听(用于子类重写)
function ExpertRewardSortPanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.RankingList.OnGoldExperSortChange,this.SetGoldExperSortInfo)
end
--界面打开时调用(用于子类重写)
function ExpertRewardSortPanel:OnOpen(_activeId,_type, _activityType)
RankingManager.ClearData()
activeId = _activeId
type = _type
activityType = _activityType
--设置信息方法的列表
this.SetInfoFuncList = {
[FUNCTION_OPEN_TYPE.EXPERT] = this.SetGoldExperSortInfo,
}
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function ExpertRewardSortPanel:OnShow()
if type == 1 then
self.content2:SetActive(true)
self.content3:SetActive(false)
self:OnShowExperSort()
local conFigData = ConfigManager.GetConfigData(ConfigName.GlobalActivity,activeId)
if conFigData then
local ExpertDec = string.split(conFigData.ExpertDec, "#")
-- self.titleTextExpert.text = ExpertDec[2]
end
else
self.content2:SetActive(false)
self.content3:SetActive(true)
self:ActivitySortRewardShow()
-- self.titleTextExpert.text = GetLanguageStrById(10531)
end
end
--排名
function ExpertRewardSortPanel:OnShowExperSort()
NetManager.RequestGetExpertInfoData(activeId, function (msg)
expertSortDataTabs = msg
self.myValue.text = expertSortDataTabs.myScore
if expertSortDataTabs.myRank <= 0 then
self.myRank.text = GetLanguageStrById(10041)
else
self.myRank.text = expertSortDataTabs.myRank
end
self.ScrollView:SetData(expertSortDataTabs.expert, function (index, go)
self:OnShowSingleExperSort(go, expertSortDataTabs.expert[index])
end)
end)
end
--排名2
function ExpertRewardSortPanel:OnShowSingleExperSort(activityRewardGo,sortData)
local sortNumTabs = {}
for i = 1, 4 do
sortNumTabs[i] = Util.GetGameObject(activityRewardGo, "sortNum/sortNum ("..i..")")
sortNumTabs[i]:SetActive(false)
end
if sortData.rank < 4 then
sortNumTabs[sortData.rank]:SetActive(true)
else
sortNumTabs[4]:SetActive(true)
Util.GetGameObject(sortNumTabs[4], "rankNumberText"):GetComponent("Text").text = sortData.rank
end
--Util.GetGameObject(activityRewardGo, "userHeadQuality/Image/levelText"):GetComponent("Text").text = sortData.level
Util.GetGameObject(activityRewardGo, "userNameText"):GetComponent("Text").text = sortData.name
Util.GetGameObject(activityRewardGo, "injuryNumber"):GetComponent("Text").text = sortData.score
local head = Util.GetGameObject(activityRewardGo, "userHeadQuality")
if not _PlayerHeadList[activityRewardGo] then
_PlayerHeadList[activityRewardGo] = SubUIManager.Open(SubUIConfig.PlayerHeadView, head.transform)
end
_PlayerHeadList[activityRewardGo]:Reset()
_PlayerHeadList[activityRewardGo]:SetHead(sortData.head)
_PlayerHeadList[activityRewardGo]:SetFrame(sortData.headFrame)
_PlayerHeadList[activityRewardGo]:SetScale(Vector3.one * 0.63)
_PlayerHeadList[activityRewardGo]:SetLevel(sortData.level)
end
--排名奖励1
function ExpertRewardSortPanel:ActivitySortRewardShow()
local rewardTabs = {}
for i, v in ConfigPairs(ConfigManager.GetConfig(ConfigName.ActivityRankingReward)) do
if v.ActivityId == activeId then
table.insert(rewardTabs,v)
end
end
for i = 1, math.max(#rewardTabs, #expertRewardSortTabs) do
local go = expertRewardSortTabs[i]
if not go then
go = newObject(expertRewardSortTabs[1])
go.transform:SetParent(self.expertRewardSortGrid.transform)
go.transform.localScale = Vector3.one
go.transform.localPosition = Vector3.zero
expertRewardSortTabs[i] = go
end
go.gameObject:SetActive(false)
end
for i = 1, #rewardTabs do
self:ActivityRewardSingleShow(expertRewardSortTabs[i],rewardTabs[i])
end
--
--RankingManager.InitData(type, this.SetInfoFuncList[RankKingList[5].Id], activeId)--算是半个策略模式吧
end
function this.SetGoldExperSortInfo()
local sortNumTabs = {}
for i = 1, 4 do
sortNumTabs[i] = Util.GetGameObject(this.myActivityRewardGo, "SortNum/SortNum ("..i..")")
sortNumTabs[i]:SetActive(false)
end
local data,myData = RankingManager.GetGoldExperSortInfo()
local rewardData = nil
if not myData.myRank or myData.myRank < 0 then
sortNumTabs[4]:SetActive(true)
Util.GetGameObject(sortNumTabs[4], "TitleText"):GetComponent("Text").text = GetLanguageStrById(10041)
else
rewardData = {}
for i, v in ConfigPairs(ConfigManager.GetConfig(ConfigName.ActivityRankingReward)) do
if v.ActivityId == activeId then
if myData.myRank >= v.MinRank and myData.myRank <= v.MaxRank then
rewardData = v
end
end
end
if rewardData.MinRank == rewardData.MaxRank then
if rewardData.MaxRank < 4 then
sortNumTabs[rewardData.MinRank]:SetActive(true)
else
sortNumTabs[4]:SetActive(true)
Util.GetGameObject(sortNumTabs[4], "TitleText"):GetComponent("Text").text = rewardData.MaxRank
end
else
sortNumTabs[4]:SetActive(true)
if rewardData.MaxRank < 0 then
Util.GetGameObject(sortNumTabs[4], "TitleText"):GetComponent("Text").text = rewardData.MinRank .."+"
else
Util.GetGameObject(sortNumTabs[4], "TitleText"):GetComponent("Text").text = rewardData.MinRank .."-".. rewardData.MaxRank
end
end
local content = Util.GetGameObject(this.myActivityRewardGo, "Demons")
-- Util.ClearChild(content.transform)
for i = 1, #rewardData.RankingReward do
-- SubUIManager.Open(SubUIConfig.ItemView, content.transform):OnOpen(false,rewardData.RankingReward[i],0.55)
Util.GetGameObject(content,"Item"..i):SetActive(true)
Util.GetGameObject(content,"Item"..i):GetComponent("Image").sprite = Util.LoadSprite(GetQuantityImageByquality(itemConfig[rewardData.RankingReward[i][1]].Quantity))
Util.GetGameObject(content,"Item"..i .. "/icon"):GetComponent("Image").sprite = Util.LoadSprite(GetResourcePath(itemConfig[rewardData.RankingReward[i][1]].ResourceID))
Util.GetGameObject(content,"Item"..i .. "/Text"):GetComponent("Text").text = rewardData.RankingReward[i][2]
end
end
end
--排名奖励2
function ExpertRewardSortPanel:ActivityRewardSingleShow(activityRewardGo,rewardData)
activityRewardGo:SetActive(true)
local sortNumTabs = {}
for i = 1, 4 do
sortNumTabs[i] = Util.GetGameObject(activityRewardGo, "SortNum/SortNum"..i)
sortNumTabs[i]:SetActive(false)
end
if rewardData.MinRank == rewardData.MaxRank then
if rewardData.MaxRank < 4 then
sortNumTabs[rewardData.MinRank]:SetActive(true)
else
sortNumTabs[4]:SetActive(true)
Util.GetGameObject(sortNumTabs[4], "TitleText"):GetComponent("Text").text = rewardData.MaxRank
end
else
sortNumTabs[4]:SetActive(true)
if rewardData.MaxRank < 0 then
Util.GetGameObject(sortNumTabs[4], "TitleText"):GetComponent("Text").text = rewardData.MinRank .."+"
else
Util.GetGameObject(sortNumTabs[4], "TitleText"):GetComponent("Text").text = rewardData.MinRank .."~".. rewardData.MaxRank
end
end
local content = Util.GetGameObject(activityRewardGo, "content")
Util.ClearChild(content.transform)
for i = 1, #rewardData.RankingReward do
SubUIManager.Open(SubUIConfig.ItemView, content.transform):OnOpen(false,rewardData.RankingReward[i],0.7)
end
end
--界面关闭时调用(用于子类重写)
function ExpertRewardSortPanel:OnClose()
RankingManager.ClearData()
RankingManager.isRequest = 0
end
--界面销毁时调用(用于子类重写)
function ExpertRewardSortPanel:OnDestroy()
for _, playerHead in pairs(_PlayerHeadList) do
playerHead:Recycle()
end
_PlayerHeadList = {}
self.ScrollView = nil
expertRewardSortTabs = {}
end
return ExpertRewardSortPanel