5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
173 lines
6.5 KiB
Lua
173 lines
6.5 KiB
Lua
local AchievementDetailCtrl = class("AchievementDetailCtrl", BaseCtrl)
|
|
AchievementDetailCtrl._mapNodeConfig = {
|
|
TMPCupCount = {sComponentName = "TMP_Text", nCount = 3},
|
|
txtBtnAllReceive = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Quest_Btn_ReceiveAll"
|
|
},
|
|
imgFlagIcon = {sComponentName = "Image"},
|
|
svAchievementList = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
btnAllReceive = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_AllReceive"
|
|
},
|
|
btnTab = {
|
|
sComponentName = "UIButton",
|
|
nCount = 5,
|
|
callback = "OnBtnClick_Tog"
|
|
},
|
|
imgTabBg = {
|
|
sCtrlName = "Game.UI.AchievementEx.AchievementToggle"
|
|
},
|
|
imgIconF0 = {nCount = 5},
|
|
AnimFlag = {sNodeName = "imgFlag", sComponentName = "Animator"}
|
|
}
|
|
AchievementDetailCtrl._mapEventConfig = {
|
|
AchievementRefresh = "OnEvent_ReceiveReward"
|
|
}
|
|
AchievementDetailCtrl._mapRedDotConfig = {}
|
|
function AchievementDetailCtrl:Awake()
|
|
self.mapAllAchievement = {}
|
|
self.mapAllAchievementCount = {}
|
|
self.mapGrid = {}
|
|
self.curIdx = 1
|
|
end
|
|
function AchievementDetailCtrl:FadeIn()
|
|
end
|
|
function AchievementDetailCtrl:FadeOut()
|
|
end
|
|
function AchievementDetailCtrl:OnEnable()
|
|
self._mapNode.imgTabBg:SetText(ConfigTable.GetUIText("Achievement_Type_1"), ConfigTable.GetUIText("Achievement_Type_2"), ConfigTable.GetUIText("Achievement_Type_3"), ConfigTable.GetUIText("Achievement_Type_4"), ConfigTable.GetUIText("Achievement_Type_5"))
|
|
self:RegisterReddot()
|
|
end
|
|
function AchievementDetailCtrl:OnGridRefresh(goGrid, gridIndex)
|
|
if self.mapGrid[goGrid] == nil then
|
|
local mapCtrl = self:BindCtrlByNode(goGrid, "Game.UI.AchievementEx.AchievementGridCtrl")
|
|
self.mapGrid[goGrid] = mapCtrl
|
|
end
|
|
local nIdx = gridIndex
|
|
if nIdx == nil then
|
|
return
|
|
end
|
|
nIdx = nIdx + 1
|
|
local mapAllAchievement = self.mapAllAchievement[self.curType][nIdx]
|
|
self.mapGrid[goGrid]:OnGridRefresh(mapAllAchievement)
|
|
end
|
|
function AchievementDetailCtrl:OnDisable()
|
|
for goGrid, mapCtrl in pairs(self.mapGrid) do
|
|
self:UnbindCtrlByNode(mapCtrl)
|
|
end
|
|
self.mapGrid = {}
|
|
end
|
|
function AchievementDetailCtrl:OnDestroy()
|
|
end
|
|
function AchievementDetailCtrl:OnRelease()
|
|
end
|
|
function AchievementDetailCtrl:OpenDetail(nIdx)
|
|
self.curType = nIdx
|
|
for i = 1, 5 do
|
|
self._mapNode.imgIconF0[i]:SetActive(nIdx == i)
|
|
end
|
|
self._mapNode.imgTabBg:SetState(nIdx)
|
|
local wait = function()
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
local sAnimName = "imgFlagIcon_in0" .. self.curType
|
|
self._mapNode.AnimFlag:Play(sAnimName)
|
|
end
|
|
cs_coroutine.start(wait)
|
|
self._mapNode.svAchievementList:Init(#self.mapAllAchievement[self.curType], self, self.OnGridRefresh)
|
|
self:SetPngSprite(self._mapNode.imgFlagIcon, "UI/big_sprites/zs_achievement_icon_0" .. nIdx)
|
|
NovaAPI.SetImageNativeSize(self._mapNode.imgFlagIcon)
|
|
local bShowAllReceive = false
|
|
for _, mapAchievement in ipairs(self.mapAllAchievement[self.curType]) do
|
|
if mapAchievement.nStatus == 1 then
|
|
bShowAllReceive = true
|
|
end
|
|
end
|
|
self._mapNode.btnAllReceive.gameObject:SetActive(bShowAllReceive)
|
|
local mapCount = PlayerData.Achievement:GetAchievementTypeCount(self.curType)
|
|
NovaAPI.SetTMPText(self._mapNode.TMPCupCount[1], mapCount.tbRarity[GameEnum.itemRarity.SSR])
|
|
NovaAPI.SetTMPText(self._mapNode.TMPCupCount[2], mapCount.tbRarity[GameEnum.itemRarity.SR])
|
|
NovaAPI.SetTMPText(self._mapNode.TMPCupCount[3], mapCount.tbRarity[GameEnum.itemRarity.R])
|
|
end
|
|
function AchievementDetailCtrl:UpdateData()
|
|
for _, nValue in pairs(GameEnum.achievementType) do
|
|
self.mapAllAchievement[nValue] = {}
|
|
local mapAllAchievement = PlayerData.Achievement:GetAchievementTypeList(nValue)
|
|
if mapAllAchievement ~= nil then
|
|
for _, value in pairs(mapAllAchievement) do
|
|
if not PlayerData.Achievement:JudgeHide(nValue, value) then
|
|
table.insert(self.mapAllAchievement[nValue], value)
|
|
end
|
|
end
|
|
local sortAchievement = function(a, b)
|
|
if a.nStatus ~= b.nStatus then
|
|
return a.nStatus < b.nStatus
|
|
end
|
|
return a.nId < b.nId
|
|
end
|
|
table.sort(self.mapAllAchievement[nValue], sortAchievement)
|
|
end
|
|
end
|
|
end
|
|
function AchievementDetailCtrl:RegisterReddot(...)
|
|
for k, v in pairs(self._mapNode.btnTab) do
|
|
local goReddot = v.transform:Find("reddot_Tab").gameObject
|
|
RedDotManager.RegisterNode(RedDotDefine.Achievement_Tab, k, goReddot)
|
|
end
|
|
end
|
|
function AchievementDetailCtrl:OnBtnClick_Tog(btn, nIdx)
|
|
if nIdx == self.curType then
|
|
return
|
|
end
|
|
self.curType = nIdx
|
|
for i = 1, 5 do
|
|
self._mapNode.imgIconF0[i]:SetActive(nIdx == i)
|
|
end
|
|
self._mapNode.imgTabBg:SetState(nIdx)
|
|
self._mapNode.svAchievementList:SetAnim(0.06)
|
|
self._mapNode.svAchievementList:Init(#self.mapAllAchievement[self.curType], self, self.OnGridRefresh)
|
|
local mapCount = PlayerData.Achievement:GetAchievementTypeCount(self.curType)
|
|
NovaAPI.SetTMPText(self._mapNode.TMPCupCount[1], mapCount.tbRarity[GameEnum.itemRarity.SSR])
|
|
NovaAPI.SetTMPText(self._mapNode.TMPCupCount[2], mapCount.tbRarity[GameEnum.itemRarity.SR])
|
|
NovaAPI.SetTMPText(self._mapNode.TMPCupCount[3], mapCount.tbRarity[GameEnum.itemRarity.R])
|
|
self:SetPngSprite(self._mapNode.imgFlagIcon, "UI/big_sprites/zs_achievement_icon_0" .. nIdx)
|
|
NovaAPI.SetImageNativeSize(self._mapNode.imgFlagIcon)
|
|
local bShowAllReceive = false
|
|
for _, mapAchievement in ipairs(self.mapAllAchievement[self.curType]) do
|
|
if mapAchievement.nStatus == 1 then
|
|
bShowAllReceive = true
|
|
end
|
|
end
|
|
self._panel.nDetailIdx = nIdx
|
|
self._mapNode.btnAllReceive.gameObject:SetActive(bShowAllReceive)
|
|
end
|
|
function AchievementDetailCtrl:OnBtnClick_AllReceive(btn, nIdx)
|
|
local tbId = {}
|
|
for _, mapAchievement in ipairs(self.mapAllAchievement[self.curType]) do
|
|
if mapAchievement.nStatus == 1 then
|
|
table.insert(tbId, mapAchievement.nId)
|
|
end
|
|
end
|
|
PlayerData.Achievement:SendAchievementRewardReq(tbId, self.curType, nil)
|
|
end
|
|
function AchievementDetailCtrl:OnEvent_ReceiveReward()
|
|
self:UpdateData()
|
|
self._mapNode.svAchievementList:Init(#self.mapAllAchievement[self.curType], self, self.OnGridRefresh)
|
|
local mapCount = PlayerData.Achievement:GetAchievementTypeCount(self.curType)
|
|
NovaAPI.SetTMPText(self._mapNode.TMPCupCount[1], mapCount.tbRarity[GameEnum.itemRarity.SSR])
|
|
NovaAPI.SetTMPText(self._mapNode.TMPCupCount[2], mapCount.tbRarity[GameEnum.itemRarity.SR])
|
|
NovaAPI.SetTMPText(self._mapNode.TMPCupCount[3], mapCount.tbRarity[GameEnum.itemRarity.R])
|
|
local bShowAllReceive = false
|
|
for _, mapAchievement in ipairs(self.mapAllAchievement[self.curType]) do
|
|
if mapAchievement.nStatus == 1 then
|
|
bShowAllReceive = true
|
|
end
|
|
end
|
|
self._mapNode.btnAllReceive.gameObject:SetActive(bShowAllReceive)
|
|
end
|
|
return AchievementDetailCtrl
|