local PenguinCardSlotCtrl = class("PenguinCardSlotCtrl", BaseCtrl)
local WwiseManger = CS.WwiseAudioManager.Instance
PenguinCardSlotCtrl._mapNodeConfig = {
	PenguinCardItem = {
		nCount = 6,
		sCtrlName = "Game.UI.Play_PenguinCard.PenguinCardItemCtrl"
	},
	goEmptySlot = {nCount = 6, sComponentName = "Transform"},
	aniSlot = {
		nCount = 6,
		sNodeName = "goEmptySlot",
		sComponentName = "Animator"
	}
}
PenguinCardSlotCtrl._mapEventConfig = {
	PenguinCard_AddSlot = "OnEvent_AddSlot",
	PenguinCard_SelectPenguinCard = "OnEvent_SelectPenguinCard",
	PenguinCard_SalePenguinCard = "OnEvent_SalePenguinCard"
}
function PenguinCardSlotCtrl:Refresh()
	for i = 1, 6 do
		self:RefreshSlot(i)
	end
end
function PenguinCardSlotCtrl:RefreshSlot(nIndex)
	local mapCard = self._panel.mapLevel.tbPenguinCard[nIndex]
	self._mapNode.PenguinCardItem[nIndex].gameObject:SetActive(mapCard ~= 0)
	self._mapNode.goEmptySlot[nIndex].gameObject:SetActive(mapCard == 0)
	if mapCard == 0 then
		local imgSlotLock = self._mapNode.goEmptySlot[nIndex]:Find("imgSlotLock").gameObject
		imgSlotLock:SetActive(nIndex > self._panel.mapLevel.nSlotCount)
	else
		self._mapNode.PenguinCardItem[nIndex]:Refresh_Slot(mapCard)
	end
end
function PenguinCardSlotCtrl:PlayOutAni()
	for i = 1, 6 do
		local mapCard = self._panel.mapLevel.tbPenguinCard[i]
		if mapCard == 0 then
			self._mapNode.aniSlot[i]:Play("PengUinCard_Slot_Unlock_out")
		else
			self._mapNode.PenguinCardItem[i]:PlaySaleAni()
		end
	end
end
function PenguinCardSlotCtrl:Awake()
end
function PenguinCardSlotCtrl:OnEnable()
end
function PenguinCardSlotCtrl:OnDisable()
end
function PenguinCardSlotCtrl:OnEvent_AddSlot()
	local nIndex = self._panel.mapLevel.nSlotCount
	self._mapNode.aniSlot[nIndex]:Play("PengUinCard_Slot_Unlock_in")
	WwiseManger:PostEvent("Mode_Card_unlock")
	local nAnimTime = NovaAPI.GetAnimClipLength(self._mapNode.aniSlot[nIndex], {
		"PengUinCard_Slot_Unlock_in"
	})
	self:AddTimer(1, nAnimTime, function()
		local imgSlotLock = self._mapNode.goEmptySlot[nIndex]:Find("imgSlotLock").gameObject
		imgSlotLock:SetActive(false)
	end, true, true, true)
end
function PenguinCardSlotCtrl:OnEvent_SelectPenguinCard(nSlot, bUpgrade)
	self._mapNode.PenguinCardItem[nSlot].gameObject:SetActive(true)
	if bUpgrade then
		local callback = function()
			self._mapNode.PenguinCardItem[nSlot]:Refresh_Slot(self._panel.mapLevel.tbPenguinCard[nSlot])
		end
		self._mapNode.PenguinCardItem[nSlot]:PlayUpgradeAni(callback)
	else
		self._mapNode.PenguinCardItem[nSlot]:Refresh_Slot(self._panel.mapLevel.tbPenguinCard[nSlot])
		local callback = function()
			self._mapNode.goEmptySlot[nSlot].gameObject:SetActive(false)
		end
		self._mapNode.PenguinCardItem[nSlot]:PlaySelectAni(callback)
	end
end
function PenguinCardSlotCtrl:OnEvent_SalePenguinCard(nSlot)
	self._mapNode.goEmptySlot[nSlot].gameObject:SetActive(true)
	local callback = function()
		self._mapNode.PenguinCardItem[nSlot].gameObject:SetActive(false)
	end
	self._mapNode.PenguinCardItem[nSlot]:PlaySaleAni(callback)
end
return PenguinCardSlotCtrl
