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:
@@ -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
|
||||
Reference in New Issue
Block a user