local StarTowerBuildBriefItem = class("StarTowerBuildBriefItem", BaseCtrl)
local PanelState = {
	Normal = 1,
	Delete = 2,
	Preference = 3
}
StarTowerBuildBriefItem._mapNodeConfig = {
	img_SelectDelete = {},
	img_SelectPreference = {},
	btn_LockIcon = {sComponentName = "Button"},
	btn_grid = {
		sComponentName = "UIButton",
		callback = "OnBtnClick_Grid"
	},
	btn_Lock = {
		sComponentName = "UIButton",
		callback = "OnBtnClick_Lock"
	},
	btn_Detail = {
		sComponentName = "UIButton",
		callback = "OnBtnClick_Detail"
	},
	btn_Preference = {
		sComponentName = "Button",
		callback = "OnBtnClick_Preference"
	},
	imgRareFrame = {sComponentName = "Image"},
	imgRareScore = {sComponentName = "Image"},
	txtBuildName = {sComponentName = "TMP_Text"},
	imgLike = {},
	txtLeaderCn = {
		sComponentName = "TMP_Text",
		sLanguageId = "StarTower_Build_Leader"
	},
	txtSubCn = {
		nCount = 2,
		sComponentName = "TMP_Text",
		sLanguageId = "StarTower_Build_Sub"
	},
	imgCharIcon = {nCount = 3, sComponentName = "Image"},
	imgCharFrame = {nCount = 3, sComponentName = "Image"},
	txtPotentialCount = {nCount = 3, sComponentName = "TMP_Text"},
	imgCharElement = {nCount = 3, sComponentName = "Image"},
	txtChar = {
		sComponentName = "TMP_Text",
		sLanguageId = "StarTower_Build_Char_Title"
	},
	txtDisc = {
		sComponentName = "TMP_Text",
		sLanguageId = "StarTower_Build_MainDisc_Title"
	},
	goDiscItem = {
		nCount = 3,
		sCtrlName = "Game.UI.StarTower.Build.BuildSimpleDiscItem"
	},
	btnExport = {sComponentName = "UIButton"},
	objUnavailable = {},
	objUnavailableIcon = {sComponentName = "Image"},
	imgRareScoreMask = {sComponentName = "Image"},
	texUnavailable = {
		sComponentName = "TMP_Text",
		sLanguageId = "InfinityTower_Build_NotAvailable"
	},
	imgUnavailable = {},
	imgBuildUsed = {},
	txtBuildUsed = {
		sComponentName = "TMP_Text",
		sLanguageId = "JointDrill_Build_Used"
	},
	imgCharUsed = {},
	txtCharUsed = {
		sComponentName = "TMP_Text",
		sLanguageId = "JointDrill_Build_Char_Used"
	}
}
StarTowerBuildBriefItem._mapEventConfig = {}
function StarTowerBuildBriefItem:RefreshGrid(mapData, nPanelState, bSelectDelete, bCheckOut, bCheckIn, nType)
	self._mapData = mapData
	self._nType = nType
	self:RefreshInfo()
	self:RefreshChar()
	self:RefreshDisc()
	if nPanelState == PanelState.Delete then
		self._mapNode.img_SelectDelete:SetActive(bSelectDelete)
		self._mapNode.img_SelectPreference:SetActive(false)
	elseif nPanelState == PanelState.Preference then
		if bCheckOut then
			self._mapNode.img_SelectPreference:SetActive(false)
		elseif bCheckIn then
			self._mapNode.img_SelectPreference:SetActive(true)
		else
			self._mapNode.img_SelectPreference:SetActive(mapData.bPreference)
		end
		self._mapNode.img_SelectDelete:SetActive(false)
	else
		self._mapNode.img_SelectPreference:SetActive(false)
		self._mapNode.img_SelectDelete:SetActive(false)
	end
	self._mapNode.btnExport.gameObject:SetActive(false)
	EventManager.Hit("BuildItemExport", self._mapNode.btnExport, self._mapData.nBuildId)
	if self._nType and self._nType == AllEnum.RegionBossFormationType.InfinityTower or self._nType == AllEnum.RegionBossFormationType.Vampire or self._nType == AllEnum.RegionBossFormationType.JointDrill then
		local sScore = "Icon/BuildRank/BuildRank_" .. self._mapData.mapRank.Id
		self:SetPngSprite(self._mapNode.imgRareScoreMask, sScore)
		local bShowUnavailable = false
		if self._nType == AllEnum.RegionBossFormationType.InfinityTower or self._nType == AllEnum.RegionBossFormationType.Vampire then
			bShowUnavailable = not self._mapData.isCanUse
		else
			bShowUnavailable = self._mapData.bBuildUsed or self._mapData.bCharUsed
		end
		self._mapNode.objUnavailable:SetActive(bShowUnavailable)
		self._mapNode.imgUnavailable:SetActive(self._mapData.isCanUse)
		self._mapNode.imgBuildUsed:SetActive(self._mapData.bBuildUsed)
		self._mapNode.imgCharUsed:SetActive(self._mapData.bCharUsed and not self._mapData.bBuildUsed)
		local sKey = self._nType == AllEnum.RegionBossFormationType.InfinityTower and "InfinityTower_Build_NotAvailable" or "VampireFormation_Unable"
		NovaAPI.SetTMPText(self._mapNode.texUnavailable, ConfigTable.GetUIText(sKey))
	else
		self._mapNode.objUnavailable:SetActive(false)
	end
end
function StarTowerBuildBriefItem:RefreshInfo()
	local sScore = "Icon/BuildRank/BuildRank_" .. self._mapData.mapRank.Id
	local sFrame = AllEnum.FrameType_New.BuildRankDB .. AllEnum.FrameColor_New[self._mapData.mapRank.Rarity]
	self:SetPngSprite(self._mapNode.imgRareScore, sScore)
	self:SetAtlasSprite(self._mapNode.imgRareFrame, "12_rare", sFrame)
	if self._mapData.sName == "" or self._mapData.sName == nil then
		NovaAPI.SetTMPText(self._mapNode.txtBuildName, ConfigTable.GetUIText("RoguelikeBuild_EmptyBuildName"))
	else
		NovaAPI.SetTMPText(self._mapNode.txtBuildName, self._mapData.sName)
	end
	self._mapNode.imgLike:SetActive(self._mapData.bPreference)
	self._mapNode.btn_LockIcon.interactable = self._mapData.bLock
end
function StarTowerBuildBriefItem:RefreshChar()
	for i = 1, 3 do
		local nCharTid = self._mapData.tbChar[i].nTid
		local nCharSkinId = PlayerData.Char:GetCharSkinId(nCharTid)
		local mapCharSkin = ConfigTable.GetData_CharacterSkin(nCharSkinId)
		local mapCharCfg = ConfigTable.GetData_Character(nCharTid)
		local sFrame = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[mapCharCfg.Grade]
		self:SetPngSprite(self._mapNode.imgCharIcon[i], mapCharSkin.Icon .. AllEnum.CharHeadIconSurfix.XXL)
		self:SetAtlasSprite(self._mapNode.imgCharFrame[i], "12_rare", sFrame)
		NovaAPI.SetTMPText(self._mapNode.txtPotentialCount[i], self._mapData.tbChar[i].nPotentialCount)
		self:SetAtlasSprite(self._mapNode.imgCharElement[i], "12_rare", AllEnum.Char_Element[mapCharCfg.EET].icon)
	end
end
function StarTowerBuildBriefItem:RefreshDisc()
	local tbDisc = self._mapData.tbDisc
	local nIndex = 1
	for _, nId in ipairs(tbDisc) do
		if nil ~= self._mapNode.goDiscItem[nIndex] and nIndex <= 3 then
			self._mapNode.goDiscItem[nIndex]:Init(nId)
		end
		nIndex = nIndex + 1
	end
end
function StarTowerBuildBriefItem:Init(parentCtrl)
	self._parentCtrl = parentCtrl
end
function StarTowerBuildBriefItem:SetLockState(bLock)
	self._mapNode.btn_LockIcon.interactable = bLock
end
function StarTowerBuildBriefItem:SetPreferenceState(bPreference)
	self._mapNode.imgLike:SetActive(bPreference)
end
function StarTowerBuildBriefItem:SetSelectDeleteState(bSelect)
	self._mapNode.img_SelectDelete:SetActive(bSelect)
end
function StarTowerBuildBriefItem:SetSelectPreferenceState(bSelect)
	self._mapNode.img_SelectPreference:SetActive(bSelect)
end
function StarTowerBuildBriefItem:Awake()
end
function StarTowerBuildBriefItem:OnEnable()
end
function StarTowerBuildBriefItem:OnDisable()
end
function StarTowerBuildBriefItem:OnDestroy()
end
function StarTowerBuildBriefItem:OnRelease()
end
function StarTowerBuildBriefItem:OnBtnClick_Grid(btn)
	if self._nType then
		if self._nType == AllEnum.RegionBossFormationType.InfinityTower or self._nType == AllEnum.RegionBossFormationType.Vampire then
			if not self._mapData.isCanUse then
				local sKey = self._nType == AllEnum.RegionBossFormationType.InfinityTower and "InfinityTower_Build_NotMeetingCond" or "VampireFormation_UnableTips"
				local strTips = ConfigTable.GetUIText(sKey)
				EventManager.Hit(EventId.OpenMessageBox, strTips)
				return
			end
		elseif self._nType == AllEnum.RegionBossFormationType.JointDrill and (self._mapData.bCharUsed or self._mapData.bBuildUsed) then
			local sKey = "JointDrill_Build_NotMeetingCond"
			local strTips = ConfigTable.GetUIText(sKey)
			EventManager.Hit(EventId.OpenMessageBox, strTips)
			return
		end
	end
	if self._nType and self._nType == AllEnum.RegionBossFormationType.InfinityTower or self._nType == AllEnum.RegionBossFormationType.Vampire then
	end
	local nIndex = tonumber(self.gameObject.name) + 1
	self._parentCtrl:OnBtnClickGrid(nIndex, self)
end
function StarTowerBuildBriefItem:OnBtnClick_Lock(btn)
	local nIndex = tonumber(self.gameObject.name) + 1
	self._parentCtrl:OnBuildGridLock(nIndex, self)
end
function StarTowerBuildBriefItem:OnBtnClick_Detail(btn)
	local nIndex = tonumber(self.gameObject.name) + 1
	self._parentCtrl:OnBuildGridDetail(nIndex, self)
end
function StarTowerBuildBriefItem:OnBtnClick_Preference(btn)
	local nIndex = tonumber(self.gameObject.name) + 1
	self._parentCtrl:OnBuildGridPreference(nIndex, self)
end
return StarTowerBuildBriefItem
