local PopupFunctionUnlockCtrl = class("PopupFunctionUnlockCtrl", BaseCtrl)
PopupFunctionUnlockCtrl._mapNodeConfig = {
	goBlur = {
		sNodeName = "t_fullscreen_blur_blue"
	},
	goContent = {
		sNodeName = "----SafeAreaRoot----"
	},
	TMPTitle = {sComponentName = "TMP_Text"},
	TMPDesc = {sComponentName = "TMP_Text"},
	btnClose = {
		sComponentName = "Button",
		callback = "OnBtnClick_Close"
	},
	goSnapShot = {sNodeName = "snapshot"},
	imgUnLockIcon = {sComponentName = "Image"},
	ani = {
		sNodeName = "----SafeAreaRoot----",
		sComponentName = "Animator"
	}
}
PopupFunctionUnlockCtrl._mapEventConfig = {}
function PopupFunctionUnlockCtrl:ShowUnlockFunc()
	if #self.tbFuncId > 0 then
		self._mapNode.ani:Play("Empty", 0, 0)
		self.nFuncId = table.remove(self.tbFuncId, 1)
		local mapFuncCfgData = ConfigTable.GetData("OpenFunc", self.nFuncId)
		if mapFuncCfgData == nil then
			printError("OpenFunc data Missing:" .. self.nFuncId)
			self._mapNode.TMPTitle.gameObject:SetActive(false)
			self._mapNode.TMPDesc.gameObject:SetActive(false)
			return
		end
		NovaAPI.SetTMPText(self._mapNode.TMPTitle, mapFuncCfgData.Name)
		NovaAPI.SetTMPText(self._mapNode.TMPDesc, mapFuncCfgData.Desc)
		self:SetPngSprite(self._mapNode.imgUnLockIcon, mapFuncCfgData.Icon)
		NovaAPI.SetImageNativeSize(self._mapNode.imgUnLockIcon)
		self._mapNode.ani:Play("PopupFunctionUnlockPanel_in", 0, 0)
		self.bAnimPlay = true
		self.animPlayTimer = self:AddTimer(1, self.nAnimLen, self.AnimPlayFinish, true, true, true, true)
		CS.WwiseAudioManager.Instance:PostEvent("ui_level_unlock")
		NovaAPI.UIEffectSnapShotCapture(self._mapNode.goSnapShot)
	else
		EventManager.Hit(EventId.ClosePanel, PanelId.PopupFunctionUnlock)
		if self.callback ~= nil then
			self.callback()
		end
	end
end
function PopupFunctionUnlockCtrl:AnimPlayFinish()
	self.bAnimPlay = false
	local stateInfo = self._mapNode.ani:GetCurrentAnimatorStateInfo()
	local nTime = stateInfo.normalizedTime
	if nTime < 1 / self.nAnimLen then
		CS.WwiseAudioManager.Instance:PostEvent("ui_level_unlock_result")
	end
end
function PopupFunctionUnlockCtrl:Awake()
end
function PopupFunctionUnlockCtrl:FadeIn()
end
function PopupFunctionUnlockCtrl:FadeOut()
end
function PopupFunctionUnlockCtrl:OnEnable()
	self.bAnimPlay = false
	self.animPlayTimer = nil
	self.nAnimLen = NovaAPI.GetAnimClipLength(self._mapNode.ani, {
		"PopupFunctionUnlockPanel_in"
	})
	local tbParam = self:GetPanelParam()
	if type(tbParam) == "table" then
		self.tbFuncId = tbParam[1]
		self.callback = tbParam[2]
	end
	self._mapNode.goContent.gameObject:SetActive(false)
	self._mapNode.goBlur.gameObject:SetActive(true)
	local wait = function()
		coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
		self._mapNode.goContent.gameObject:SetActive(true)
		self:ShowUnlockFunc()
	end
	cs_coroutine.start(wait)
end
function PopupFunctionUnlockCtrl:OnDisable()
end
function PopupFunctionUnlockCtrl:OnDestroy()
end
function PopupFunctionUnlockCtrl:OnRelease()
end
function PopupFunctionUnlockCtrl:OnBtnClick_Close()
	if self.bAnimPlay then
		self._mapNode.ani:CrossFade("PopupFunctionUnlockPanel_in", 0, -1, 1)
		self.animPlayTimer:Cancel(true)
		return
	end
	self:ShowUnlockFunc()
end
return PopupFunctionUnlockCtrl
