local DepotDiscSkillInfoCtrl = class("DepotDiscSkillInfoCtrl", BaseCtrl)
DepotDiscSkillInfoCtrl._mapNodeConfig = {
	canvasGroupInfo = {
		sNodeName = "goInfo",
		sComponentName = "CanvasGroup"
	},
	imgIcon = {sComponentName = "Image"},
	txtName = {sComponentName = "TMP_Text"},
	txtLevelMax = {sComponentName = "TMP_Text"},
	txtLevel = {sComponentName = "TMP_Text"},
	NoteLayer = {
		nCount = 5,
		sCtrlName = "Game.UI.StarTower.Depot.DepotDiscNoteLayerCtrl"
	},
	CommonSkill = {
		sCtrlName = "Game.UI.StarTower.Depot.DepotDiscNoteLayerCtrl"
	},
	svLevel = {
		sComponentName = "LoopScrollView"
	},
	imgLock = {}
}
DepotDiscSkillInfoCtrl._mapEventConfig = {}
DepotDiscSkillInfoCtrl._mapRedDotConfig = {}
function DepotDiscSkillInfoCtrl:InitNoteSkill(tbSkill)
	if tbSkill.nType == AllEnum.DiscSkillType.Common then
		self:InitCommonSkill(tbSkill)
	else
		self:InitPassiveSkill(tbSkill)
	end
end
function DepotDiscSkillInfoCtrl:InitCommonSkill(mapSkill)
	self._mapNode.CommonSkill.gameObject:SetActive(true)
	self._mapNode.txtLevelMax.gameObject:SetActive(false)
	self._mapNode.txtLevel.gameObject:SetActive(false)
	for _, v in ipairs(self._mapNode.NoteLayer) do
		v.gameObject:SetActive(false)
	end
	self.mapCommonCfg = ConfigTable.GetData("DiscCommonSkill", mapSkill.nId)
	if not self.mapCommonCfg then
		return
	end
	self.nCommonLayer = mapSkill.nLevel
	local bUnlock = self.nCommonLayer > 0
	NovaAPI.SetTMPText(self._mapNode.txtName, self.mapCommonCfg.Name)
	self:SetPngSprite(self._mapNode.imgIcon, self.mapCommonCfg.Icon)
	local nMaxLayer = #self.mapCommonCfg.ActiveNoteNum
	if 0 < nMaxLayer then
		self._mapNode.svLevel.gameObject:SetActive(true)
		self._mapNode.svLevel:Init(nMaxLayer, self, self.OnGridRefresh, self.OnGridBtnClick)
		self:RefreshCommonSkill()
	else
		self._mapNode.svLevel.gameObject:SetActive(false)
	end
	NovaAPI.SetCanvasGroupAlpha(self._mapNode.canvasGroupInfo, bUnlock and 1 or 0.35)
end
function DepotDiscSkillInfoCtrl:OnGridRefresh(goGrid, gridIndex)
	local nIndex = gridIndex + 1
	local txtNoteLayer = goGrid.transform:Find("btnLevel/AnimRoot/txtNoteLayer"):GetComponent("TMP_Text")
	NovaAPI.SetTMPText(txtNoteLayer, nIndex)
end
function DepotDiscSkillInfoCtrl:OnGridBtnClick(goGrid, gridIndex)
	local nIndex = gridIndex + 1
	if nIndex == self.nCommonLayer then
		return
	end
	self.nCommonLayer = nIndex
	self:RefreshCommonSkill()
end
function DepotDiscSkillInfoCtrl:RefreshCommonSkill()
	local sDesc = UTILS.ParseDiscDesc(self.mapCommonCfg.Desc, self.mapCommonCfg, nil, self.nCommonLayer)
	local tbNote = {}
	for _, v in pairs(self.mapCommonCfg.ActiveNoteType) do
		tbNote[v] = self.mapCommonCfg.ActiveNoteNum[self.nCommonLayer]
	end
	self._mapNode.CommonSkill:Refresh(nil, tbNote, sDesc, self.nCommonLayer > 0)
end
function DepotDiscSkillInfoCtrl:InitPassiveSkill(mapSkill)
	self._mapNode.CommonSkill.gameObject:SetActive(false)
	local skillCfg = ConfigTable.GetData("DiscPassiveSkill", mapSkill.nId)
	if not skillCfg then
		return
	end
	NovaAPI.SetTMPText(self._mapNode.txtName, skillCfg.Name)
	self:SetPngSprite(self._mapNode.imgIcon, skillCfg.Icon)
	local nCurActiveLayer = mapSkill.nLevel
	local nMaxLayer = 0
	for i = 1, 5 do
		local bHasLayer = skillCfg["ActiveParam" .. i] and skillCfg["ActiveParam" .. i] ~= ""
		self._mapNode.NoteLayer[i].gameObject:SetActive(bHasLayer)
		if bHasLayer then
			if nMaxLayer == 0 then
				local bLastlayer = skillCfg["ActiveParam" .. i + 1] == nil or skillCfg["ActiveParam" .. i + 1] == ""
				if bLastlayer then
					nMaxLayer = i
				end
			end
			local sDesc = UTILS.ParseDiscDesc(skillCfg["Desc" .. i], skillCfg)
			local tbLayerNote = decodeJson(skillCfg["ActiveParam" .. i])
			local tbNote = {}
			for k, v in pairs(tbLayerNote) do
				local nNoteId = tonumber(k)
				local nNoteCount = tonumber(v)
				if nNoteId then
					tbNote[nNoteId] = nNoteCount
				end
			end
			self._mapNode.NoteLayer[i]:Refresh(i, tbNote, sDesc, i <= nCurActiveLayer)
		end
	end
	NovaAPI.SetTMPText(self._mapNode.txtLevel, orderedFormat(ConfigTable.GetUIText("StarTower_Depot_Note_Skill_Lv"), nCurActiveLayer, nMaxLayer))
	NovaAPI.SetTMPText(self._mapNode.txtLevelMax, orderedFormat(ConfigTable.GetUIText("StarTower_Depot_Note_Skill_MaxLv"), nCurActiveLayer, nMaxLayer))
	local bUnlock = 0 < nCurActiveLayer
	local bMaxLv = nCurActiveLayer == nMaxLayer
	NovaAPI.SetCanvasGroupAlpha(self._mapNode.canvasGroupInfo, bUnlock and 1 or 0.4)
	self._mapNode.imgLock.gameObject:SetActive(not bUnlock)
	self._mapNode.txtLevelMax.gameObject:SetActive(bMaxLv)
	self._mapNode.txtLevel.gameObject:SetActive(not bMaxLv)
end
return DepotDiscSkillInfoCtrl
