Update - 1.9.0.103

EN: 1.9.0.103
CN: 1.9.0.104
JP: 1.9.0.106
KR: 1.9.0.108
This commit is contained in:
SL1900
2026-04-18 00:15:00 +09:00
parent 35fe1f046d
commit e0549005e1
1150 changed files with 941124 additions and 19847 deletions
@@ -74,6 +74,9 @@ function FormationCharInfoCtrl:OnBtnClick_Detail(btn)
if self.tbTeamId == nil then
return
end
if self._panel.nLoadProcess ~= nil and self._panel.nLoadProcess > 1 then
return
end
if not self.bTrialLevel then
EventManager.Hit(EventId.OpenPanel, PanelId.CharBgPanel, PanelId.CharInfo, self.nCharId, self.tbTeamId, false)
end
@@ -41,7 +41,25 @@ FormationCharListCtrl._mapNodeConfig = {
imgArrowUpEnable = {},
imgArrowUpDisable = {},
imgArrowDownEnable = {},
imgArrowDownDisable = {}
imgArrowDownDisable = {},
btnFavoriteOrder = {
sComponentName = "UIButton",
callback = "OnBtnClick_InFavoriteOrder"
},
InFavoriteOrder = {
sNodeName = "InFavoriteOrder",
sComponentName = "CanvasGroup"
},
txtOffLabel = {
sNodeName = "OffLabel",
sComponentName = "TMP_Text",
sLanguageId = "CharacterList_Common"
},
txtInLabel = {
sNodeName = "InLabel",
sComponentName = "TMP_Text",
sLanguageId = "CharacterList_Common"
}
}
FormationCharListCtrl._mapEventConfig = {
[EventId.FilterConfirm] = "RefreshByFilter",
@@ -61,6 +79,8 @@ function FormationCharListCtrl:OnEnable()
local isDirty = PlayerData.Filter:IsDirty(AllEnum.OptionType.Char)
self._mapNode.imgFilterChoose:SetActive(isDirty)
self.bOpen = false
self.bInFavorite = true
self:RefreshFavoriteTopState()
end
function FormationCharListCtrl:OnDisable()
self:CloseList()
@@ -105,6 +125,7 @@ function FormationCharListCtrl:Refresh()
self:FilterChar()
self:SortChar()
self:RefreshOrderState()
self:RefreshFavoriteTopState()
local nCurCount = #self.tbSortedChar
if 0 < nCurCount then
self._mapNode.labEmpty.gameObject:SetActive(false)
@@ -224,13 +245,14 @@ function FormationCharListCtrl:SyncFormation()
if not bChange then
return
end
PlayerData.Team:UpdateFormationInfo(self._panel.nTeamIndex, self.curChar, tbDiscId)
local nPreselectionId = PlayerData.Team:GetTeamPreselectionId(self._panel.nTeamIndex)
PlayerData.Team:UpdateFormationInfo(self._panel.nTeamIndex, self.curChar, tbDiscId, nPreselectionId)
end
function FormationCharListCtrl:SortChar()
local tbCharId = {}
UTILS.SortByPriority(self.tbSortedChar, {
AllEnum.CharSortField[self.tbSortCfg.nSortType]
}, PlayerData.Char:GetCharSortField(), self.tbSortCfg.bOrder)
}, PlayerData.Char:GetCharSortField(), self.tbSortCfg.bOrder, self.bInFavorite)
self.tbSortedChar = self:MoveElementsToFront(self.tbSortedChar, self.curChar)
for _, mapCharId in ipairs(self.tbSortedChar) do
table.insert(tbCharId, mapCharId.nId)
@@ -392,4 +414,22 @@ function FormationCharListCtrl:OnEvent_PositionCharPos(_tmpChar)
end
end
end
function FormationCharListCtrl:RefreshFavoriteTopState()
if self.bInFavorite then
NovaAPI.SetCanvasGroupAlpha(self._mapNode.InFavoriteOrder, 1)
else
NovaAPI.SetCanvasGroupAlpha(self._mapNode.InFavoriteOrder, 0)
end
end
function FormationCharListCtrl:OnBtnClick_InFavoriteOrder(btn)
self.bInFavorite = not self.bInFavorite
local sTip = ""
if self.bInFavorite then
sTip = ConfigTable.GetUIText("OpenCharacterCommonTop_Tip")
else
sTip = ConfigTable.GetUIText("CloseCharacterCommonTop_Tip")
end
EventManager.Hit(EventId.OpenMessageBox, sTip)
self:Refresh()
end
return FormationCharListCtrl
@@ -86,6 +86,9 @@ function FormationCharListItem:OnBtnClick_Mask(btn)
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Formation_Selected"))
end
function FormationCharListItem:OnBtnClick_Detail(btn)
if self._panel.nLoadProcess ~= nil and self._panel.nLoadProcess > 1 then
return
end
if PlayerData.Guide:GetGuideState() then
return
end
+111 -20
View File
@@ -77,7 +77,23 @@ FormationCtrl._mapNodeConfig = {
rtThemePrevRoot = {},
rtSlectedChar = {
sComponentName = "RectTransform"
}
},
goPreselection = {},
btnPreselection = {
sComponentName = "UIButton",
callback = "OnBtnClick_Preselection"
},
txtBtnPreselection = {
sComponentName = "TMP_Text",
sLanguageId = "Build_Preselection_Btn"
},
imgPreSelected = {sComponentName = "Button"},
txtPreSelect = {sComponentName = "TMP_Text"},
btnPreDetail = {
sComponentName = "UIButton",
callback = "OnBtnClick_PreDetail"
},
imgBgDetail = {}
}
FormationCtrl._mapEventConfig = {
[EventId.FormationLoadModel] = "OnEvent_LoadModel",
@@ -94,6 +110,7 @@ function FormationCtrl:Refresh(nDirection)
local _, tbTeamMemberId
if not self.bTrialLevel then
_, tbTeamMemberId = PlayerData.Team:GetTeamData(self._panel.nTeamIndex)
self.nPreselectionId = PlayerData.Team:GetTeamPreselectionId(self._panel.nTeamIndex)
self.curTeam = {}
for _, value in ipairs(tbTeamMemberId) do
table.insert(self.curTeam, value)
@@ -105,6 +122,7 @@ function FormationCtrl:Refresh(nDirection)
self.curTeam = mapMainline.TrialCharacter
end
self:RefreshChar(nDirection)
self:RefreshPreselection()
end
function FormationCtrl:RefreshPoint(nIndex)
for i = 1, 6 do
@@ -184,6 +202,22 @@ function FormationCtrl:EnterMainline()
end
function FormationCtrl:EnterStarTower()
local nTeamIdx = self._panel.nTeamIndex
local EnterDiscSelect = function()
local teamIDs = {}
local _, tbTeamMemberId = PlayerData.Team:GetTeamData(nTeamIdx)
for i = 1, #tbTeamMemberId do
if tbTeamMemberId[i] ~= nil and 0 < tbTeamMemberId[i] then
table.insert(teamIDs, tbTeamMemberId[i])
end
end
if #teamIDs == 3 then
EventManager.Hit(EventId.OpenPanel, PanelId.MainlineFormationDisc, self.curRoguelikeId, self._panel.nTeamIndex, self.bSweep, self.nPreselectionId)
self:SetLocalData()
else
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("FRFORMATION_01"))
self._mapNode.btnStartBattle.enabled = true
end
end
local CheckBuildCountCallBack = function(nBuildCount)
local nMaxBuildCount = ConfigTable.GetConfigNumber("StarTowerBuildNumberMax")
if nBuildCount >= nMaxBuildCount then
@@ -192,7 +226,7 @@ function FormationCtrl:EnterStarTower()
self._mapNode.btnStartBattle.enabled = true
end
local cancelCallback = function()
EventManager.Hit(EventId.OpenPanel, PanelId.MainlineFormationDisc, self.curRoguelikeId, self._panel.nTeamIndex, self.bSweep)
EnterDiscSelect()
end
local msg = {
nType = AllEnum.MessageBox.Confirm,
@@ -205,29 +239,52 @@ function FormationCtrl:EnterStarTower()
EventManager.Hit(EventId.OpenMessageBox, msg)
return
else
local teamIDs = {}
local _, tbTeamMemberId = PlayerData.Team:GetTeamData(nTeamIdx)
for i = 1, #tbTeamMemberId do
if tbTeamMemberId[i] ~= nil and 0 < tbTeamMemberId[i] then
table.insert(teamIDs, tbTeamMemberId[i])
end
end
if #teamIDs == 3 then
EventManager.Hit(EventId.OpenPanel, PanelId.MainlineFormationDisc, self.curRoguelikeId, self._panel.nTeamIndex, self.bSweep)
self:SetLocalData()
else
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("FRFORMATION_01"))
self._mapNode.btnStartBattle.enabled = true
end
EnterDiscSelect()
end
end
PlayerData.Build:GetBuildCount(CheckBuildCountCallBack)
end
function FormationCtrl:RefreshPreselection()
local callback = function()
if self.nPreselectionId == 0 then
NovaAPI.SetTMPText(self._mapNode.txtPreSelect, ConfigTable.GetUIText("Build_Preselection_Empty"))
self._mapNode.imgPreSelected.interactable = true
self._mapNode.imgBgDetail.gameObject:SetActive(false)
else
self._mapNode.imgBgDetail.gameObject:SetActive(true)
local bDiff = false
local mapPreselection = PlayerData.PotentialPreselection:GetPreselectionById(self.nPreselectionId)
if mapPreselection ~= nil then
for k, v in ipairs(mapPreselection.tbCharPotential) do
if k == 1 then
if v.nCharId ~= self.curTeam[1] then
bDiff = true
break
end
elseif table.indexof(self.curTeam, v.nCharId) == 0 then
bDiff = true
break
end
end
end
if bDiff then
NovaAPI.SetTMPText(self._mapNode.txtPreSelect, ConfigTable.GetUIText("Build_Preselection_CharDiff"))
self._mapNode.imgPreSelected.interactable = false
else
NovaAPI.SetTMPText(self._mapNode.txtPreSelect, ConfigTable.GetUIText("Build_Preselection_Selected"))
self._mapNode.imgPreSelected.interactable = true
end
end
end
PlayerData.PotentialPreselection:SendGetPreselectionList(callback)
end
function FormationCtrl:Awake()
self.isOpenTeamMember = false
self:CheckBannedChar(true)
self._panel.nLoadProcess = 0
end
function FormationCtrl:OnEnable()
self.nPreselectionId = 0
local mapSelectedMainlineId = PlayerData.Mainline._nSelectId
self._mapNode.goLoadMask:SetActive(true)
self._Animator = self.gameObject:GetComponent("Animator")
@@ -240,7 +297,7 @@ function FormationCtrl:OnEnable()
if self.nFRType == AllEnum.FormationEnterType.MainLine then
local mapMainline = ConfigTable.GetData_Mainline(mapSelectedMainlineId)
local tbTeamMemberId, nCaptain
if mapMainline.TrialCharacter ~= nil and #mapMainline.TrialCharacter > 0 then
if mapMainline.TrialCharacter ~= nil and 0 < #mapMainline.TrialCharacter then
tbTeamMemberId = mapMainline.TrialCharacter
self.mapTrialChar = PlayerData.Char:CreateTrialChar(tbTeamMemberId)
self.bTrialLevel = true
@@ -267,6 +324,7 @@ function FormationCtrl:OnEnable()
self._mapNode.btnFastFormation.gameObject:SetActive(not self.bTrialLevel)
self._mapNode.rt_TeamName.gameObject:SetActive(not self.bTrialLevel)
self._mapNode.TMPHintTrial.gameObject:SetActive(self.bTrialLevel)
self._mapNode.goPreselection.gameObject:SetActive(not self.bTrialLevel)
self._mapNode.t_arrow_01:SetActive(not self.bTrialLevel)
local sSceneName = self.nFRType ~= AllEnum.FormationEnterType.MainLine and ConfigTable.GetConfigValue("SelectRole_Rogue") or ConfigTable.GetConfigValue("SelectRole_Main")
self.mapCurModel = {}
@@ -357,6 +415,7 @@ function FormationCtrl:LoadCharacter(nCharId, bOpen)
if self._mapNode == nil then
return
end
self._panel.nLoadProcess = self._panel.nLoadProcess - 1
local idx = table.indexof(self.curTeam, nCharId)
if 0 < idx then
if self.mapCurModel[idx] ~= nil then
@@ -365,6 +424,7 @@ function FormationCtrl:LoadCharacter(nCharId, bOpen)
self.mapCurModel[idx] = nil
end
local go = instantiate(obj, self.rtSceneOriginPos)
NovaAPI.ChangeAnimatorDefaultState(go.transform)
self.mapCurModel[idx] = {nCharId = nCharId, model = go}
NovaAPI.BindUIParallaxStageCameraControllerModel(self._mapNode.UIParallax3DStage, idx - 1, go)
if self.rtSceneOriginPos ~= nil then
@@ -385,6 +445,7 @@ function FormationCtrl:LoadCharacter(nCharId, bOpen)
end
end
end
self._panel.nLoadProcess = self._panel.nLoadProcess + 1
self:LoadAssetAsync(sFullPath, typeof(GameObject), LoadModelCallback)
end
function FormationCtrl:SetModelPos(nCharId, objModel, nPos)
@@ -727,7 +788,8 @@ function FormationCtrl:OnBtnClick_FastFormation(btn)
end
end
local tmpDisc = PlayerData.Team:GetTeamDiscData(self._panel.nTeamIndex)
PlayerData.Team:UpdateFormationInfo(self._panel.nTeamIndex, self.curTeam, tmpDisc, Callback)
local nPreselectionId = PlayerData.Team:GetTeamPreselectionId(self._panel.nTeamIndex)
PlayerData.Team:UpdateFormationInfo(self._panel.nTeamIndex, self.curTeam, tmpDisc, nPreselectionId, Callback)
end
end
local cancelCallback = function()
@@ -755,6 +817,9 @@ function FormationCtrl:SetLocalData()
LocalData.SetPlayerLocalData("SavedTeamIdx", self._panel.nTeamIndex)
end
function FormationCtrl:OnBtnClick_Start(btn)
if self._panel.nLoadProcess ~= nil and self._panel.nLoadProcess > 1 then
return
end
self._mapNode.btnStartBattle.enabled = false
if self.nFRType == AllEnum.FormationEnterType.MainLine then
self:EnterMainline()
@@ -765,10 +830,27 @@ function FormationCtrl:OnBtnClick_Start(btn)
end
NovaAPI.SetEntryLevelFade(true)
end
function FormationCtrl:OnBtnClick_Preselection()
PlayerData.PotentialPreselection:SendGetPreselectionList(function()
EventManager.Hit(EventId.OpenPanel, PanelId.PotentialPreselectionList, self.curTeam, self._panel.nTeamIndex)
end)
end
function FormationCtrl:OnBtnClick_PreDetail()
if self.nPreselectionId == 0 then
return
end
PlayerData.PotentialPreselection:SendGetPreselectionList(function()
local mapData = PlayerData.PotentialPreselection:GetPreselectionById(self.nPreselectionId)
EventManager.Hit(EventId.OpenPanel, PanelId.PotentialPreselectionEdit, AllEnum.PreselectionPanelType.Preview, mapData, self.curTeam, self._panel.nTeamIndex)
end)
end
function FormationCtrl:OnEvent_LoadModel(bLoadFinish)
self._mapNode.Mask:SetActive(not bLoadFinish)
end
function FormationCtrl:OnEvent_Back(nPanelId)
if self._panel.nLoadProcess ~= nil and self._panel.nLoadProcess > 1 then
return
end
if self._panel._nPanelId ~= nPanelId then
return
end
@@ -785,6 +867,10 @@ function FormationCtrl:OnEvent_Back(nPanelId)
end
end
function FormationCtrl:OnEvent_BackHome(nPanelId)
if self._panel.nLoadProcess ~= nil and self._panel.nLoadProcess > 1 then
print(self._panel.nLoadProcess)
return
end
if self._panel._nPanelId ~= nPanelId then
return
end
@@ -800,6 +886,7 @@ function FormationCtrl:OnEvent_OpenSelectTeamMemberList(nIdx)
self._mapNode.btnFastFormation.gameObject:SetActive(false)
self._mapNode.btnStartBattle.transform.localScale = Vector3.zero
self._mapNode.t_arrow_01.gameObject:SetActive(false)
self._mapNode.goPreselection.gameObject:SetActive(false)
NovaAPI.SetCanvasGroupAlpha(self._mapNode.rt_TeamNameAlpha, 0)
self._mapNode.CharList:ShowList(self.curTeam, true)
self._panel.bList = true
@@ -816,7 +903,8 @@ function FormationCtrl:OnEvent_CloseList(bConfirm, tbList)
self.curTeam = tbList
if self:CheckFormationChanged() then
local tmpDisc = PlayerData.Team:GetTeamDiscData(self._panel.nTeamIndex)
PlayerData.Team:UpdateFormationInfo(self._panel.nTeamIndex, self.curTeam, tmpDisc, Callback)
local nPreselectionId = PlayerData.Team:GetTeamPreselectionId(self._panel.nTeamIndex)
PlayerData.Team:UpdateFormationInfo(self._panel.nTeamIndex, self.curTeam, tmpDisc, nPreselectionId, Callback)
end
else
self:Refresh()
@@ -825,6 +913,7 @@ function FormationCtrl:OnEvent_CloseList(bConfirm, tbList)
self._mapNode.btnFastFormation.gameObject:SetActive(true)
self._mapNode.btnStartBattle.transform.localScale = Vector3.one
self._mapNode.t_arrow_01.gameObject:SetActive(true)
self._mapNode.goPreselection.gameObject:SetActive(true)
NovaAPI.SetCanvasGroupAlpha(self._mapNode.rt_TeamNameAlpha, 1)
self._mapNode.CharList:CloseList()
end
@@ -841,6 +930,7 @@ end
function FormationCtrl:OnEvent_ChangeTeamModel(tbList)
self.curTeam = tbList
self:RefreshChar()
self:RefreshPreselection()
end
function FormationCtrl:OnEvent_OpenSwapChar(nIdx)
local callback = function(nSwapIdx)
@@ -865,7 +955,8 @@ function FormationCtrl:OnEvent_OpenSwapChar(nIdx)
end
if self:CheckFormationChanged() then
local tmpDisc = PlayerData.Team:GetTeamDiscData(self._panel.nTeamIndex)
PlayerData.Team:UpdateFormationInfo(self._panel.nTeamIndex, self.curTeam, tmpDisc, Callback)
local nPreselectionId = PlayerData.Team:GetTeamPreselectionId(self._panel.nTeamIndex)
PlayerData.Team:UpdateFormationInfo(self._panel.nTeamIndex, self.curTeam, tmpDisc, nPreselectionId, Callback)
end
end
local nCurSelectChar = self.curTeam[nIdx]