local JointDrillBuildItemCtrl = class("JointDrillBuildItemCtrl", BaseCtrl)
JointDrillBuildItemCtrl._mapNodeConfig = {
	goBuildItem = {},
	txtBuildTitle = {sComponentName = "TMP_Text"},
	txtBattleTime = {sComponentName = "TMP_Text"},
	txtScoreCn = {
		sComponentName = "TMP_Text",
		sLanguageId = "JointDrill_Build_Score_Text"
	},
	imgBuildScore = {sComponentName = "Image"},
	charItem = {nCount = 3},
	imgItemIcon = {nCount = 3, sComponentName = "Image"},
	imgItemRare = {nCount = 3, sComponentName = "Image"},
	txtRank = {nCount = 3, sComponentName = "TMP_Text"},
	txtDamage = {
		sComponentName = "TMP_Text",
		sLanguageId = "JointDrill_Build_Damage_Text"
	},
	txtDamageValue = {sComponentName = "TMP_Text"},
	txtLeaderCn = {
		sComponentName = "TMP_Text",
		sLanguageId = "Build_Leader"
	},
	txtSubCn = {
		nCount = 2,
		sComponentName = "TMP_Text",
		sLanguageId = "Build_Sub"
	},
	imgEmpty = {}
}
JointDrillBuildItemCtrl._mapEventConfig = {}
JointDrillBuildItemCtrl._mapRedDotConfig = {}
function JointDrillBuildItemCtrl:GetBuildRank(nScore)
	local curIdx = -1
	local forEachReward = function(mapData)
		if nScore >= mapData.MinGrade and curIdx < mapData.Id then
			curIdx = mapData.Id
		end
	end
	ForEachTableLine(DataTable.StarTowerBuildRank, forEachReward)
	if curIdx < 0 then
		curIdx = 1
	end
	return curIdx
end
function JointDrillBuildItemCtrl:SetItem(nIndex, mapBuild, nLevelId)
	self._mapNode.goBuildItem.gameObject:SetActive(mapBuild ~= nil)
	self._mapNode.imgEmpty.gameObject:SetActive(mapBuild == nil)
	if mapBuild == nil then
		return
	end
	self.nLevelId = nLevelId
	NovaAPI.SetTMPText(self._mapNode.txtBuildTitle, orderedFormat(ConfigTable.GetUIText("JointDrill_Build_Index"), nIndex))
	local setBuildData = function(mapData)
		local tbChar = {}
		local nScore = 0
		if mapData == nil then
			for _, v in ipairs(mapBuild.Chars) do
				table.insert(tbChar, v.CharId)
			end
			nScore = self:GetBuildRank(mapBuild.BuildScore)
		else
			for _, mapChar in ipairs(mapData.tbChar) do
				table.insert(tbChar, mapChar.nTid)
			end
			nScore = mapData.mapRank.Id
		end
		for i = 1, 3 do
			local mapCharCfg = ConfigTable.GetData_Character(tbChar[i])
			local nCharSkinId = PlayerData.Char:GetCharSkinId(tbChar[i])
			local mapCharSkin = ConfigTable.GetData_CharacterSkin(nCharSkinId)
			if mapCharCfg ~= nil and mapCharSkin ~= nil then
				local sFrame = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[mapCharCfg.Grade]
				self:SetPngSprite(self._mapNode.imgItemIcon[i], mapCharSkin.Icon .. AllEnum.CharHeadIconSurfix.XXL)
				self:SetAtlasSprite(self._mapNode.imgItemRare[i], "12_rare", sFrame)
				local nLevel = PlayerData.Char:GetCharLv(tbChar[i])
				NovaAPI.SetTMPText(self._mapNode.txtRank[i], nLevel)
			end
		end
		local sScore = "Icon/BuildRank/BuildRank_" .. nScore
		self:SetPngSprite(self._mapNode.imgBuildScore, sScore)
	end
	PlayerData.Build:GetBuildDetailData(setBuildData, mapBuild.BuildId)
	NovaAPI.SetTMPText(self._mapNode.txtDamageValue, self:ThousandsNumber(mapBuild.Damage))
	local nMin = math.floor(mapBuild.Time / 60000)
	local nRemain = mapBuild.Time % 60000
	local nSec = math.floor(nRemain / 1000)
	local nMs = mapBuild.Time % 1000
	local sTime = string.format("%02d:%02d:%03d", nMin, nSec, nMs)
	NovaAPI.SetTMPText(self._mapNode.txtBattleTime, orderedFormat(ConfigTable.GetUIText("JointDrill_Build_Time_Text"), sTime))
end
function JointDrillBuildItemCtrl:Awake()
end
function JointDrillBuildItemCtrl:OnEnable()
end
function JointDrillBuildItemCtrl:OnDisable()
end
function JointDrillBuildItemCtrl:OnDestroy()
end
return JointDrillBuildItemCtrl
