Initial version - 1.2.0.60

EN: 1.2.0.60
CN: 1.2.0.61
JP: 1.2.0.63
KR: 1.2.0.67
This commit is contained in:
SL1900
2025-12-03 01:00:00 +09:00
commit 5e0d58cfad
3595 changed files with 9373562 additions and 0 deletions
@@ -0,0 +1,96 @@
local AchievementCtrl = class("AchievementCtrl", BaseCtrl)
AchievementCtrl._mapNodeConfig = {
animRoot = {
sNodeName = "----SafeAreaRoot----",
sComponentName = "Animator"
},
btnAchievement = {
sComponentName = "UIButton",
nCount = 5,
callback = "OnBtnClick_Detail"
},
TopBar = {
sNodeName = "TopBarPanel",
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
},
rtHomePage = {
sCtrlName = "Game.UI.AchievementEx.AchievementHomepageCtrl"
},
rtDetail = {
sCtrlName = "Game.UI.AchievementEx.AchievementDetailCtrl"
}
}
AchievementCtrl._mapEventConfig = {
[EventId.UIBackConfirm] = "OnEvent_Back",
[EventId.UIHomeConfirm] = "OnEvent_BackHome"
}
AchievementCtrl._mapRedDotConfig = {}
function AchievementCtrl:Awake()
end
function AchievementCtrl:FadeIn()
EventManager.Hit(EventId.SetTransition)
self._mapNode.animRoot:Play("AchievementPanel_in")
end
function AchievementCtrl:FadeOut()
end
function AchievementCtrl:OnEnable()
self._mapNode.rtHomePage.gameObject:SetActive(false)
self._mapNode.rtDetail.gameObject:SetActive(false)
local callback = function()
self._mapNode.rtHomePage:OnEvent_ReceiveReward()
self._mapNode.rtDetail:UpdateData()
if self._panel.nDetailIdx ~= nil and self._panel.nDetailIdx > 0 then
self._mapNode.rtDetail.gameObject:SetActive(true)
self._mapNode.rtDetail:OpenDetail(self._panel.nDetailIdx)
self.bDetail = true
else
self._mapNode.rtHomePage.gameObject:SetActive(true)
end
PlayerData.Achievement:CheckReddot()
end
PlayerData.Achievement:SendAchievementInfoReq(callback)
self.bDetail = false
self:RegisterReddot()
end
function AchievementCtrl:OnDisable()
end
function AchievementCtrl:OnDestroy()
end
function AchievementCtrl:OnRelease()
end
function AchievementCtrl:OnBtnClick_Detail(btn, nIdx)
self._mapNode.rtDetail:OpenDetail(nIdx)
self._mapNode.rtHomePage.gameObject:SetActive(false)
self._mapNode.rtDetail.gameObject:SetActive(true)
self.bDetail = true
self._panel.nDetailIdx = nIdx
end
function AchievementCtrl:RegisterReddot(...)
for k, v in pairs(self._mapNode.btnAchievement) do
local goReddot = v.transform:Find("AnimRoot/reddot").gameObject
RedDotManager.RegisterNode(RedDotDefine.Achievement_Tab, k, goReddot)
end
end
function AchievementCtrl:OnEvent_Back(nPanelId)
if self._panel._nPanelId ~= nPanelId then
return
end
if self.bDetail then
self._mapNode.rtHomePage.gameObject:SetActive(true)
self._mapNode.rtDetail.gameObject:SetActive(false)
self.bDetail = false
self._panel.nDetailIdx = 0
self._mapNode.animRoot:Play("AchievementPanel_in")
else
self._panel.nDetailIdx = 0
EventManager.Hit(EventId.CloesCurPanel)
end
end
function AchievementCtrl:OnEvent_BackHome(nPanelId)
if self._panel._nPanelId ~= nPanelId then
return
end
self._panel.nDetailIdx = 0
PanelManager.Home()
end
return AchievementCtrl
@@ -0,0 +1,172 @@
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
@@ -0,0 +1,113 @@
local AchievementGridCtrl = class("AchievementGridCtrl", BaseCtrl)
local JumpUtil = require("Game.Common.Utils.JumpUtil")
local nBarLength = 512
local nBarHeight = 512
AchievementGridCtrl._mapNodeConfig = {
imgCup = {sComponentName = "Image"},
TMPTitle = {sComponentName = "TMP_Text"},
TMPDesc = {sComponentName = "TMP_Text"},
TMPProcess = {sComponentName = "TMP_Text"},
TMPTimeTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Achievement_Tips_Completed"
},
txtBtnJump = {
sComponentName = "TMP_Text",
sLanguageId = "Quest_JumpTo"
},
TMPTime = {sComponentName = "TMP_Text"},
rtBarFill = {
sComponentName = "RectTransform"
},
btnItem = {
sComponentName = "UIButton",
callback = "OnBtnClick_Item"
},
btnReceive = {
sComponentName = "UIButton",
callback = "OnBtnClick_Receive"
},
btnJump = {
sComponentName = "UIButton",
callback = "OnBtnClick_Jumpto"
},
rtItem = {
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
},
imgCup0 = {nCount = 3},
txtBtnReceive = {
sComponentName = "TMP_Text",
sLanguageId = "Quest_Receive_Btn_Text"
},
TMPUncomplete = {
sComponentName = "TMP_Text",
sLanguageId = "Quest_UnComplete_Text"
}
}
AchievementGridCtrl._mapEventConfig = {}
AchievementGridCtrl._mapRedDotConfig = {}
function AchievementGridCtrl:Awake()
end
function AchievementGridCtrl:FadeIn()
end
function AchievementGridCtrl:FadeOut()
end
function AchievementGridCtrl:OnEnable()
end
function AchievementGridCtrl:OnDisable()
end
function AchievementGridCtrl:OnDestroy()
end
function AchievementGridCtrl:OnRelease()
end
function AchievementGridCtrl:OnGridRefresh(mapAchievement)
self.mapAchievement = mapAchievement
local mapAchievementCfgData = ConfigTable.GetData("Achievement", mapAchievement.nId)
if mapAchievementCfgData == nil then
self.gameObject:SetActive(false)
return
end
NovaAPI.SetTMPText(self._mapNode.TMPTitle, mapAchievementCfgData.Title)
NovaAPI.SetTMPText(self._mapNode.TMPDesc, mapAchievementCfgData.Desc)
if mapAchievementCfgData.Tid1 ~= 0 then
self._mapNode.rtItem.gameObject:SetActive(true)
self._mapNode.rtItem:SetItem(mapAchievementCfgData.Tid1, nil, mapAchievementCfgData.Qty1, nil, mapAchievement.nStatus == 3)
else
self._mapNode.rtItem.gameObject:SetActive(false)
end
self._mapNode.btnReceive.gameObject:SetActive(mapAchievement.nStatus == 1)
self._mapNode.btnJump.gameObject:SetActive(mapAchievement.nStatus == 2 and 0 < mapAchievementCfgData.JumpTo)
self._mapNode.TMPTimeTitle.gameObject:SetActive(mapAchievement.nStatus == 3)
self._mapNode.TMPUncomplete.gameObject:SetActive(mapAchievement.nStatus == 2 and mapAchievementCfgData.JumpTo == 0)
NovaAPI.SetTMPText(self._mapNode.TMPProcess, string.format("%d/%d", mapAchievement.nCur, mapAchievement.nMax))
if mapAchievement.nStatus == 3 then
self._mapNode.rtBarFill.sizeDelta = Vector2(nBarLength, nBarHeight)
NovaAPI.SetTMPText(self._mapNode.TMPTime, mapAchievement.sTime)
elseif 0 < mapAchievement.nMax then
self._mapNode.rtBarFill.sizeDelta = Vector2(nBarLength * (mapAchievement.nCur / mapAchievement.nMax), nBarHeight)
else
self._mapNode.rtBarFill.sizeDelta = Vector2(0, nBarHeight)
end
self:SetPngSprite(self._mapNode.imgCup, "UI/big_sprites/zs_achievement_cup_0" .. mapAchievementCfgData.Rarity)
for i = 1, 3 do
self._mapNode.imgCup0[i]:SetActive(i == mapAchievementCfgData.Rarity and mapAchievement.nStatus == 3)
end
end
function AchievementGridCtrl:OnBtnClick_Receive()
local mapAchievementCfgData = ConfigTable.GetData("Achievement", self.mapAchievement.nId)
PlayerData.Achievement:SendAchievementRewardReq({
self.mapAchievement.nId
}, mapAchievementCfgData.Type, nil)
end
function AchievementGridCtrl:OnBtnClick_Jumpto()
local mapAchievementCfgData = ConfigTable.GetData("Achievement", self.mapAchievement.nId) or {}
JumpUtil.JumpTo(mapAchievementCfgData.JumpTo)
end
function AchievementGridCtrl:OnBtnClick_Item(btn)
local mapAchievementCfgData = ConfigTable.GetData("Achievement", self.mapAchievement.nId)
if mapAchievementCfgData == nil then
return
end
UTILS.ClickItemGridWithTips(mapAchievementCfgData.Tid1, btn.gameObject, true, true, true)
end
return AchievementGridCtrl
@@ -0,0 +1,35 @@
local AchievementHomepageCtrl = class("AchievementHomepageCtrl", BaseCtrl)
AchievementHomepageCtrl._mapNodeConfig = {
TMPAcheivementCount = {sComponentName = "TMP_Text"},
TMPTitle = {sComponentName = "TMP_Text", nCount = 5},
TMPCupCount = {sComponentName = "TMP_Text", nCount = 3}
}
AchievementHomepageCtrl._mapEventConfig = {
AchievementRefresh = "OnEvent_ReceiveReward"
}
AchievementHomepageCtrl._mapRedDotConfig = {}
function AchievementHomepageCtrl:Awake()
end
function AchievementHomepageCtrl:FadeIn()
end
function AchievementHomepageCtrl:FadeOut()
end
function AchievementHomepageCtrl:OnEnable()
for i = 1, 5 do
NovaAPI.SetTMPText(self._mapNode.TMPTitle[i], ConfigTable.GetUIText("Achievement_Type_" .. i))
end
end
function AchievementHomepageCtrl:OnDisable()
end
function AchievementHomepageCtrl:OnDestroy()
end
function AchievementHomepageCtrl:OnRelease()
end
function AchievementHomepageCtrl:OnEvent_ReceiveReward()
self.mapCount = PlayerData.Achievement:GetAchievementAllTypeCount()
NovaAPI.SetTMPText(self._mapNode.TMPAcheivementCount, self.mapCount.nCompleted)
NovaAPI.SetTMPText(self._mapNode.TMPCupCount[1], self.mapCount.nSSR)
NovaAPI.SetTMPText(self._mapNode.TMPCupCount[2], self.mapCount.nSR)
NovaAPI.SetTMPText(self._mapNode.TMPCupCount[3], self.mapCount.nR)
end
return AchievementHomepageCtrl
@@ -0,0 +1,20 @@
local AchievementPanel = class("AchievementPanel", BasePanel)
AchievementPanel._tbDefine = {
{
sPrefabPath = "AchievementEx/AchievementPanel.prefab",
sCtrlName = "Game.UI.AchievementEx.AchievementCtrl"
}
}
function AchievementPanel:Awake()
end
function AchievementPanel:OnEnable()
end
function AchievementPanel:OnAfterEnter()
end
function AchievementPanel:OnDisable()
end
function AchievementPanel:OnDestroy()
end
function AchievementPanel:OnRelease()
end
return AchievementPanel
@@ -0,0 +1,40 @@
local AchievementToggle = class("AchievementToggle", BaseCtrl)
AchievementToggle._mapNodeConfig = {
TMPTitle = {sComponentName = "TMP_Text", nCount = 5},
TMPTitleOpen = {sComponentName = "TMP_Text", nCount = 5},
imgTab = {nCount = 5}
}
AchievementToggle._mapEventConfig = {}
AchievementToggle._mapRedDotConfig = {}
function AchievementToggle:Awake()
end
function AchievementToggle:FadeIn()
end
function AchievementToggle:FadeOut()
end
function AchievementToggle:OnEnable()
end
function AchievementToggle:OnDisable()
end
function AchievementToggle:OnDestroy()
end
function AchievementToggle:OnRelease()
end
function AchievementToggle:SetText(sTitle1, sTitle2, sTitle3, sTitle4, sTitle5)
NovaAPI.SetTMPText(self._mapNode.TMPTitle[1], sTitle1)
NovaAPI.SetTMPText(self._mapNode.TMPTitle[2], sTitle2)
NovaAPI.SetTMPText(self._mapNode.TMPTitle[3], sTitle3)
NovaAPI.SetTMPText(self._mapNode.TMPTitle[4], sTitle4)
NovaAPI.SetTMPText(self._mapNode.TMPTitle[5], sTitle5)
NovaAPI.SetTMPText(self._mapNode.TMPTitleOpen[1], sTitle1)
NovaAPI.SetTMPText(self._mapNode.TMPTitleOpen[2], sTitle2)
NovaAPI.SetTMPText(self._mapNode.TMPTitleOpen[3], sTitle3)
NovaAPI.SetTMPText(self._mapNode.TMPTitleOpen[4], sTitle4)
NovaAPI.SetTMPText(self._mapNode.TMPTitleOpen[5], sTitle5)
end
function AchievementToggle:SetState(nIdx)
for index, goTab in ipairs(self._mapNode.imgTab) do
goTab:SetActive(nIdx == index)
end
end
return AchievementToggle