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
This commit is contained in:
SL1900
2026-07-21 12:30:00 +09:00
parent a12087abad
commit 8c4bd41668
1334 changed files with 873026 additions and 95164 deletions
@@ -0,0 +1,148 @@
local SoldierHandbookCardDetailCtrl = class("SoldierHandbookCardDetailCtrl", BaseCtrl)
local RootPath = "Icon/SoldierBuffCard/"
SoldierHandbookCardDetailCtrl._mapNodeConfig = {
img_detailIcon = {sComponentName = "Image"},
txt_name = {sComponentName = "TMP_Text"},
txt_desc = {sComponentName = "TMP_Text"},
go_charListRoot = {},
txt_charTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Detail_CharTitle"
},
btnListChar = {},
charList = {},
Btn_ListChar = {nCount = 3},
tc_char_small = {
nCount = 3,
sCtrlName = "Game.UI.Soldier.Template.Character.SoldierCharItemCtrl"
},
sv_char = {
sComponentName = "LoopScrollView"
}
}
SoldierHandbookCardDetailCtrl._mapEventConfig = {}
SoldierHandbookCardDetailCtrl._mapRedDotConfig = {}
function SoldierHandbookCardDetailCtrl:Awake()
self.mapCharItemCtrl = {}
end
function SoldierHandbookCardDetailCtrl:OnDestroy()
self:Clear()
end
function SoldierHandbookCardDetailCtrl:Clear()
if self.mapCharItemCtrl ~= nil then
for _, v in ipairs(self.mapCharItemCtrl) do
self:UnbindCtrlByNode(v)
end
self.mapCharItemCtrl = {}
end
end
function SoldierHandbookCardDetailCtrl:RefreshStarterCardDetail(nStarterCardId)
if self.animator == nil then
self.animator = self.gameObject:GetComponent("Animator")
end
self.animator:Play("StarterCardDetail_in")
self.tbCharList = {}
local starterCardConfig = ConfigTable.GetData("SoldierStarterCard", nStarterCardId)
if starterCardConfig == nil then
return
end
self:SetPngSprite(self._mapNode.img_detailIcon, RootPath .. starterCardConfig.Icon)
NovaAPI.SetTMPText(self._mapNode.txt_name, starterCardConfig.Name)
NovaAPI.SetTMPText(self._mapNode.txt_desc, UTILS.ParseDesc(starterCardConfig))
self.tbCharList = starterCardConfig.CharacterShow
self._mapNode.go_charListRoot:SetActive(#self.tbCharList > 0)
if #self.tbCharList > 0 then
self._mapNode.charList:SetActive(#self.tbCharList > 3)
self._mapNode.btnListChar:SetActive(#self.tbCharList <= 3)
if #self.tbCharList > 3 then
self._mapNode.sv_char:Init(#self.tbCharList, self, self.OnCharRefreshGrid, self.OnCharGridBtnClick, false)
else
for i = 1, 3 do
local btn_char = self._mapNode.Btn_ListChar[i]
if i <= #self.tbCharList then
local btn = self._mapNode.tc_char_small[i].gameObject:GetComponent("UIButton")
local charId = self.tbCharList[i]
self._mapNode.tc_char_small[i]:SetItemData(charId)
self._mapNode.tc_char_small[i]:SetCharLevel(0)
btn.onClick:RemoveAllListeners()
btn.onClick:AddListener(function()
local chessData = {nId = charId, nStar = 1}
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharCardTips, self._mapNode.tc_char_small[i].gameObject.transform, chessData)
end)
end
btn_char:SetActive(i <= #self.tbCharList)
end
end
end
end
function SoldierHandbookCardDetailCtrl:RefreshStrategyCardDetail(nStrategyCardId)
if self.animator == nil then
self.animator = self.gameObject:GetComponent("Animator")
end
self.animator:Play("SoldierHandbookPanelStrategyDetail_in")
self.tbCharList = {}
local strategyCardConfig = ConfigTable.GetData("SoldierStrategyCard", nStrategyCardId)
if strategyCardConfig == nil then
return
end
local imgBg_Gold = self.gameObject.transform:Find("AnimRoot/imgBg_Gold")
local imgBg_Silver = self.gameObject.transform:Find("AnimRoot/imgBg_Silver")
local imgBg_Copper = self.gameObject.transform:Find("AnimRoot/imgBg_Copper")
imgBg_Gold.gameObject:SetActive(strategyCardConfig.Rarity == GameEnum.itemRarity.R)
imgBg_Silver.gameObject:SetActive(strategyCardConfig.Rarity == GameEnum.itemRarity.M)
imgBg_Copper.gameObject:SetActive(strategyCardConfig.Rarity == GameEnum.itemRarity.N)
self:SetPngSprite(self._mapNode.img_detailIcon, RootPath .. strategyCardConfig.Icon)
NovaAPI.SetTMPText(self._mapNode.txt_name, strategyCardConfig.Name)
NovaAPI.SetTMPText(self._mapNode.txt_desc, strategyCardConfig.Desc)
self.tbCharList = strategyCardConfig.CharacterShow
self._mapNode.go_charListRoot:SetActive(#self.tbCharList > 0)
if #self.tbCharList > 0 then
self._mapNode.charList:SetActive(#self.tbCharList > 3)
self._mapNode.btnListChar:SetActive(#self.tbCharList <= 3)
if #self.tbCharList > 3 then
self._mapNode.sv_char:Init(#self.tbCharList, self, self.OnCharRefreshGrid, self.OnCharGridBtnClick, false)
else
for i = 1, 3 do
local btn_char = self._mapNode.Btn_ListChar[i]
if i <= #self.tbCharList then
local btn = self._mapNode.tc_char_small[i].gameObject:GetComponent("UIButton")
local charId = self.tbCharList[i]
self._mapNode.tc_char_small[i]:SetItemData(charId)
self._mapNode.tc_char_small[i]:SetCharLevel(0)
btn.onClick:RemoveAllListeners()
btn.onClick:AddListener(function()
local chessData = {nId = charId, nStar = 1}
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharCardTips, self._mapNode.tc_char_small[i].gameObject.transform, chessData)
end)
end
btn_char:SetActive(i <= #self.tbCharList)
end
end
end
end
function SoldierHandbookCardDetailCtrl:OnCharRefreshGrid(goGrid, gridIndex)
local nIndex = gridIndex + 1
local charId = self.tbCharList[nIndex]
local go_char = goGrid.transform:Find("tc_char_small")
local nInstanceId = go_char:GetInstanceID()
if not self.mapCharItemCtrl[nInstanceId] then
self.mapCharItemCtrl[nInstanceId] = self:BindCtrlByNode(go_char, "Game.UI.Soldier.Template.Character.SoldierCharItemCtrl")
end
self.mapCharItemCtrl[nInstanceId]:SetItemData(charId)
self.mapCharItemCtrl[nInstanceId]:SetCharLevel(0)
local btn = go_char.gameObject:GetComponent("UIButton")
btn.onClick:RemoveAllListeners()
btn.onClick:AddListener(function()
local chessData = {nId = charId, nStar = 1}
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharCardTips, goGrid.transform, chessData)
end)
end
function SoldierHandbookCardDetailCtrl:OnCharGridBtnClick(goGrid, gridIndex)
local nIndex = gridIndex + 1
local charId = self.tbCharList[nIndex]
local chessData = {nId = charId, nStar = 1}
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharCardTips, goGrid.transform, chessData)
end
function SoldierHandbookCardDetailCtrl:OnEvent_AAA()
end
return SoldierHandbookCardDetailCtrl
@@ -0,0 +1,147 @@
local SoldierHandbookCharCtrl = class("SoldierHandbookCharCtrl", BaseCtrl)
local tabType = {
All = 1,
Gold = 2,
Purple = 3,
Blue = 4,
Green = 5,
White = 6
}
local tab2ChessRarity = {
[tabType.All] = 1,
[tabType.Gold] = GameEnum.ChessRarity.Gold,
[tabType.Purple] = GameEnum.ChessRarity.Purple,
[tabType.Blue] = GameEnum.ChessRarity.Blue,
[tabType.Green] = GameEnum.ChessRarity.Green,
[tabType.White] = GameEnum.ChessRarity.White
}
SoldierHandbookCharCtrl._mapNodeConfig = {
btn_tab = {
nCount = 6,
sComponentName = "UIButton",
callback = "OnBtnClick_Tab"
},
tab_On = {nCount = 6},
tab_Off = {nCount = 6},
sv_loop = {
sComponentName = "LoopScrollView"
},
DetailCtrl = {
sNodeName = "DetailRoot",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierHandbookCharDetailCtrl"
}
}
SoldierHandbookCharCtrl._mapEventConfig = {}
SoldierHandbookCharCtrl._mapRedDotConfig = {}
function SoldierHandbookCharCtrl:OnDestroy()
self:Clear()
end
function SoldierHandbookCharCtrl:Clear()
if self.tbItemCtrl ~= nil then
for _, v in ipairs(self.tbItemCtrl) do
self:UnbindCtrlByNode(v)
end
self.tbItemCtrl = {}
end
self._mapNode.DetailCtrl:Clear()
end
function SoldierHandbookCharCtrl:Init()
self.tbItemCtrl = {}
self:InitCharList()
self:SwitchToTab(tabType.All, true)
end
function SoldierHandbookCharCtrl:InitCharList()
self.tbAllChar = {}
self.mapCharByRarity = {}
local actData = PlayerData.Activity:GetActivityDataByType(GameEnum.activityType.Soldier)
if actData == nil then
return
end
local nActId = actData:GetActId()
local seasonConfig = ConfigTable.GetData("SoldierSeason", nActId)
if seasonConfig == nil then
return
end
local func_ForEach_Char = function(mapCharData)
if mapCharData.BoardChess and seasonConfig.ChessGroupId == mapCharData.GroupId then
table.insert(self.tbAllChar, mapCharData)
if self.mapCharByRarity[mapCharData.Rarity] == nil then
self.mapCharByRarity[mapCharData.Rarity] = {}
end
table.insert(self.mapCharByRarity[mapCharData.Rarity], mapCharData)
end
end
ForEachTableLine(DataTable.SoldierCharacter, func_ForEach_Char)
table.sort(self.tbAllChar, function(a, b)
if a.Rarity == b.Rarity then
return a.Id < b.Id
end
return a.Rarity > b.Rarity
end)
for nRarity, tbChar in pairs(self.mapCharByRarity) do
table.sort(tbChar, function(a, b)
return a.Id < b.Id
end)
end
end
function SoldierHandbookCharCtrl:RefreshCharList()
if self.tbItemCtrl ~= nil then
for _, v in ipairs(self.tbItemCtrl) do
self:UnbindCtrlByNode(v)
end
self.tbItemCtrl = nil
end
self.tbItemCtrl = {}
self.tbCurCharList = {}
self.nSelectIndex = 1
if self.nCurTab == tabType.All then
self.tbCurCharList = self.tbAllChar
else
self.tbCurCharList = self.mapCharByRarity[tab2ChessRarity[self.nCurTab]]
end
self._mapNode.sv_loop:Init(#self.tbCurCharList, self, self.OnCharRefreshGrid, self.OnCharGridBtnClick, false)
EventManager.Hit("SoldierHandbookChar_Selected", self.tbCurCharList[self.nSelectIndex].Id)
self:RefreshDetail()
end
function SoldierHandbookCharCtrl:OnCharRefreshGrid(goGrid, gridIndex)
local nIndex = gridIndex + 1
local nInstanceId = goGrid:GetInstanceID()
if not self.tbItemCtrl[nInstanceId] then
self.tbItemCtrl[nInstanceId] = self:BindCtrlByNode(goGrid, "Game.UI.Soldier.Handbook.SoldierHandbookCharItemCtrl")
end
self.tbItemCtrl[nInstanceId]:SetItemData(self.tbCurCharList[nIndex], self.nSelectIndex == nIndex)
end
function SoldierHandbookCharCtrl:OnCharGridBtnClick(goGrid, gridIndex)
local nIndex = gridIndex + 1
self.nSelectIndex = nIndex
EventManager.Hit("SoldierHandbookChar_Selected", self.tbCurCharList[self.nSelectIndex].Id)
self:RefreshDetail()
end
function SoldierHandbookCharCtrl:SwitchToTab(nTab, bForce)
if self.nCurTab == nTab and not bForce then
return
end
if self.nCurTab ~= nil then
self._mapNode.tab_Off[self.nCurTab]:SetActive(true)
self._mapNode.tab_On[self.nCurTab]:SetActive(false)
else
for i = 1, 6 do
self._mapNode.tab_Off[i]:SetActive(true)
self._mapNode.tab_On[i]:SetActive(false)
end
end
self.nCurTab = nTab
self._mapNode.tab_On[self.nCurTab]:SetActive(true)
self._mapNode.tab_Off[self.nCurTab]:SetActive(false)
self:RefreshCharList()
end
function SoldierHandbookCharCtrl:RefreshDetail()
self._mapNode.DetailCtrl:RefreshDetail(self.tbCurCharList[self.nSelectIndex].Id)
end
function SoldierHandbookCharCtrl:OnBtnClick_Tab(btn, nIndex)
if nIndex == self.nCurTab then
return
end
self:SwitchToTab(nIndex)
end
return SoldierHandbookCharCtrl
@@ -0,0 +1,274 @@
local SoldierHandbookCharDetailCtrl = class("SoldierHandbookCharDetailCtrl", BaseCtrl)
local SoldierAttrData = require("GameCore.Data.DataClass.Soldier.SoldierAttrData")
local RootPath = "Icon/SoldierOtherIcon/"
local PartnerPath = "Icon/SoldierPartner/"
local tabType = {Vanguard = 1, Support = 2}
local barMax = 512
local ColorChessRarity = {
[GameEnum.ChessRarity.Gold] = Color(0.996078431372549, 0.8, 0.5333333333333333, 1),
[GameEnum.ChessRarity.Purple] = Color(0.792156862745098, 0.6823529411764706, 0.9803921568627451, 1),
[GameEnum.ChessRarity.Blue] = Color(0.6274509803921569, 0.7843137254901961, 0.996078431372549, 1),
[GameEnum.ChessRarity.Green] = Color(0.8470588235294118, 0.9098039215686274, 0.7137254901960784, 1),
[GameEnum.ChessRarity.White] = Color(0.8352941176470589, 0.8666666666666667, 0.9254901960784314, 1)
}
SoldierHandbookCharDetailCtrl._mapNodeConfig = {
imgBg_Rare = {sComponentName = "Image"},
img_Rare = {sComponentName = "Image"},
txt_name = {sComponentName = "TMP_Text"},
txt_cost = {sComponentName = "TMP_Text"},
icon_Position = {sComponentName = "Image"},
txt_Position = {sComponentName = "TMP_Text"},
Partner = {nCount = 3},
property_hp = {},
property_sp = {},
property_atk = {},
property_def = {},
btn_Vanguard = {
sComponentName = "UIButton",
callback = "OnBtnClick_Vanguard"
},
go_Vanguard_on = {},
go_Vanguard_off = {},
txt_Vanguard = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Vanguard_Skill"
},
btn_Support = {
sComponentName = "UIButton",
callback = "OnBtnClick_Support"
},
go_Support_on = {},
go_Support_off = {},
txt_Support = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Support_Skill"
},
txt_skillTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_SkillTitle"
},
txt_potentialTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_PotentialTitle"
},
sv_Skill = {
sComponentName = "LoopScrollView"
},
sv_Potential = {
sComponentName = "LoopScrollView"
},
btn_charDetail = {
sComponentName = "UIButton",
callback = "OnBtnClick_CharDetail"
},
txtBtnCharDetail = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_CharDetail"
},
rtTipsPos = {
sComponentName = "RectTransform"
}
}
SoldierHandbookCharDetailCtrl._mapEventConfig = {}
SoldierHandbookCharDetailCtrl._mapRedDotConfig = {}
function SoldierHandbookCharDetailCtrl:Awake()
self.tbSkillItemCtrl = {}
self.tbPotentialItemCtrl = {}
end
function SoldierHandbookCharDetailCtrl:OnDestroy()
self:Clear()
end
function SoldierHandbookCharDetailCtrl:Clear()
if self.tbSkillItemCtrl ~= nil then
for _, v in ipairs(self.tbSkillItemCtrl) do
self:UnbindCtrlByNode(v)
end
self.tbSkillItemCtrl = {}
end
if self.tbPotentialItemCtrl ~= nil then
for _, v in ipairs(self.tbPotentialItemCtrl) do
self:UnbindCtrlByNode(v)
end
self.tbPotentialItemCtrl = {}
end
end
function SoldierHandbookCharDetailCtrl:RefreshDetail(nCharId)
if self.animator == nil then
self.animator = self.gameObject:GetComponent("Animator")
end
self.animator:Play("CharDetail_in")
if self.tbSkillItemCtrl ~= nil then
for _, v in ipairs(self.tbSkillItemCtrl) do
self:UnbindCtrlByNode(v)
end
self.tbSkillItemCtrl = {}
end
if self.tbPotentialItemCtrl ~= nil then
for _, v in ipairs(self.tbPotentialItemCtrl) do
self:UnbindCtrlByNode(v)
end
self.tbPotentialItemCtrl = {}
end
self.nCharId = nCharId
self.charConfig = ConfigTable.GetData("SoldierCharacter", self.nCharId)
if self.charConfig == nil then
return
end
self.skinConfig = ConfigTable.GetData("SoldierSkin", self.charConfig.Skin)
if self.skinConfig == nil then
return
end
self:SetPngSprite(self._mapNode.imgBg_Rare, RootPath .. AllEnum.SoldierChessRarityIcon[self.charConfig.Rarity] .. AllEnum.SoldierChessIconSurfix.XL)
NovaAPI.SetImageColor(self._mapNode.img_Rare, ColorChessRarity[self.charConfig.Rarity])
NovaAPI.SetTMPText(self._mapNode.txt_name, self.skinConfig.Name)
NovaAPI.SetTMPText(self._mapNode.txt_cost, self.charConfig.Cost)
local nChessType = self.charConfig.Type
local tbChessTypeConfig = CacheTable.GetData("_SoldierChessType", nChessType)
if tbChessTypeConfig ~= nil then
self:SetPngSprite(self._mapNode.icon_Position, RootPath .. tbChessTypeConfig.Icon)
NovaAPI.SetTMPText(self._mapNode.txt_Position, tbChessTypeConfig.Name)
end
local _, tbAttrMap = SoldierAttrData.CalcCharacterAttr(self.nCharId, 1, nil, nil)
local txt_hp = self._mapNode.property_hp.transform:Find("txtValue"):GetComponent("TMP_Text")
local hp = tbAttrMap.Hp
NovaAPI.SetTMPText(txt_hp, hp.nValue .. "/" .. hp.nValue)
local imgMainBarFill = self._mapNode.property_sp.transform:Find("imgBarBg/rtBarFill/imgMainBarFill"):GetComponent("Image")
local txt_sp = self._mapNode.property_sp.transform:Find("txtValue"):GetComponent("TMP_Text")
local sp = tbAttrMap.InitialEnergy
local spMax = tbAttrMap.Energy
NovaAPI.SetTMPText(txt_sp, sp.nValue .. "/" .. spMax.nValue)
imgMainBarFill.rectTransform.sizeDelta = Vector2(sp.nValue / spMax.nValue * barMax, imgMainBarFill.rectTransform.sizeDelta.y)
local txt_defName = self._mapNode.property_def.transform:Find("txtProperty"):GetComponent("TMP_Text")
local txt_def = self._mapNode.property_def.transform:Find("txtValue2"):GetComponent("TMP_Text")
local def = tbAttrMap.Def
NovaAPI.SetTMPText(txt_def, def.nValue)
NovaAPI.SetTMPText(txt_defName, ConfigTable.GetUIText(def.sLanguageId))
local txt_atkName = self._mapNode.property_atk.transform:Find("txtProperty"):GetComponent("TMP_Text")
local txt_atk = self._mapNode.property_atk.transform:Find("txtValue2"):GetComponent("TMP_Text")
local atkValue = tbAttrMap.Atk
NovaAPI.SetTMPText(txt_atkName, ConfigTable.GetUIText(atkValue.sLanguageId))
NovaAPI.SetTMPText(txt_atk, atkValue.nValue)
self:InitPartner()
self:SwitchTab(tabType.Vanguard, true)
end
function SoldierHandbookCharDetailCtrl:InitPartner()
local partnerType = self.charConfig.PartnerType
for i = 1, 3 do
self._mapNode.Partner[i]:SetActive(false)
end
for i = 1, 3 do
if i > #partnerType then
return
end
local configPartner = CacheTable.GetData("_SoldierPartnerGroup", partnerType[i])
if configPartner == nil then
return
end
local icon = self._mapNode.Partner[i].transform:Find("imgIcon"):GetComponent("Image")
local txt_Partner = self._mapNode.Partner[i].transform:Find("txt_Partner"):GetComponent("TMP_Text")
self:SetPngSprite(icon, PartnerPath .. configPartner.Icon .. AllEnum.SoldierChessIconSurfix.M)
NovaAPI.SetTMPText(txt_Partner, configPartner.Name)
self._mapNode.Partner[i]:SetActive(true)
end
end
function SoldierHandbookCharDetailCtrl:SwitchTab(nTab, bForce)
if self.nCurTab == nTab and not bForce then
return
end
self.nCurTab = nTab
self._mapNode.go_Vanguard_on:SetActive(self.nCurTab == tabType.Vanguard)
self._mapNode.go_Vanguard_off:SetActive(self.nCurTab ~= tabType.Vanguard)
self._mapNode.go_Support_on:SetActive(self.nCurTab == tabType.Support)
self._mapNode.go_Support_off:SetActive(self.nCurTab ~= tabType.Support)
if self.nCurTab == tabType.Vanguard then
self:InitVanguard()
else
self:InitSupport()
end
end
function SoldierHandbookCharDetailCtrl:InitVanguard()
self.tbVanguardSkill = {}
table.insert(self.tbVanguardSkill, self.charConfig.Skill)
self._mapNode.sv_Skill:Init(#self.tbVanguardSkill, self, self.OnSkillRefreshGrid, self.OnSkillBtnClick, false)
self.tbVanguardPotential = {}
for i = 1, 4 do
local potentialList = self.charConfig["Potential" .. tostring(i)]
for _, potentialId in ipairs(potentialList) do
table.insert(self.tbVanguardPotential, {nId = potentialId, nStar = i})
end
end
self._mapNode.sv_Potential:Init(#self.tbVanguardPotential, self, self.OnPotentialRefreshGrid)
end
function SoldierHandbookCharDetailCtrl:OnSkillRefreshGrid(goGrid, gridIndex)
local nIndex = gridIndex + 1
local skillId = 0
if self.nCurTab == tabType.Vanguard then
skillId = self.tbVanguardSkill[nIndex]
else
skillId = self.tbSupportSkill[nIndex]
end
local nInstanceId = goGrid:GetInstanceID()
if not self.tbSkillItemCtrl[nInstanceId] then
self.tbSkillItemCtrl[nInstanceId] = self:BindCtrlByNode(goGrid, "Game.UI.TemplateEx.TemplateSkillCharCtrl")
end
local nSkillIndex = 2
if self.nCurTab == tabType.Vanguard then
nSkillIndex = 2
else
nSkillIndex = 3
end
self.tbSkillItemCtrl[nInstanceId]:SetSkill(skillId, nSkillIndex, 1, GameEnum.elementType.DE, false)
local btnSkill = goGrid:GetComponent("UIButton")
if btnSkill then
btnSkill.onClick:RemoveAllListeners()
btnSkill.onClick:AddListener(function()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharSkillPreview, self.nCharId, nSkillIndex)
end)
end
end
function SoldierHandbookCharDetailCtrl:OnSkillBtnClick(goGrid, gridIndex)
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharSkillPreview, self.nCharId)
end
function SoldierHandbookCharDetailCtrl:OnPotentialRefreshGrid(goGrid, gridIndex)
local nIndex = gridIndex + 1
local potential = self.tbVanguardPotential[nIndex]
local nInstanceId = goGrid:GetInstanceID()
if not self.tbPotentialItemCtrl[nInstanceId] then
self.tbPotentialItemCtrl[nInstanceId] = self:BindCtrlByNode(goGrid, "Game.UI.Soldier.Template.SoldierPotentialItemCtrl")
end
self.tbPotentialItemCtrl[nInstanceId]:SetItemData(potential.nId, potential.nStar)
local btnPotential = goGrid.transform:Find("btnItem"):GetComponent("UIButton")
if btnPotential then
btnPotential.onClick:RemoveAllListeners()
btnPotential.onClick:AddListener(function()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharPontentialDetailPanel, self._mapNode.rtTipsPos, potential.nId)
end)
end
end
function SoldierHandbookCharDetailCtrl:InitSupport()
self.tbSupportSkill = {}
table.insert(self.tbSupportSkill, self.charConfig.Support)
self._mapNode.sv_Skill:Init(#self.tbSupportSkill, self, self.OnSkillRefreshGrid, self.OnSkillBtnClick, false)
self.tbVanguardPotential = {}
for i = 1, 4 do
local potentialList = self.charConfig["Potential" .. tostring(i)]
for _, potentialId in ipairs(potentialList) do
table.insert(self.tbVanguardPotential, {nId = potentialId, nStar = i})
end
end
self._mapNode.sv_Potential:Init(#self.tbVanguardPotential, self, self.OnPotentialRefreshGrid)
end
function SoldierHandbookCharDetailCtrl:OnBtnClick_Vanguard()
self:SwitchTab(tabType.Vanguard)
end
function SoldierHandbookCharDetailCtrl:OnBtnClick_Support()
self:SwitchTab(tabType.Support)
end
function SoldierHandbookCharDetailCtrl:OnBtnClick_CharDetail()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharAttriTips, self.nCharId)
end
function SoldierHandbookCharDetailCtrl:OnEvent_SoldierHandbookChar_Selected(nCharId)
end
return SoldierHandbookCharDetailCtrl
@@ -0,0 +1,33 @@
local SoldierHandbookCharItemCtrl = class("SoldierHandbookCharItemCtrl", BaseCtrl)
local RootPath = "Icon/SoldierOtherIcon/"
SoldierHandbookCharItemCtrl._mapNodeConfig = {
imgSelect = {},
imageRarity = {sComponentName = "Image"},
imageIcon = {sComponentName = "Image"},
txtCharName = {sComponentName = "TMP_Text"}
}
SoldierHandbookCharItemCtrl._mapEventConfig = {
SoldierHandbookChar_Selected = "OnEvent_SoldierHandbookChar_Selected"
}
SoldierHandbookCharItemCtrl._mapRedDotConfig = {}
function SoldierHandbookCharItemCtrl:Awake()
end
function SoldierHandbookCharItemCtrl:SetItemData(mapCharData, bSelect)
self.mapCharData = mapCharData
local skinData = ConfigTable.GetData("SoldierSkin", mapCharData.Skin)
if skinData == nil then
return
end
self:SetPngSprite(self._mapNode.imageIcon, skinData.Icon .. AllEnum.SoldierChessIconSurfix.M)
NovaAPI.SetTMPText(self._mapNode.txtCharName, skinData.Name)
self:SetPngSprite(self._mapNode.imageRarity, RootPath .. AllEnum.SoldierChessRarityIcon[mapCharData.Rarity] .. AllEnum.SoldierChessIconSurfix.L)
self._mapNode.imgSelect.gameObject:SetActive(bSelect)
end
function SoldierHandbookCharItemCtrl:OnEvent_SoldierHandbookChar_Selected(nCharId)
if self.mapCharData.Id == nCharId then
self._mapNode.imgSelect.gameObject:SetActive(true)
else
self._mapNode.imgSelect.gameObject:SetActive(false)
end
end
return SoldierHandbookCharItemCtrl
@@ -0,0 +1,127 @@
local SoldierHandbookCtrl = class("SoldierHandbookCtrl", BaseCtrl)
SoldierHandbookCtrl._mapNodeConfig = {
TopBar = {
sNodeName = "TopBarPanel",
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
},
btn_char = {
sComponentName = "UIButton",
callback = "OnBtnClick_Char"
},
go_char_in = {},
go_char_off = {},
btn_partner = {
sComponentName = "UIButton",
callback = "OnBtnClick_Partner"
},
go_partner_in = {},
go_partner_off = {},
btn_starterCard = {
sComponentName = "UIButton",
callback = "OnBtnClick_StarterCard"
},
go_starterCard_in = {},
go_starterCard_off = {},
btn_strategyCard = {
sComponentName = "UIButton",
callback = "OnBtnClick_StrategyCard"
},
go_strategyCard_in = {},
go_strategyCard_off = {},
txt_char = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_Character"
},
txt_partner = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_Partner"
},
txt_starterCard = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_StarterCard"
},
txt_strategyCard = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_StrategyCard"
},
CharCtrl = {
sNodeName = "CharRoot",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierHandbookCharCtrl"
},
PartnerCtrl = {
sNodeName = "PartnerRoot",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierHandbookPartnerCtrl"
},
StarterCardCtrl = {
sNodeName = "StarterCardRoot",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierHandbookStarterCardCtrl"
},
StrategyCardCtrl = {
sNodeName = "StrategyCardRoot",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierHandbookStrategyCardCtrl"
}
}
SoldierHandbookCtrl._mapEventConfig = {}
SoldierHandbookCtrl._mapRedDotConfig = {}
function SoldierHandbookCtrl:Awake()
local param = self:GetPanelParam()
local nSelectedType = 0
if type(param) == "table" then
nSelectedType = param[1]
end
if nSelectedType == 0 then
nSelectedType = AllEnum.SoldierHandbookType.Character
end
self:SwitchToSelectedType(nSelectedType)
end
function SoldierHandbookCtrl:OnEnable()
EventManager.Hit("SoldierHandbookPanel_Open")
end
function SoldierHandbookCtrl:OnDisable()
EventManager.Hit("SoldierHandbookPanel_Close")
end
function SoldierHandbookCtrl:SwitchToSelectedType(nSelectedType)
self._mapNode.CharCtrl:Clear()
self._mapNode.PartnerCtrl:Clear()
self._mapNode.StarterCardCtrl:Clear()
self._mapNode.StrategyCardCtrl:Clear()
self.nSelectedType = nSelectedType
self._mapNode.CharCtrl.gameObject:SetActive(self.nSelectedType == AllEnum.SoldierHandbookType.Character)
self._mapNode.PartnerCtrl.gameObject:SetActive(self.nSelectedType == AllEnum.SoldierHandbookType.Partner)
self._mapNode.StarterCardCtrl.gameObject:SetActive(self.nSelectedType == AllEnum.SoldierHandbookType.StarterCard)
self._mapNode.StrategyCardCtrl.gameObject:SetActive(self.nSelectedType == AllEnum.SoldierHandbookType.StrategyCard)
self._mapNode.go_char_in.gameObject:SetActive(self.nSelectedType == AllEnum.SoldierHandbookType.Character)
self._mapNode.go_char_off.gameObject:SetActive(self.nSelectedType ~= AllEnum.SoldierHandbookType.Character)
self._mapNode.go_partner_in.gameObject:SetActive(self.nSelectedType == AllEnum.SoldierHandbookType.Partner)
self._mapNode.go_partner_off.gameObject:SetActive(self.nSelectedType ~= AllEnum.SoldierHandbookType.Partner)
self._mapNode.go_starterCard_in.gameObject:SetActive(self.nSelectedType == AllEnum.SoldierHandbookType.StarterCard)
self._mapNode.go_starterCard_off.gameObject:SetActive(self.nSelectedType ~= AllEnum.SoldierHandbookType.StarterCard)
self._mapNode.go_strategyCard_in.gameObject:SetActive(self.nSelectedType == AllEnum.SoldierHandbookType.StrategyCard)
self._mapNode.go_strategyCard_off.gameObject:SetActive(self.nSelectedType ~= AllEnum.SoldierHandbookType.StrategyCard)
if self.nSelectedType == AllEnum.SoldierHandbookType.Character then
self._mapNode.CharCtrl:Init()
elseif self.nSelectedType == AllEnum.SoldierHandbookType.Partner then
self._mapNode.PartnerCtrl:Init()
elseif self.nSelectedType == AllEnum.SoldierHandbookType.StarterCard then
self._mapNode.StarterCardCtrl:Init()
elseif self.nSelectedType == AllEnum.SoldierHandbookType.StrategyCard then
self._mapNode.StrategyCardCtrl:Init()
end
end
function SoldierHandbookCtrl:OnBtnClick_Char()
self:SwitchToSelectedType(AllEnum.SoldierHandbookType.Character)
end
function SoldierHandbookCtrl:OnBtnClick_Partner()
self:SwitchToSelectedType(AllEnum.SoldierHandbookType.Partner)
end
function SoldierHandbookCtrl:OnBtnClick_StarterCard()
self:SwitchToSelectedType(AllEnum.SoldierHandbookType.StarterCard)
end
function SoldierHandbookCtrl:OnBtnClick_StrategyCard()
self:SwitchToSelectedType(AllEnum.SoldierHandbookType.StrategyCard)
end
return SoldierHandbookCtrl
@@ -0,0 +1,22 @@
local SoldierHandbookPanel = class("SoldierHandbookPanel", BasePanel)
SoldierHandbookPanel._bIsMainPanel = true
SoldierHandbookPanel._sSortingLayerName = AllEnum.SortingLayerName.UI
SoldierHandbookPanel._tbDefine = {
{
sPrefabPath = "Soldier/SoldierHandbookPanel.prefab",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierHandbookCtrl"
}
}
function SoldierHandbookPanel:Awake()
end
function SoldierHandbookPanel:OnEnable()
end
function SoldierHandbookPanel:OnAfterEnter()
end
function SoldierHandbookPanel:OnDisable()
end
function SoldierHandbookPanel:OnDestroy()
end
function SoldierHandbookPanel:OnRelease()
end
return SoldierHandbookPanel
@@ -0,0 +1,85 @@
local SoldierHandbookPartnerCtrl = class("SoldierHandbookPartnerCtrl", BaseCtrl)
local tabType = {All = 1}
SoldierHandbookPartnerCtrl._mapNodeConfig = {
sv_partnerGroup = {
sComponentName = "LoopScrollView"
},
txt_DescCalHeight = {sComponentName = "TMP_Text"}
}
SoldierHandbookPartnerCtrl._mapEventConfig = {}
SoldierHandbookPartnerCtrl._mapRedDotConfig = {}
function SoldierHandbookPartnerCtrl:Awake()
end
function SoldierHandbookPartnerCtrl:OnDestroy()
self:Clear()
end
function SoldierHandbookPartnerCtrl:Clear()
if self.tbPartnerGroupItemCtrl ~= nil then
for _, v in ipairs(self.tbPartnerGroupItemCtrl) do
v:Clear()
self:UnbindCtrlByNode(v)
end
self.tbPartnerGroupItemCtrl = nil
end
end
function SoldierHandbookPartnerCtrl:Init()
self:Clear()
self.tbPartnerGroupItemCtrl = {}
self:InitPartnerGroupList()
end
function SoldierHandbookPartnerCtrl:InitPartnerGroupList()
self.tbPartnerGroup = {}
local func_ForEach_PartnerGroup = function(mapPartnerGroup)
table.insert(self.tbPartnerGroup, mapPartnerGroup)
end
ForEachTableLine(DataTable.SoldierPartnerGroup, func_ForEach_PartnerGroup)
self:InitHeight()
self._mapNode.sv_partnerGroup:InitEx(self.tbGridHeight, self, self.OnPartnerGroupRefreshGrid, self.OnPartnerGroupGridBtnClick, false)
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
self:PlayGridAnim()
end
cs_coroutine.start(wait)
end
function SoldierHandbookPartnerCtrl:PlayGridAnim()
local listInUse = self._mapNode.sv_partnerGroup:GetInUseGridIndex()
local tbGridInUse = {}
for i = 0, listInUse.Count - 1 do
table.insert(tbGridInUse, listInUse[i])
end
for k, v in ipairs(tbGridInUse) do
local goGrid = self._mapNode.sv_partnerGroup.transform:Find("Viewport/Content/" .. v)
local animRoot = goGrid:GetComponent("Animator")
local delayTime = (k - 1) * 0.1
if 0 < delayTime then
self:AddTimer(1, delayTime, function()
animRoot:Play("go")
end, true, true, true)
else
animRoot:Play("go")
end
end
end
function SoldierHandbookPartnerCtrl:InitHeight()
self.tbGridHeight = {}
for _, v in ipairs(self.tbPartnerGroup) do
NovaAPI.SetTMPText(self._mapNode.txt_DescCalHeight, UTILS.ParseDesc(v))
CS.UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(self._mapNode.txt_DescCalHeight.transform)
local nHeight = self._mapNode.txt_DescCalHeight.transform.sizeDelta.y + 76
table.insert(self.tbGridHeight, nHeight)
end
end
function SoldierHandbookPartnerCtrl:OnPartnerGroupRefreshGrid(goGrid, gridIndex)
local nIndex = gridIndex + 1
local nInstanceId = goGrid:GetInstanceID()
if not self.tbPartnerGroupItemCtrl[nInstanceId] then
self.tbPartnerGroupItemCtrl[nInstanceId] = self:BindCtrlByNode(goGrid, "Game.UI.Soldier.Handbook.SoldierHandbookPartnerItemCtrl")
end
self.tbPartnerGroupItemCtrl[nInstanceId]:SetItemData(self.tbPartnerGroup[nIndex])
end
function SoldierHandbookPartnerCtrl:OnPartnerGroupGridBtnClick(goGrid, gridIndex)
local nIndex = gridIndex + 1
local partnerType = self.tbPartnerGroup[nIndex].PartnerType
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierHandbookPartnerDetailPanel, partnerType)
end
return SoldierHandbookPartnerCtrl
@@ -0,0 +1,134 @@
local SoldierHandbookPartnerDetailCtrl = class("SoldierHandbookPartnerDetailCtrl", BaseCtrl)
local SoldierAttrData = require("GameCore.Data.DataClass.Soldier.SoldierAttrData")
local RootPath = "Icon/SoldierOtherIcon/"
local iconPath = "Icon/SoldierPartner/"
SoldierHandbookPartnerDetailCtrl._mapNodeConfig = {
blur = {},
root = {
sNodeName = "----SafeAreaRoot---"
},
btn_Close = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
btnClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
txtWindowTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_PartnerDetail"
},
txt_name = {sComponentName = "TMP_Text"},
img_partnerIcon = {sComponentName = "Image"},
TMP_Link = {
sNodeName = "txt_PartnerDesc",
sComponentName = "TMPHyperLink",
callback = "OnLinkClick_Word"
},
txt_PartnerDesc = {sComponentName = "TMP_Text"},
partner_desc = {nCount = 6},
txt_charListTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_PartnerCharListTitle"
},
sv_char = {
sComponentName = "LoopScrollView"
},
charDetialRoot = {sComponentName = "Transform"}
}
SoldierHandbookPartnerDetailCtrl._mapEventConfig = {}
SoldierHandbookPartnerDetailCtrl._mapRedDotConfig = {}
function SoldierHandbookPartnerDetailCtrl:Awake()
self._mapNode.blur:SetActive(true)
self._mapNode.root:SetActive(false)
self.animator = self._mapNode.root.transform:Find("AnimRoot"):GetComponent("Animator")
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
self._mapNode.root:SetActive(true)
self.animator:Play("t_window_04_t_in")
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
end
cs_coroutine.start(wait)
local param = self:GetPanelParam()
if type(param) == "table" then
self.nPartnerType = param[1]
end
local mapPartnerGroupData = CacheTable.GetData("_SoldierPartnerGroup", self.nPartnerType)
if mapPartnerGroupData == nil then
return
end
self.mapPartnerGroupData = mapPartnerGroupData
self:Init()
end
function SoldierHandbookPartnerDetailCtrl:OnDestroy()
for _, v in ipairs(self.tbCharItemCtrl) do
self:UnbindCtrlByNode(v)
end
self.tbCharItemCtrl = nil
end
function SoldierHandbookPartnerDetailCtrl:Init()
self.tbCharItemCtrl = {}
if self.mapPartnerGroupData == nil then
return
end
NovaAPI.SetTMPText(self._mapNode.txtName, self.mapPartnerGroupData.Name)
NovaAPI.SetTMPText(self._mapNode.txtDesc, self.mapPartnerGroupData.Des)
for i = 1, 6 do
self._mapNode.partner_desc[i]:SetActive(false)
end
self:SetPngSprite(self._mapNode.img_partnerIcon, iconPath .. self.mapPartnerGroupData.Icon .. AllEnum.SoldierChessIconSurfix.M)
NovaAPI.SetTMPText(self._mapNode.txt_name, self.mapPartnerGroupData.Name)
NovaAPI.SetTMPText(self._mapNode.txt_PartnerDesc, UTILS.ParseDesc(self.mapPartnerGroupData))
local tbAttrData = SoldierAttrData.GetPartnerLevelsByType(self.nPartnerType)
for i, v in ipairs(tbAttrData) do
local mapCfg = ConfigTable.GetData("SoldierPartner", v.nConfigId)
if mapCfg ~= nil then
local bg_icon = self._mapNode.partner_desc[i].transform:Find("icon_Level"):GetComponent("Image")
self:SetPngSprite(bg_icon, RootPath .. AllEnum.SoldierPartnerLevelIcon[mapCfg.PartnerLevelQuality].levelIcon)
local txt_desc = self._mapNode.partner_desc[i].transform:Find("txt_desc"):GetComponent("TMP_Text")
local txt_level = self._mapNode.partner_desc[i].transform:Find("icon_Level/txt_level"):GetComponent("TMP_Text")
local link = txt_desc.transform:GetComponent("TMPHyperLink")
NovaAPI.SetTMPText(txt_desc, v.sDesc)
NovaAPI.SetTMPText(txt_level, mapCfg.Num)
local handler = ui_handler(self, function(_, goLink, sWordId)
UTILS.ClickWordLink(goLink, sWordId)
end, link)
link.onClick:AddListener(handler)
self._mapNode.partner_desc[i]:SetActive(true)
end
end
self._mapNode.sv_char:Init(#self.mapPartnerGroupData.ChessCharacterIds, self, self.OnCharRefreshGrid, self.OnCharBtnClick, false)
end
function SoldierHandbookPartnerDetailCtrl:OnCharRefreshGrid(goGrid, gridIndex)
local nIndex = gridIndex + 1
local charId = self.mapPartnerGroupData.ChessCharacterIds[nIndex]
local go_char = goGrid.transform:Find("tc_char_small")
local nInstanceId = go_char:GetInstanceID()
if not self.tbCharItemCtrl[nInstanceId] then
self.tbCharItemCtrl[nInstanceId] = self:BindCtrlByNode(go_char, "Game.UI.Soldier.Template.Character.SoldierCharItemCtrl")
end
self.tbCharItemCtrl[nInstanceId]:SetItemData(charId)
self.tbCharItemCtrl[nInstanceId]:SetCharLevel(0)
end
function SoldierHandbookPartnerDetailCtrl:OnCharBtnClick(goGrid, gridIndex)
local nIndex = gridIndex + 1
local charId = self.mapPartnerGroupData.ChessCharacterIds[nIndex]
local chessData = {nId = charId, nStar = 1}
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharCardTips, self._mapNode.charDetialRoot, chessData)
local tr = self._mapNode.charDetialRoot
EventManager.Hit("OnSetTipsPosition", tr:GetChild(0).position, tr:GetChild(1).position, tr:GetChild(2).position)
EventManager.Hit("SoldierCharTips_ShowBg")
end
function SoldierHandbookPartnerDetailCtrl:OnBtnClick_Close()
self.animator:Play("t_window_04_t_out")
local callback = function()
EventManager.Hit(EventId.ClosePanel, PanelId.SoldierHandbookPartnerDetailPanel)
end
self:AddTimer(1, 0.3, callback, true, true, true)
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
end
function SoldierHandbookPartnerDetailCtrl:OnLinkClick_Word(link, sWordId)
UTILS.ClickWordLink(link, sWordId)
end
return SoldierHandbookPartnerDetailCtrl
@@ -0,0 +1,21 @@
local SoldierHandbookPartnerDetailPanel = class("SoldierHandbookPartnerDetailPanel", BasePanel)
SoldierHandbookPartnerDetailPanel._bIsMainPanel = false
SoldierHandbookPartnerDetailPanel._tbDefine = {
{
sPrefabPath = "Soldier/SoldierHandbookPartnerDetailPanel.prefab",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierHandbookPartnerDetailCtrl"
}
}
function SoldierHandbookPartnerDetailPanel:Awake()
end
function SoldierHandbookPartnerDetailPanel:OnEnable()
end
function SoldierHandbookPartnerDetailPanel:OnAfterEnter()
end
function SoldierHandbookPartnerDetailPanel:OnDisable()
end
function SoldierHandbookPartnerDetailPanel:OnDestroy()
end
function SoldierHandbookPartnerDetailPanel:OnRelease()
end
return SoldierHandbookPartnerDetailPanel
@@ -0,0 +1,59 @@
local SoldierHandbookPartnerItemCtrl = class("SoldierHandbookPartnerItemCtrl", BaseCtrl)
local iconPath = "Icon/SoldierPartner/"
SoldierHandbookPartnerItemCtrl._mapNodeConfig = {
partnerCell = {
sComponentName = "RectTransform"
},
img_partnerIcon = {sComponentName = "Image"},
txt_name = {sComponentName = "TMP_Text"},
TMP_Link = {
sNodeName = "txt_Desc",
sComponentName = "TMPHyperLink",
callback = "OnLinkClick_Word"
},
txt_Desc = {sComponentName = "TMP_Text"},
sv = {
sComponentName = "LoopScrollView"
}
}
SoldierHandbookPartnerItemCtrl._mapEventConfig = {}
SoldierHandbookPartnerItemCtrl._mapRedDotConfig = {}
function SoldierHandbookPartnerItemCtrl:Awake()
self.tbCharItemCtrl = {}
end
function SoldierHandbookPartnerItemCtrl:OnDestroy()
self:Clear()
end
function SoldierHandbookPartnerItemCtrl:Clear()
if self.tbCharItemCtrl ~= nil then
for _, v in ipairs(self.tbCharItemCtrl) do
self:UnbindCtrlByNode(v)
end
end
self.tbCharItemCtrl = {}
end
function SoldierHandbookPartnerItemCtrl:SetItemData(mapPartnerGroupData)
self.mapPartnerGroupData = mapPartnerGroupData
self:SetPngSprite(self._mapNode.img_partnerIcon, iconPath .. self.mapPartnerGroupData.Icon .. AllEnum.SoldierChessIconSurfix.M)
NovaAPI.SetTMPText(self._mapNode.txt_name, self.mapPartnerGroupData.Name)
NovaAPI.SetTMPText(self._mapNode.txt_Desc, UTILS.ParseDesc(self.mapPartnerGroupData))
CS.UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(self._mapNode.txt_Desc.transform)
local nHeight = self._mapNode.txt_Desc.transform.sizeDelta.y + 76
self._mapNode.partnerCell.sizeDelta = Vector2(self._mapNode.partnerCell.sizeDelta.x, nHeight)
self._mapNode.sv:Init(#self.mapPartnerGroupData.ChessCharacterIds, self, self.OnCharRefreshGrid)
end
function SoldierHandbookPartnerItemCtrl:OnCharRefreshGrid(goGrid, gridIndex)
local nIndex = gridIndex + 1
local charId = self.mapPartnerGroupData.ChessCharacterIds[nIndex]
local go_char = goGrid.transform:Find("tc_char_small")
local nInstanceId = go_char:GetInstanceID()
if not self.tbCharItemCtrl[nInstanceId] then
self.tbCharItemCtrl[nInstanceId] = self:BindCtrlByNode(go_char, "Game.UI.Soldier.Template.Character.SoldierCharItemCtrl")
end
self.tbCharItemCtrl[nInstanceId]:SetItemData(charId)
self.tbCharItemCtrl[nInstanceId]:SetCharLevel(0)
end
function SoldierHandbookPartnerItemCtrl:OnLinkClick_Word(link, sWordId)
UTILS.ClickWordLink(link, sWordId)
end
return SoldierHandbookPartnerItemCtrl
@@ -0,0 +1,109 @@
local SoldierHandbookSelectCtrl = class("SoldierHandbookSelectCtrl", BaseCtrl)
SoldierHandbookSelectCtrl._mapNodeConfig = {
TopBar = {
sNodeName = "TopBarPanel",
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
},
btn_Char = {
sComponentName = "UIButton",
callback = "OnBtnClick_Character"
},
txt_Char = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_Character"
},
txt_CharCount = {sComponentName = "TMP_Text"},
btn_Partner = {
sComponentName = "UIButton",
callback = "OnBtnClick_Partner"
},
txt_Partner = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_Partner"
},
txt_PartnerCount = {sComponentName = "TMP_Text"},
btn_StarterCard = {
sComponentName = "UIButton",
callback = "OnBtnClick_StarterCard"
},
txt_StarterCard = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_StarterCard"
},
txt_StarterCardCount = {sComponentName = "TMP_Text"},
btn_StrategyCard = {
sComponentName = "UIButton",
callback = "OnBtnClick_StrategyCard"
},
txt_StrategyCard = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Handbook_StrategyCard"
},
txt_StrategyCardCount = {sComponentName = "TMP_Text"}
}
SoldierHandbookSelectCtrl._mapEventConfig = {}
SoldierHandbookSelectCtrl._mapRedDotConfig = {}
function SoldierHandbookSelectCtrl:Awake()
end
function SoldierHandbookSelectCtrl:OnEnable()
self:RefreshCharCount()
self:RefreshPartnerCount()
self:RefreshStarterCardCount()
self:RefreshStrategyCardCount()
end
function SoldierHandbookSelectCtrl:RefreshCharCount()
local nCount = 0
local actData = PlayerData.Activity:GetActivityDataByType(GameEnum.activityType.Soldier)
if actData == nil then
return
end
local nActId = actData:GetActId()
local seasonConfig = ConfigTable.GetData("SoldierSeason", nActId)
if seasonConfig == nil then
return
end
local func_ForEach_Char = function(mapCharData)
if mapCharData.BoardChess and seasonConfig.ChessGroupId == mapCharData.GroupId then
nCount = nCount + 1
end
end
ForEachTableLine(DataTable.SoldierCharacter, func_ForEach_Char)
NovaAPI.SetTMPText(self._mapNode.txt_CharCount, nCount)
end
function SoldierHandbookSelectCtrl:RefreshPartnerCount()
local nCount = 0
local func_ForEach_Partner = function(mapPartnerData)
nCount = nCount + 1
end
ForEachTableLine(DataTable.SoldierPartnerGroup, func_ForEach_Partner)
NovaAPI.SetTMPText(self._mapNode.txt_PartnerCount, nCount)
end
function SoldierHandbookSelectCtrl:RefreshStarterCardCount()
local nCount = 0
local func_ForEach_StarterCard = function(mapStarterCardData)
nCount = nCount + 1
end
ForEachTableLine(DataTable.SoldierStarterCard, func_ForEach_StarterCard)
NovaAPI.SetTMPText(self._mapNode.txt_StarterCardCount, nCount)
end
function SoldierHandbookSelectCtrl:RefreshStrategyCardCount()
local nCount = 0
local func_ForEach_StrategyCard = function(mapStrategyCardData)
nCount = nCount + 1
end
ForEachTableLine(DataTable.SoldierStrategyCard, func_ForEach_StrategyCard)
NovaAPI.SetTMPText(self._mapNode.txt_StrategyCardCount, nCount)
end
function SoldierHandbookSelectCtrl:OnBtnClick_Character()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierHandbookPanel, AllEnum.SoldierHandbookType.Character)
end
function SoldierHandbookSelectCtrl:OnBtnClick_Partner()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierHandbookPanel, AllEnum.SoldierHandbookType.Partner)
end
function SoldierHandbookSelectCtrl:OnBtnClick_StarterCard()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierHandbookPanel, AllEnum.SoldierHandbookType.StarterCard)
end
function SoldierHandbookSelectCtrl:OnBtnClick_StrategyCard()
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierHandbookPanel, AllEnum.SoldierHandbookType.StrategyCard)
end
return SoldierHandbookSelectCtrl
@@ -0,0 +1,22 @@
local SoldierHandbookSelectPanel = class("SoldierHandbookSelectPanel", BasePanel)
SoldierHandbookSelectPanel._bIsMainPanel = true
SoldierHandbookSelectPanel._sSortingLayerName = AllEnum.SortingLayerName.UI
SoldierHandbookSelectPanel._tbDefine = {
{
sPrefabPath = "Soldier/SoldierHandbookSelectPanel.prefab",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierHandbookSelectCtrl"
}
}
function SoldierHandbookSelectPanel:Awake()
end
function SoldierHandbookSelectPanel:OnEnable()
end
function SoldierHandbookSelectPanel:OnAfterEnter()
end
function SoldierHandbookSelectPanel:OnDisable()
end
function SoldierHandbookSelectPanel:OnDestroy()
end
function SoldierHandbookSelectPanel:OnRelease()
end
return SoldierHandbookSelectPanel
@@ -0,0 +1,84 @@
local SoldierHandbookStarterCardCtrl = class("SoldierHandbookStarterCardCtrl", BaseCtrl)
SoldierHandbookStarterCardCtrl._mapNodeConfig = {
sv_loop = {
sComponentName = "LoopScrollView"
},
CardDetailCtrl = {
sNodeName = "DetailRoot",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierHandbookCardDetailCtrl"
}
}
SoldierHandbookStarterCardCtrl._mapEventConfig = {}
SoldierHandbookStarterCardCtrl._mapRedDotConfig = {}
function SoldierHandbookStarterCardCtrl:Awake()
end
function SoldierHandbookStarterCardCtrl:OnEnable()
end
function SoldierHandbookStarterCardCtrl:OnDisable()
end
function SoldierHandbookStarterCardCtrl:OnDestroy()
self:Clear()
end
function SoldierHandbookStarterCardCtrl:Clear()
if self.tbCardItemCtrl ~= nil then
for _, v in ipairs(self.tbCardItemCtrl) do
self:UnbindCtrlByNode(v)
end
self.tbCardItemCtrl = {}
end
self._mapNode.CardDetailCtrl:Clear()
end
function SoldierHandbookStarterCardCtrl:Init()
self.tbCardItemCtrl = {}
self:InitCardList()
self:RefreshCardList()
end
function SoldierHandbookStarterCardCtrl:InitCardList()
self.tbAllCard = {}
self.mapCardByRarity = {}
local func_ForEach_Card = function(mapCardData)
table.insert(self.tbAllCard, mapCardData)
if self.mapCardByRarity[mapCardData.Rarity] == nil then
self.mapCardByRarity[mapCardData.Rarity] = {}
end
table.insert(self.mapCardByRarity[mapCardData.Rarity], mapCardData)
end
ForEachTableLine(DataTable.SoldierStarterCard, func_ForEach_Card)
table.sort(self.tbAllCard, function(a, b)
if a.Rarity == b.Rarity then
return a.Id < b.Id
end
return a.Rarity > b.Rarity
end)
for nRarity, tbCard in pairs(self.mapCardByRarity) do
table.sort(tbCard, function(a, b)
return a.Id < b.Id
end)
end
end
function SoldierHandbookStarterCardCtrl:RefreshCardList()
self.tbCardItemCtrl = {}
self.nSelectIndex = 1
self.tbCurCardList = self.tbAllCard
self._mapNode.sv_loop:Init(#self.tbCurCardList, self, self.OnCardRefreshGrid, self.OnCardGridBtnClick, false)
EventManager.Hit("SoldierHandbookStarterCard_Selected", self.tbCurCardList[self.nSelectIndex].Id)
self:RefreshDetail()
end
function SoldierHandbookStarterCardCtrl:RefreshDetail()
self._mapNode.CardDetailCtrl:RefreshStarterCardDetail(self.tbCurCardList[self.nSelectIndex].Id)
end
function SoldierHandbookStarterCardCtrl:OnCardRefreshGrid(goGrid, gridIndex)
local nIndex = gridIndex + 1
local nInstanceId = goGrid:GetInstanceID()
if not self.tbCardItemCtrl[nInstanceId] then
self.tbCardItemCtrl[nInstanceId] = self:BindCtrlByNode(goGrid, "Game.UI.Soldier.Template.SoldierStarterCardItemCtrl")
end
self.tbCardItemCtrl[nInstanceId]:SetItemData(self.tbCurCardList[nIndex], self.nSelectIndex == nIndex)
end
function SoldierHandbookStarterCardCtrl:OnCardGridBtnClick(goGrid, gridIndex)
local nIndex = gridIndex + 1
self.nSelectIndex = nIndex
EventManager.Hit("SoldierHandbookStarterCard_Selected", self.tbCurCardList[self.nSelectIndex].Id)
self:RefreshDetail()
end
return SoldierHandbookStarterCardCtrl
@@ -0,0 +1,132 @@
local SoldierHandbookStrategyCardCtrl = class("SoldierHandbookStrategyCardCtrl", BaseCtrl)
local tabType = {
All = 1,
R = 2,
M = 3,
N = 4
}
local tab2ItemRarity = {
[tabType.All] = 1,
[tabType.R] = GameEnum.itemRarity.R,
[tabType.M] = GameEnum.itemRarity.M,
[tabType.N] = GameEnum.itemRarity.N
}
SoldierHandbookStrategyCardCtrl._mapNodeConfig = {
btn_tab = {
nCount = 4,
sComponentName = "UIButton",
callback = "OnBtnClick_Tab"
},
tab_On = {nCount = 4},
tab_Off = {nCount = 4},
sv_loop = {
sComponentName = "LoopScrollView"
},
CardDetailCtrl = {
sNodeName = "DetailRoot",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierHandbookCardDetailCtrl"
}
}
SoldierHandbookStrategyCardCtrl._mapEventConfig = {}
SoldierHandbookStrategyCardCtrl._mapRedDotConfig = {}
function SoldierHandbookStrategyCardCtrl:Awake()
end
function SoldierHandbookStrategyCardCtrl:OnEnable()
end
function SoldierHandbookStrategyCardCtrl:OnDisable()
end
function SoldierHandbookStrategyCardCtrl:OnDestroy()
self:Clear()
end
function SoldierHandbookStrategyCardCtrl:Clear()
if self.tbCardItemCtrl ~= nil then
for _, v in ipairs(self.tbCardItemCtrl) do
self:UnbindCtrlByNode(v)
end
self.tbCardItemCtrl = {}
end
self._mapNode.CardDetailCtrl:Clear()
end
function SoldierHandbookStrategyCardCtrl:Init()
self.tbCardItemCtrl = {}
self:InitCardList()
self:SwitchToTab(tabType.All, true)
end
function SoldierHandbookStrategyCardCtrl:InitCardList()
self.tbAllCard = {}
self.mapCardByRarity = {}
local func_ForEach_Card = function(mapCardData)
table.insert(self.tbAllCard, mapCardData)
if self.mapCardByRarity[mapCardData.Rarity] == nil then
self.mapCardByRarity[mapCardData.Rarity] = {}
end
table.insert(self.mapCardByRarity[mapCardData.Rarity], mapCardData)
end
ForEachTableLine(DataTable.SoldierStrategyCard, func_ForEach_Card)
table.sort(self.tbAllCard, function(a, b)
if a.Rarity == b.Rarity then
return a.Id < b.Id
end
return a.Rarity < b.Rarity
end)
for nRarity, tbCard in pairs(self.mapCardByRarity) do
table.sort(tbCard, function(a, b)
return a.Id < b.Id
end)
end
end
function SoldierHandbookStrategyCardCtrl:SwitchToTab(nTab, bForce)
if self.nCurTab == nTab and not bForce then
return
end
if self.nCurTab ~= nil then
self._mapNode.tab_Off[self.nCurTab]:SetActive(true)
self._mapNode.tab_On[self.nCurTab]:SetActive(false)
else
for i = 1, 4 do
self._mapNode.tab_Off[i]:SetActive(true)
self._mapNode.tab_On[i]:SetActive(false)
end
end
self.nCurTab = nTab
self._mapNode.tab_On[self.nCurTab]:SetActive(true)
self._mapNode.tab_Off[self.nCurTab]:SetActive(false)
self:RefreshCardList()
end
function SoldierHandbookStrategyCardCtrl:RefreshCardList()
self.tbCardItemCtrl = {}
self.tbCurCardList = {}
self.nSelectIndex = 1
if self.nCurTab == tabType.All then
self.tbCurCardList = self.tbAllCard
else
self.tbCurCardList = self.mapCardByRarity[tab2ItemRarity[self.nCurTab]]
end
self._mapNode.sv_loop:Init(#self.tbCurCardList, self, self.OnCardRefreshGrid, self.OnCardGridBtnClick, false)
EventManager.Hit("SoldierHandbookStrategyCard_Selected", self.tbCurCardList[self.nSelectIndex].Id)
self:RefreshDetail()
end
function SoldierHandbookStrategyCardCtrl:RefreshDetail()
self._mapNode.CardDetailCtrl:RefreshStrategyCardDetail(self.tbCurCardList[self.nSelectIndex].Id)
end
function SoldierHandbookStrategyCardCtrl:OnCardRefreshGrid(goGrid, gridIndex)
local nIndex = gridIndex + 1
local nInstanceId = goGrid:GetInstanceID()
if not self.tbCardItemCtrl[nInstanceId] then
self.tbCardItemCtrl[nInstanceId] = self:BindCtrlByNode(goGrid, "Game.UI.Soldier.Template.SoldierStrategyCardItemCtrl")
end
self.tbCardItemCtrl[nInstanceId]:SetItemData(self.tbCurCardList[nIndex], self.nSelectIndex == nIndex)
end
function SoldierHandbookStrategyCardCtrl:OnCardGridBtnClick(goGrid, gridIndex)
local nIndex = gridIndex + 1
self.nSelectIndex = nIndex
EventManager.Hit("SoldierHandbookStrategyCard_Selected", self.tbCurCardList[self.nSelectIndex].Id)
self:RefreshDetail()
end
function SoldierHandbookStrategyCardCtrl:OnBtnClick_Tab(btn, nIndex)
if nIndex == self.nCurTab then
return
end
self:SwitchToTab(nIndex)
end
return SoldierHandbookStrategyCardCtrl
@@ -0,0 +1,105 @@
local BaseCtrl = require("GameCore.UI.BaseCtrl")
local SoldierSelectStarterCardItemCtrl = class("SoldierSelectStarterCardItemCtrl", BaseCtrl)
local RootPath = "Icon/SoldierOtherIcon/"
SoldierSelectStarterCardItemCtrl._mapNodeConfig = {
btnClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
img_Selecticon = {sComponentName = "Image"},
txt_name = {sComponentName = "TMP_Text"},
txt_desc = {sComponentName = "TMP_Text"},
txt_charTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Detail_CharTitle"
},
sv_char = {
sComponentName = "LoopScrollView"
},
txt_desc_HyperLink = {
sNodeName = "txt_desc",
sComponentName = "TMPHyperLink",
callback = "OnBtnClick_Word"
},
txt_Empty = {
sComponentName = "TMP_Text",
sLanguageId = "Tips_Continue"
},
TextLab = {
sComponentName = "TMP_Text",
sLanguageId = "Solider_Starter_Title"
},
goChar = {
sNodeName = "tc_char_small"
},
CharContent = {sComponentName = "Transform"}
}
SoldierSelectStarterCardItemCtrl._mapEventConfig = {}
SoldierSelectStarterCardItemCtrl._mapRedDotConfig = {}
local iconCardPath = "Icon/SoldierBuffCard/"
function SoldierSelectStarterCardItemCtrl:Awake()
self.mapCharItemCtrl = {}
self.tbCharList = {}
self.tbCharItemsCtrl = {}
self.animator = self.gameObject:GetComponent("Animator")
end
function SoldierSelectStarterCardItemCtrl:OnEnable()
local tbParam = self:GetPanelParam()
if type(tbParam) == "table" and tbParam[1] ~= nil then
self:SetData(tbParam[1])
end
self.animator:Play("SoldierSelectStarterCardItem_in")
end
function SoldierSelectStarterCardItemCtrl:OnDisable()
self:_ClearCharItems()
end
function SoldierSelectStarterCardItemCtrl:OnDestroy()
end
function SoldierSelectStarterCardItemCtrl:SetData(nStarterCardId)
local starterCardConfig = ConfigTable.GetData("SoldierStarterCard", nStarterCardId)
self:SetPngSprite(self._mapNode.img_Selecticon, iconCardPath .. starterCardConfig.Icon)
NovaAPI.SetTMPText(self._mapNode.txt_name, starterCardConfig.Name)
NovaAPI.SetTMPText(self._mapNode.txt_desc, UTILS.ParseDesc(starterCardConfig))
self.tbCharList = starterCardConfig.CharacterShow or {}
local bHasChar = #self.tbCharList > 0
self._mapNode.txt_charTitle.gameObject:SetActive(bHasChar)
self._mapNode.sv_char.gameObject:SetActive(bHasChar)
if bHasChar then
self:_RefreshCharItems(self.tbCharList)
end
end
function SoldierSelectStarterCardItemCtrl:_RefreshCharItems(tbCharIds)
for k, charId in ipairs(tbCharIds) do
local itemCtrl = self.tbCharItemsCtrl[k]
if itemCtrl == nil then
local go = instantiate(self._mapNode.goChar, self._mapNode.CharContent)
itemCtrl = self:BindCtrlByNode(go, "Game.UI.Soldier.Template.Character.SoldierCharItemCtrl")
table.insert(self.tbCharItemsCtrl, itemCtrl)
end
itemCtrl.gameObject:SetActive(true)
itemCtrl:SetItemData(charId)
itemCtrl:SetCharLevel(1)
end
end
function SoldierSelectStarterCardItemCtrl:_ClearCharItems()
for _, ctrl in ipairs(self.tbCharItemsCtrl) do
local obj = ctrl.gameObject
self:UnbindCtrlByNode(ctrl)
destroy(obj)
end
self.tbCharItemsCtrl = {}
end
function SoldierSelectStarterCardItemCtrl:OnCharGridBtnClick(_goGrid, _gridIndex)
end
function SoldierSelectStarterCardItemCtrl:OnBtnClick_Close()
self.animator:Play("SoldierSelectStarterCardItem_out")
local callback = function()
EventManager.Hit(EventId.ClosePanel, PanelId.SoldierSelectStarterCardItem)
end
self:AddTimer(1, 0.3, callback, true, true, true)
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
end
function SoldierSelectStarterCardItemCtrl:OnBtnClick_Word(link, sWordId)
UTILS.ClickWordLink(link, sWordId)
end
return SoldierSelectStarterCardItemCtrl
@@ -0,0 +1,22 @@
local SoldierSelectStarterCardItemPanel = class("SoldierSelectStarterCardItemPanel", BasePanel)
SoldierSelectStarterCardItemPanel._bIsMainPanel = false
SoldierSelectStarterCardItemPanel._sSortingLayerName = AllEnum.SortingLayerName.UI
SoldierSelectStarterCardItemPanel._tbDefine = {
{
sPrefabPath = "Soldier/Tips/SoldierSelectStarterCardItem.prefab",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierSelectStarterCardItemCtrl"
}
}
function SoldierSelectStarterCardItemPanel:Awake()
end
function SoldierSelectStarterCardItemPanel:OnEnable()
end
function SoldierSelectStarterCardItemPanel:OnAfterEnter()
end
function SoldierSelectStarterCardItemPanel:OnDisable()
end
function SoldierSelectStarterCardItemPanel:OnDestroy()
end
function SoldierSelectStarterCardItemPanel:OnRelease()
end
return SoldierSelectStarterCardItemPanel
@@ -0,0 +1,108 @@
local BaseCtrl = require("GameCore.UI.BaseCtrl")
local SoldierSelectStrategyCardItemCtrl = class("SoldierSelectStrategyCardItemCtrl", BaseCtrl)
local RootPath = "Icon/SoldierOtherIcon/"
SoldierSelectStrategyCardItemCtrl._mapNodeConfig = {
btnClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
imgBg_Gold = {},
imgBg_Silver = {},
imgBg_Copper = {},
img_Selecticon = {sComponentName = "Image"},
txt_name = {sComponentName = "TMP_Text"},
txt_desc = {sComponentName = "TMP_Text"},
txt_charTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Detail_CharTitle"
},
sv_char = {},
txt_desc_HyperLink = {
sNodeName = "txt_desc",
sComponentName = "TMPHyperLink",
callback = "OnBtnClick_Word"
},
txt_Empty = {
sComponentName = "TMP_Text",
sLanguageId = "Tips_Continue"
},
TextLab = {
sComponentName = "TMP_Text",
sLanguageId = "Soldier_Strategy_Title"
},
goChar = {
sNodeName = "tc_char_small"
},
CharContent = {sComponentName = "Transform"}
}
SoldierSelectStrategyCardItemCtrl._mapEventConfig = {}
SoldierSelectStrategyCardItemCtrl._mapRedDotConfig = {}
local iconCardPath = "Icon/SoldierBuffCard/"
function SoldierSelectStrategyCardItemCtrl:Awake()
self.mapCharItemCtrl = {}
self.tbCharList = {}
self.tbCharItemsCtrl = {}
self.animator = self.gameObject:GetComponent("Animator")
end
function SoldierSelectStrategyCardItemCtrl:OnEnable()
local tbParam = self:GetPanelParam()
if type(tbParam) == "table" and tbParam[1] ~= nil then
self:SetData(tbParam[1])
end
self.animator:Play("SoldierSelectStarterCardItem_in")
end
function SoldierSelectStrategyCardItemCtrl:OnDisable()
self:_ClearCharItems()
end
function SoldierSelectStrategyCardItemCtrl:OnDestroy()
end
function SoldierSelectStrategyCardItemCtrl:SetData(nStrategyCardId)
local strategyCardConfig = ConfigTable.GetData("SoldierStrategyCard", nStrategyCardId)
self._mapNode.imgBg_Gold:SetActive(strategyCardConfig.Rarity == GameEnum.itemRarity.R)
self._mapNode.imgBg_Silver:SetActive(strategyCardConfig.Rarity == GameEnum.itemRarity.M)
self._mapNode.imgBg_Copper:SetActive(strategyCardConfig.Rarity == GameEnum.itemRarity.N)
self:SetPngSprite(self._mapNode.img_Selecticon, iconCardPath .. strategyCardConfig.Icon)
NovaAPI.SetTMPText(self._mapNode.txt_name, strategyCardConfig.Name)
NovaAPI.SetTMPText(self._mapNode.txt_desc, UTILS.ParseDesc(strategyCardConfig))
self.tbCharList = strategyCardConfig.CharacterShow or {}
local bHasChar = #self.tbCharList > 0
self._mapNode.txt_charTitle.gameObject:SetActive(bHasChar)
self._mapNode.sv_char.gameObject:SetActive(bHasChar)
if bHasChar then
self:_RefreshCharItems(self.tbCharList)
end
end
function SoldierSelectStrategyCardItemCtrl:_RefreshCharItems(tbCharIds)
for k, charId in ipairs(tbCharIds) do
local itemCtrl = self.tbCharItemsCtrl[k]
if itemCtrl == nil then
local go = instantiate(self._mapNode.goChar, self._mapNode.CharContent)
itemCtrl = self:BindCtrlByNode(go, "Game.UI.Soldier.Template.Character.SoldierCharItemCtrl")
table.insert(self.tbCharItemsCtrl, itemCtrl)
end
itemCtrl.gameObject:SetActive(true)
itemCtrl:SetItemData(charId)
end
end
function SoldierSelectStrategyCardItemCtrl:_ClearCharItems()
for _, ctrl in ipairs(self.tbCharItemsCtrl) do
local obj = ctrl.gameObject
self:UnbindCtrlByNode(ctrl)
destroy(obj)
end
self.tbCharItemsCtrl = {}
end
function SoldierSelectStrategyCardItemCtrl:OnCharGridBtnClick(_goGrid, _gridIndex)
end
function SoldierSelectStrategyCardItemCtrl:OnBtnClick_Close()
self.animator:Play("SoldierSelectStarterCardItem_out")
local callback = function()
EventManager.Hit(EventId.ClosePanel, PanelId.SoldierSelectStrategyCardItem)
end
self:AddTimer(1, 0.3, callback, true, true, true)
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
end
function SoldierSelectStrategyCardItemCtrl:OnBtnClick_Word(link, sWordId)
UTILS.ClickWordLink(link, sWordId)
end
return SoldierSelectStrategyCardItemCtrl
@@ -0,0 +1,22 @@
local SoldierSelectStrategyCardItemPanel = class("SoldierSelectStrategyCardItemPanel", BasePanel)
SoldierSelectStrategyCardItemPanel._bIsMainPanel = false
SoldierSelectStrategyCardItemPanel._sSortingLayerName = AllEnum.SortingLayerName.UI
SoldierSelectStrategyCardItemPanel._tbDefine = {
{
sPrefabPath = "Soldier/Tips/SoldierSelectStrategyCardItem.prefab",
sCtrlName = "Game.UI.Soldier.Handbook.SoldierSelectStrategyCardItemCtrl"
}
}
function SoldierSelectStrategyCardItemPanel:Awake()
end
function SoldierSelectStrategyCardItemPanel:OnEnable()
end
function SoldierSelectStrategyCardItemPanel:OnAfterEnter()
end
function SoldierSelectStrategyCardItemPanel:OnDisable()
end
function SoldierSelectStrategyCardItemPanel:OnDestroy()
end
function SoldierSelectStrategyCardItemPanel:OnRelease()
end
return SoldierSelectStrategyCardItemPanel