local BuildAttributeCtrl = class("BuildAttributeCtrl", BaseCtrl)
BuildAttributeCtrl._mapNodeConfig = {
	aniBlur = {sComponentName = "Animator"},
	aniBlur2 = {sComponentName = "Animator"},
	btnBlur = {
		sNodeName = "snapshot",
		sComponentName = "Button",
		callback = "OnBtnClick_Close"
	},
	btnBlur2 = {
		sNodeName = "snapshot2",
		sComponentName = "Button",
		callback = "OnBtnClick_Close"
	},
	window = {},
	aniWindow = {sNodeName = "window", sComponentName = "Animator"},
	txtWindowTitle = {
		sComponentName = "TMP_Text",
		sLanguageId = "Note_SkillTitle"
	},
	btnClose = {
		sComponentName = "UIButton",
		callback = "OnBtnClick_Close"
	},
	sv = {
		sComponentName = "LoopScrollView"
	}
}
BuildAttributeCtrl._mapEventConfig = {}
function BuildAttributeCtrl:Open()
	self._mapNode.aniBlur.gameObject:SetActive(self.bBlur)
	self._mapNode.aniBlur2.gameObject:SetActive(not self.bBlur)
	self:InitData()
	self:PlayInAni()
	self:Refresh()
end
function BuildAttributeCtrl:InitData()
	self.tbBuildRank = {}
	local func_ForEach = function(mapData)
		self.tbBuildRank[mapData.Level] = mapData
	end
	ForEachTableLine(DataTable.StarTowerBuildRank, func_ForEach)
	self.nListCount = #self.tbBuildRank
end
function BuildAttributeCtrl:Refresh()
	if self.nListCount < 0 then
		return
	end
	self._mapNode.sv:Init(self.nListCount, self, self.OnGridRefresh, self.OnGridBtnClick)
end
function BuildAttributeCtrl:OnGridRefresh(goGrid, gridIndex)
	local nIndex = gridIndex + 1
	local rtGrid = goGrid.transform:Find("btnGrid/AnimRoot")
	local txtLevel = rtGrid.transform:Find("layout/txtLevel"):GetComponent("TMP_Text")
	local txtLevelDesc = rtGrid.transform:Find("layout/txtLevelDesc"):GetComponent("TMP_Text")
	local imgSelect = rtGrid.transform:Find("imgSelect").gameObject
	local imgOnBg = rtGrid.transform:Find("imgOnBg").gameObject
	local imgOffBg = rtGrid.transform:Find("imgOffBg").gameObject
	local imgOn = rtGrid.transform:Find("layout/imgOn").gameObject
	local imgOff = rtGrid.transform:Find("layout/imgOff").gameObject
	NovaAPI.SetTMPText(txtLevel, orderedFormat(ConfigTable.GetUIText("StarTower_Disc_Info_Level"), nIndex))
	local bOn = self.nLevel > 0 and nIndex == self.nLevel
	imgSelect:SetActive(bOn)
	imgOnBg:SetActive(bOn)
	imgOn:SetActive(bOn)
	imgOffBg:SetActive(not bOn)
	imgOff:SetActive(not bOn)
	local mapData = self.tbBuildRank[nIndex]
	NovaAPI.SetTMPText(txtLevelDesc, UTILS.ParseParamDesc(mapData.Desc, mapData))
end
function BuildAttributeCtrl:OnGridBtnClick(goGrid, gridIndex)
	local nIndex = gridIndex + 1
end
function BuildAttributeCtrl:PlayInAni()
	self._mapNode.window:SetActive(true)
	self._mapNode.aniWindow:Play("t_window_04_t_in")
	EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
end
function BuildAttributeCtrl:PlayOutAni()
	if self.bBlur then
		self._mapNode.aniWindow:Play("t_window_04_t_out")
		self._mapNode.aniBlur:SetTrigger("tOut")
		self:AddTimer(1, 0.2, "Close", true, true, true)
		EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
	else
		self._mapNode.aniBlur2.gameObject:SetActive(false)
		self:Close()
	end
end
function BuildAttributeCtrl:Close()
	self._mapNode.window:SetActive(false)
	EventManager.Hit(EventId.ClosePanel, PanelId.BuildAttribute)
end
function BuildAttributeCtrl:Awake()
	self._mapNode.window:SetActive(false)
	self.bBlur = true
	local tbParam = self:GetPanelParam()
	if type(tbParam) == "table" then
		self.nLevel = tbParam[1]
		if tbParam[2] ~= nil then
			self.bBlur = tbParam[2]
		end
	end
end
function BuildAttributeCtrl:OnEnable()
	self:Open()
end
function BuildAttributeCtrl:OnDisable()
end
function BuildAttributeCtrl:OnDestroy()
end
function BuildAttributeCtrl:OnBtnClick_Close()
	self:PlayOutAni()
end
return BuildAttributeCtrl
