local GachaGuaranteeCtrl = class("GachaGuaranteeCtrl", BaseCtrl)
GachaGuaranteeCtrl._mapNodeConfig = {
	GridSmallOutfit = {},
	GridSmall = {},
	TMPGuaranteeTitle = {sComponentName = "TMP_Text"},
	TMPGuarantee = {sComponentName = "TMP_Text"},
	TMPPoolDesc = {sComponentName = "TMP_Text"},
	rtGuaranteeItems = {sComponentName = "Transform"},
	Content = {}
}
GachaGuaranteeCtrl._mapEventConfig = {}
GachaGuaranteeCtrl._mapRedDotConfig = {}
function GachaGuaranteeCtrl:Awake()
end
function GachaGuaranteeCtrl:FadeIn()
end
function GachaGuaranteeCtrl:FadeOut()
end
function GachaGuaranteeCtrl:OnEnable()
end
function GachaGuaranteeCtrl:OnDisable()
	delChildren(self._mapNode.rtGuaranteeItems)
end
function GachaGuaranteeCtrl:OnDestroy()
end
function GachaGuaranteeCtrl:OnRelease()
end
function GachaGuaranteeCtrl:Refresh(nPoolId)
	local mapPoolCfgData = ConfigTable.GetData("Gacha", nPoolId)
	if mapPoolCfgData == nil then
		self._mapNode.Content:SetActive(false)
		return
	end
	local nStrogeId = mapPoolCfgData.StorageId
	local mapStorageTypeCfgData = ConfigTable.GetData("GachaType", nStrogeId)
	local mapStorageCfgData = ConfigTable.GetData("GachaStorage", nStrogeId)
	if mapStorageTypeCfgData == nil or mapStorageCfgData == nil then
		self._mapNode.Content:SetActive(false)
		return
	end
	local GetContent = function(nItmeId)
		local ret = ""
		local mapCfgData = ConfigTable.GetData_Item(nItmeId)
		if mapCfgData ~= nil then
			if mapCfgData.Type == GameEnum.itemType.Char then
				local mapCharCfg = ConfigTable.GetData_Character(nItmeId)
				if mapCharCfg ~= nil then
					ret = string.format("%s·%s", ConfigTable.GetUIText("T_Element_Attr_" .. mapCharCfg.EET), mapCharCfg.Name)
				end
			elseif mapCfgData.Type == GameEnum.itemType.Disc then
				local mapDiscCfg = ConfigTable.GetData("Disc", nItmeId)
				if mapDiscCfg ~= nil then
					ret = string.format("%s·%s", ConfigTable.GetUIText("T_Element_Attr_" .. mapDiscCfg.EET), mapCfgData.Title)
				end
			end
		end
		return ret
	end
	self._mapNode.Content:SetActive(true)
	NovaAPI.SetTMPText(self._mapNode.TMPGuaranteeTitle, orderedFormat(mapStorageTypeCfgData.Desc9, mapPoolCfgData.Name))
	local tbSSRUpChar = {}
	local tbSSRUpOutfit = {}
	local tbSRUpChar = {}
	local tbSRUpOutfit = {}
	local tbSSRChar = {}
	local tbSSROutfit = {}
	local tbSRChar = {}
	local tbSROutfit = {}
	local tbROutfit = {}
	local tbUpItemList, tbItemList = PlayerData.Gacha:GetPoolProbDetail(nPoolId)
	for _, v in pairs(tbUpItemList) do
		local itemConfig = ConfigTable.GetData_Item(v.nGoodsId)
		if itemConfig.Type == GameEnum.itemType.Char then
			if itemConfig.Rarity == GameEnum.itemRarity.SSR then
				table.insert(tbSSRUpChar, v.nGoodsId)
				table.insert(tbSSRChar, v.nGoodsId)
			else
				table.insert(tbSRUpChar, v.nGoodsId)
				table.insert(tbSRChar, v.nGoodsId)
			end
		elseif itemConfig.Rarity == GameEnum.itemRarity.SSR then
			table.insert(tbSSRUpOutfit, v.nGoodsId)
			table.insert(tbSSROutfit, v.nGoodsId)
		else
			table.insert(tbSRUpOutfit, v.nGoodsId)
			table.insert(tbSROutfit, v.nGoodsId)
		end
	end
	for _, v in pairs(tbItemList) do
		local itemConfig = ConfigTable.GetData_Item(v.nGoodsId)
		if itemConfig.Type == GameEnum.itemType.Char then
			if itemConfig.Rarity == GameEnum.itemRarity.SSR then
				table.insert(tbSSRChar, v.nGoodsId)
			else
				table.insert(tbSRChar, v.nGoodsId)
			end
		elseif itemConfig.Rarity == GameEnum.itemRarity.SSR then
			table.insert(tbSSROutfit, v.nGoodsId)
		elseif itemConfig.Rarity == GameEnum.itemRarity.SR then
			table.insert(tbSROutfit, v.nGoodsId)
		else
			table.insert(tbROutfit, v.nGoodsId)
		end
	end
	local nCount = 0
	local upItemName = ""
	if nStrogeId == GameEnum.gachaStorageType.DiscCardPool or nStrogeId == GameEnum.gachaStorageType.CharacterCardPool then
		local nAupMissing = PlayerData.Gacha:GetAMissTimesById(nPoolId)
		local nMaxMissing = mapPoolCfgData.ATypeGuaranteeTimes
		local nSum = nMaxMissing - nAupMissing
		nCount = nSum
	else
		local nAupMissing = PlayerData.Gacha:GetAupMissTimesById(nPoolId)
		local nMaxMissing = mapStorageCfgData.AUpGuaranteeTimes
		local nSum = nMaxMissing - nAupMissing
		nCount = nSum
		if 0 < #tbSSRUpChar then
			upItemName = GetContent(tbSSRUpChar[1])
		elseif 0 < #tbSSRUpOutfit then
			upItemName = GetContent(tbSSROutfit[1])
		end
	end
	NovaAPI.SetTMPText(self._mapNode.TMPGuarantee, orderedFormat(mapStorageTypeCfgData.Desc10, nCount))
	NovaAPI.SetTMPText(self._mapNode.TMPPoolDesc, orderedFormat(mapStorageTypeCfgData.Desc11, mapPoolCfgData.Name, upItemName))
	local SetCharGrid = function(goGrid, nTid)
		goGrid:SetActive(true)
		local mapCharCfgData = ConfigTable.GetData_Item(nTid)
		local mapCharCfg = ConfigTable.GetData_Character(nTid)
		local mapCharSkin = ConfigTable.GetData_CharacterSkin(mapCharCfg.DefaultSkinId)
		local sFrame = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[mapCharCfg.Grade]
		local imgIcon = goGrid.transform:Find("AnimRoot/rtScaleRoot/tc_char_03/imgIconBg/imgItemIcon"):GetComponent("Image")
		local imgRare = goGrid.transform:Find("AnimRoot/rtScaleRoot/tc_char_03/imgItemRare"):GetComponent("Image")
		local imgElement = goGrid.transform:Find("AnimRoot/rtScaleRoot/tc_char_03/imgElement"):GetComponent("Image")
		local TMPName = goGrid.transform:Find("AnimRoot/TMPName"):GetComponent("TMP_Text")
		NovaAPI.SetTMPText(TMPName, mapCharCfgData.Title)
		self:SetPngSprite(imgIcon, mapCharSkin.Icon .. AllEnum.CharHeadIconSurfix.XXL)
		self:SetAtlasSprite(imgElement, "12_rare", AllEnum.Star_Element[mapCharCfg.EET].icon)
		self:SetAtlasSprite(imgRare, "12_rare", sFrame)
		local btnGrid = goGrid:GetComponent("UIButton")
		if btnGrid ~= nil then
			local ui_func = ui_handler(self, self.OnBtnClick_ShowCharInfo, goGrid, nTid)
			btnGrid.onClick:AddListener(ui_func)
		end
	end
	local SetOutfitGrid = function(goGrid, nTid)
		goGrid:SetActive(true)
		local mapItemCfgData = ConfigTable.GetData_Item(nTid)
		local imgIcon = goGrid.transform:Find("AnimRoot/rtScaleRoot/imgIcon"):GetComponent("Image")
		local imgRare = goGrid.transform:Find("AnimRoot/rtScaleRoot/imgRare"):GetComponent("Image")
		local imgElement = goGrid.transform:Find("AnimRoot/rtScaleRoot/imgElement"):GetComponent("Image")
		local mapDiscCfgData = ConfigTable.GetData("Disc", nTid)
		local TMPName = goGrid.transform:Find("AnimRoot/TMPName"):GetComponent("TMP_Text")
		NovaAPI.SetTMPText(TMPName, mapItemCfgData.Title)
		self:SetPngSprite(imgIcon, mapItemCfgData.Icon .. AllEnum.OutfitIconSurfix.Item)
		self:SetAtlasSprite(imgElement, "12_rare", AllEnum.Star_Element[mapDiscCfgData.EET].icon)
		self:SetSprite_FrameColor(imgRare, mapItemCfgData.Rarity, AllEnum.FrameType_New.Item)
		local btnGrid = goGrid:GetComponent("UIButton")
		if btnGrid ~= nil then
			local ui_func = ui_handler(self, self.OnBtnClick_ShowDiscInfo, goGrid, nTid)
			btnGrid.onClick:AddListener(ui_func)
		end
	end
	delChildren(self._mapNode.rtGuaranteeItems)
	if nStrogeId == GameEnum.gachaStorageType.DiscCardPool or nStrogeId == GameEnum.gachaStorageType.CharacterCardPool then
		for _, nTid in ipairs(tbSSRChar) do
			local goGrid = instantiate(self._mapNode.GridSmall, self._mapNode.rtGuaranteeItems)
			SetCharGrid(goGrid, nTid)
		end
		for _, nTid in ipairs(tbSSROutfit) do
			local goGrid = instantiate(self._mapNode.GridSmallOutfit, self._mapNode.rtGuaranteeItems)
			SetOutfitGrid(goGrid, nTid)
		end
	else
		for _, nTid in ipairs(tbSSRUpChar) do
			local goGrid = instantiate(self._mapNode.GridSmall, self._mapNode.rtGuaranteeItems)
			SetCharGrid(goGrid, nTid)
		end
		for _, nTid in ipairs(tbSSRUpOutfit) do
			local goGrid = instantiate(self._mapNode.GridSmallOutfit, self._mapNode.rtGuaranteeItems)
			SetOutfitGrid(goGrid, nTid)
		end
	end
end
function GachaGuaranteeCtrl:OnBtnClick_ShowCharInfo(btn, nCharId)
	EventManager.Hit(EventId.OpenPanel, PanelId.CharBgTrialPanel, PanelId.CharInfoTrial, nCharId)
end
function GachaGuaranteeCtrl:OnBtnClick_ShowDiscInfo(btn, nDiscId)
	EventManager.Hit(EventId.OpenPanel, PanelId.DiscSample, nDiscId)
end
return GachaGuaranteeCtrl
