Files
StellaSora_DataLua/lua/game/ui/soldier/soldierlevelselectctrl.lua
T
SL1900 8c4bd41668 Update - 1.13.0.124
EN: 1.13.0.124
CN: 1.13.0.124
JP: 1.13.0.128
KR: 1.13.0.130
2026-07-21 12:30:00 +09:00

152 lines
6.6 KiB
Lua

local SoldierLevelSelectCtrl = class("SoldierLevelSelectCtrl", BaseCtrl)
SoldierLevelSelectCtrl._mapNodeConfig = {
topbar = {
sNodeName = "TopBarPanel",
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
},
btn_Difficulty = {
nCount = 2,
sComponentName = "UIButton",
callback = "OnBtnClick_Difficulty"
}
}
SoldierLevelSelectCtrl._mapEventConfig = {}
SoldierLevelSelectCtrl._mapRedDotConfig = {}
function SoldierLevelSelectCtrl:Awake()
local actData = PlayerData.Activity:GetActivityDataByType(GameEnum.activityType.Soldier)
if actData == nil then
return
end
actData:RefreshLevelNew()
end
function SoldierLevelSelectCtrl:OnEnable()
self:Refresh()
end
function SoldierLevelSelectCtrl:Refresh()
local curChallengeData = PlayerData.SoldierData:GetCurChallengeData()
self.curChallengeData = curChallengeData
self.tbAllChallenge = {}
local func_ForEach_Challenge = function(mapLineData)
table.insert(self.tbAllChallenge, mapLineData)
end
ForEachTableLine(DataTable.SoldierGradeChallenge, func_ForEach_Challenge)
table.sort(self.tbAllChallenge, function(a, b)
if a.KeyGradeId == b.KeyGradeId then
return a.GradeLevel < b.GradeLevel
end
return a.KeyGradeId < b.KeyGradeId
end)
self.nHighestChallengeId = PlayerData.SoldierData:GetHighestChallengeId()
local nIndex = table.indexof(self.tbAllChallenge, function(a)
return a.KeyGradeId == self.nHighestChallengeId
end)
if nIndex == 0 then
nIndex = 1
end
self:OnBtnClick_Difficulty(_, nIndex)
for i = 1, 2 do
do
local config = ConfigTable.GetData("SoldierGradeChallenge", self.tbAllChallenge[i].Id)
if config ~= nil then
local btnDifficulty = self._mapNode.btn_Difficulty[i]
local txt_TitleNormal = btnDifficulty.transform:Find("AnimRoot/txt_TitleNormal"):GetComponent("TMP_Text")
local txt_CountNormal = btnDifficulty.transform:Find("AnimRoot/txt_CountNormal"):GetComponent("TMP_Text")
local txtGoLevelNormal = btnDifficulty.transform:Find("AnimRoot/imgLevelNormal/txtGoLevelNormal"):GetComponent("TMP_Text")
local btnChallenge = btnDifficulty.transform:Find("AnimRoot/btnChallenge"):GetComponent("UIButton")
local txtBtnChallenge = btnChallenge.transform:Find("AnimRoot/txtBtnChallenge"):GetComponent("TMP_Text")
local goLevelHint = btnDifficulty.transform:Find("AnimRoot/goLevelHint")
local btnContinue = btnDifficulty.transform:Find("AnimRoot/btnContinue"):GetComponent("UIButton")
local txtBtnContinue = btnContinue.transform:Find("AnimRoot/txtBtnContinue"):GetComponent("TMP_Text")
local txt_goLevelHint = btnDifficulty.transform:Find("AnimRoot/goLevelHint/imgContentBg/txt_goLevelHint"):GetComponent("TMP_Text")
local btnSettle = btnDifficulty.transform:Find("AnimRoot/btnSettle"):GetComponent("UIButton")
local txtBtnSettle = btnSettle.transform:Find("AnimRoot/txtBtnSettle"):GetComponent("TMP_Text")
local imgLockRoot = btnDifficulty.transform:Find("AnimRoot/imgLockRoot"):GetComponent("Image")
local txtLockHard = btnDifficulty.transform:Find("AnimRoot/imgLockRoot/imgLockHard/txtLockHard"):GetComponent("TMP_Text")
NovaAPI.SetTMPText(txt_TitleNormal, config.Name)
NovaAPI.SetTMPText(txt_CountNormal, orderedFormat(ConfigTable.GetUIText("Soldier_Level_Select_Reward"), config.Score))
NovaAPI.SetTMPText(txtGoLevelNormal, orderedFormat(ConfigTable.GetUIText("Soldier_Battle_Level"), config.OppoLevelShow))
NovaAPI.SetTMPText(txtBtnChallenge, ConfigTable.GetUIText("Soldier_Level_Select_Challenge"))
NovaAPI.SetTMPText(txtBtnContinue, ConfigTable.GetUIText("Soldier_Level_Select_Continue"))
NovaAPI.SetTMPText(txtBtnSettle, ConfigTable.GetUIText("Soldier_Level_Select_DoResult"))
btnChallenge.onClick:RemoveAllListeners()
btnChallenge.onClick:AddListener(function()
self:OnBtnClick_Challenge(i)
end)
btnContinue.onClick:RemoveAllListeners()
btnContinue.onClick:AddListener(function()
self:OnBtnClick_Continue(i)
end)
btnSettle.onClick:RemoveAllListeners()
btnSettle.onClick:AddListener(function()
local callback = function()
self:Refresh()
end
PlayerData.SoldierData:SendGiveUp(callback)
end)
goLevelHint.gameObject:SetActive(false)
btnContinue.gameObject:SetActive(false)
btnSettle.gameObject:SetActive(false)
imgLockRoot.gameObject:SetActive(false)
btnChallenge.gameObject:SetActive(false)
local bUnlocked = PlayerData.SoldierData:CheckChallengeUnlocked(self.tbAllChallenge[i].Id)
imgLockRoot.gameObject:SetActive(not bUnlocked)
if bUnlocked then
if self.curChallengeData.nGradeChallengeId ~= 0 then
if self.curChallengeData.nGradeChallengeId == self.tbAllChallenge[i].Id then
btnContinue.gameObject:SetActive(true)
goLevelHint.gameObject:SetActive(true)
btnSettle.gameObject:SetActive(true)
local nStage, nNodexIndex = PlayerData.SoldierData:GetCurChallengeState()
NovaAPI.SetTMPText(txt_goLevelHint, orderedFormat(ConfigTable.GetUIText("Soldier_Level_Select_NodeIndex"), nStage, nNodexIndex))
else
imgLockRoot.gameObject:SetActive(true)
NovaAPI.SetTMPText(txtLockHard, ConfigTable.GetUIText("Soldier_Level_Select_Lock1"))
end
else
btnChallenge.gameObject:SetActive(true)
end
else
imgLockRoot.gameObject:SetActive(true)
NovaAPI.SetTMPText(txtLockHard, ConfigTable.GetUIText("Soldier_Level_Select_Lock2"))
end
if i == 2 then
local chess1 = btnDifficulty.transform:Find("AnimRoot/img_Chess2/img_Chess2").gameObject:GetComponent("DOTweenAnimation")
local chess2 = btnDifficulty.transform:Find("AnimRoot/imgIconDb/img_Chess1/img_Chess2").gameObject:GetComponent("DOTweenAnimation")
local chess3 = btnDifficulty.transform:Find("AnimRoot/imgIconDb/img_Chess3/img_Chess2").gameObject:GetComponent("DOTweenAnimation")
if bUnlocked then
chess1:DOPlay()
chess2:DOPlay()
chess3:DOPlay()
else
chess1:DOKill()
chess2:DOKill()
chess3:DOKill()
end
end
end
end
end
end
function SoldierLevelSelectCtrl:EnterSoldier(nIndex)
local actData = PlayerData.Activity:GetActivityDataByType(GameEnum.activityType.Soldier)
if actData == nil then
return
end
local callback = function()
self:ClosePanel()
end
PlayerData.SoldierData:EnterSoldier(actData.nActId, self.tbAllChallenge[nIndex].Id, callback)
end
function SoldierLevelSelectCtrl:ClosePanel()
end
function SoldierLevelSelectCtrl:OnBtnClick_Difficulty(_, nIndex)
self.nSelectedChallenge = self.tbAllChallenge[nIndex].Id
end
function SoldierLevelSelectCtrl:OnBtnClick_Challenge(nIndex)
self:EnterSoldier(nIndex)
end
function SoldierLevelSelectCtrl:OnBtnClick_Continue(nIndex)
self:EnterSoldier(nIndex)
end
return SoldierLevelSelectCtrl