08b515afd9
EN: 2.0.0.143 CN: 2.0.0.142 JP: 2.0.0.145 KR: 2.0.0.150
160 lines
5.3 KiB
Lua
160 lines
5.3 KiB
Lua
local SoldierAddBuffItemCtrl = class("SoldierAddBuffItemCtrl", BaseCtrl)
|
|
local CHAR_CTRL = "Game.UI.Soldier.Template.Character.SoldierCharItemCtrl"
|
|
SoldierAddBuffItemCtrl._mapNodeConfig = {
|
|
btnItem = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Select"
|
|
},
|
|
TextDes = {sComponentName = "TMP_Text"},
|
|
TextName = {sComponentName = "TMP_Text"},
|
|
imgIcon = {sComponentName = "Image"},
|
|
btnConfirm = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Confirm"
|
|
},
|
|
txtConfirm = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Avg_Btn_Select"
|
|
},
|
|
animBuffItem = {sComponentName = "Animator"},
|
|
BgNormal = {sComponentName = "Image"},
|
|
imgbg_copper = {},
|
|
imgbg_silver = {},
|
|
imgbg_gold = {},
|
|
goRewardRoot = {sNodeName = "RewardRoot"},
|
|
goRewardItem = {},
|
|
goRewardContent = {
|
|
sComponentName = "RectTransform"
|
|
},
|
|
txtCharTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Soldier_Detail_CharTitle"
|
|
}
|
|
}
|
|
SoldierAddBuffItemCtrl._mapEventConfig = {}
|
|
SoldierAddBuffItemCtrl._mapRedDotConfig = {}
|
|
function SoldierAddBuffItemCtrl:Awake()
|
|
self.tbRewardItems = {}
|
|
if self._mapNode.goRewardItem ~= nil then
|
|
self._mapNode.goRewardItem:SetActive(false)
|
|
end
|
|
end
|
|
function SoldierAddBuffItemCtrl:OnEnable()
|
|
self._bSelected = nil
|
|
end
|
|
function SoldierAddBuffItemCtrl:OnDisable()
|
|
if self.timerBtnConfirm ~= nil then
|
|
self.timerBtnConfirm:Cancel()
|
|
self.timerBtnConfirm = nil
|
|
end
|
|
end
|
|
function SoldierAddBuffItemCtrl:SetItemData(tbItem)
|
|
self._nCardId = tbItem.id or -1
|
|
self._nIndex = tbItem.index or 0
|
|
self._mapNode.btnConfirm.gameObject:SetActive(false)
|
|
local cfg = ConfigTable.GetData("SoldierStrategyCard", self._nCardId)
|
|
if cfg == nil then
|
|
return
|
|
end
|
|
self:_SetIcon(cfg.Icon)
|
|
NovaAPI.SetTMPText(self._mapNode.TextName, cfg.Name or "")
|
|
NovaAPI.SetTMPText(self._mapNode.TextDes, cfg.Des or "")
|
|
self:SetPngSprite(self._mapNode.BgNormal, "Icon/SoldierOtherIcon/" .. AllEnum.SoldierStrategyCardRarityIcon[cfg.Rarity] .. AllEnum.SoldierChessIconSurfix.L)
|
|
self._mapNode.imgbg_gold:SetActive(cfg.Rarity == GameEnum.itemRarity.R)
|
|
self._mapNode.imgbg_silver:SetActive(cfg.Rarity == GameEnum.itemRarity.M)
|
|
self._mapNode.imgbg_copper:SetActive(cfg.Rarity == GameEnum.itemRarity.N)
|
|
local hasReward = cfg.CharacterShow and 0 < #cfg.CharacterShow
|
|
self._mapNode.goRewardRoot:SetActive(hasReward)
|
|
if hasReward then
|
|
self:_RefreshCharItems(cfg.CharacterShow)
|
|
end
|
|
end
|
|
function SoldierAddBuffItemCtrl:GetCardId()
|
|
return self._nCardId
|
|
end
|
|
function SoldierAddBuffItemCtrl:GetIndex()
|
|
return self._nIndex
|
|
end
|
|
function SoldierAddBuffItemCtrl:SetSelected(bSelected)
|
|
if self.timerBtnConfirm ~= nil then
|
|
self.timerBtnConfirm:Cancel()
|
|
self.timerBtnConfirm = nil
|
|
end
|
|
local sSwitchAnimName = ""
|
|
if bSelected == true then
|
|
self._mapNode.btnConfirm.gameObject:SetActive(bSelected)
|
|
sSwitchAnimName = "BuffItem_up"
|
|
elseif self._bSelected == true then
|
|
sSwitchAnimName = "BuffItem_down"
|
|
local nAnimLength = NovaAPI.GetAnimClipLength(self._mapNode.animBuffItem, {sSwitchAnimName})
|
|
self.timerBtnConfirm = self:AddTimer(1, nAnimLength, function()
|
|
self._mapNode.btnConfirm.gameObject:SetActive(false)
|
|
end, true, true, true)
|
|
elseif self._bSelected == false then
|
|
self._mapNode.btnConfirm.gameObject:SetActive(false)
|
|
end
|
|
if sSwitchAnimName ~= "" then
|
|
self._mapNode.animBuffItem:Play(sSwitchAnimName)
|
|
end
|
|
self._bSelected = bSelected == true
|
|
end
|
|
function SoldierAddBuffItemCtrl:IsSelected()
|
|
return self._bSelected
|
|
end
|
|
function SoldierAddBuffItemCtrl:_SetIcon(sIconPath)
|
|
if self._mapNode.imgIcon == nil then
|
|
return
|
|
end
|
|
if sIconPath ~= nil and sIconPath ~= "" then
|
|
self:SetPngSprite(self._mapNode.imgIcon, "Icon/SoldierBuffCard/" .. sIconPath)
|
|
self._mapNode.imgIcon.gameObject:SetActive(true)
|
|
else
|
|
self._mapNode.imgIcon.gameObject:SetActive(false)
|
|
end
|
|
end
|
|
function SoldierAddBuffItemCtrl:SetCharTipsRoot(tr)
|
|
self.charTipsRoot = tr
|
|
end
|
|
function SoldierAddBuffItemCtrl:_RefreshCharItems(tbCharIds)
|
|
for k, charId in ipairs(tbCharIds) do
|
|
local tbItem = self.tbRewardItems[k]
|
|
if tbItem == nil then
|
|
local goItem = instantiate(self._mapNode.goRewardItem, self._mapNode.goRewardContent)
|
|
local trItem = goItem.transform
|
|
local trChar = trItem:Find("tc_char_small")
|
|
local trCharItem = trItem:Find("tc_item_small")
|
|
if trCharItem ~= nil then
|
|
trCharItem.gameObject:SetActive(false)
|
|
end
|
|
local charCtrl = self:BindCtrlByNode(trChar.gameObject, CHAR_CTRL)
|
|
charCtrl:SetCharLevel(1)
|
|
tbItem = {goItem = goItem, charCtrl = charCtrl}
|
|
self.tbRewardItems[k] = tbItem
|
|
end
|
|
tbItem.goItem:SetActive(true)
|
|
tbItem.charCtrl:SetCharItemBtnFunc(function()
|
|
local chessData = {nId = charId, nStar = 1}
|
|
if self.charTipsRoot ~= nil then
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.SoldierCharCardTips, self.charTipsRoot, chessData)
|
|
end
|
|
end)
|
|
tbItem.charCtrl.gameObject:SetActive(true)
|
|
tbItem.charCtrl:SetItemData(charId)
|
|
end
|
|
for k = #tbCharIds + 1, #self.tbRewardItems do
|
|
local tbItem = self.tbRewardItems[k]
|
|
if tbItem ~= nil and tbItem.goItem ~= nil then
|
|
tbItem.goItem:SetActive(false)
|
|
end
|
|
end
|
|
end
|
|
function SoldierAddBuffItemCtrl:OnBtnClick_Select()
|
|
EventManager.Hit("SoldierStrategySelect", self._nIndex, self._nCardId)
|
|
end
|
|
function SoldierAddBuffItemCtrl:OnBtnClick_Confirm()
|
|
PlayerData.SoldierData:GetCurLevelData():SendCardSelect(self._nIndex, function()
|
|
EventManager.Hit(EventId.ClosePanel, PanelId.SoldierBattleEventPanel)
|
|
end)
|
|
end
|
|
return SoldierAddBuffItemCtrl
|