local SuccessBarCtrl = class("SuccessBarCtrl", BaseCtrl)
local nFrameHeight = 70
local nStartHeight = 48
SuccessBarCtrl._mapNodeConfig = {
	BarBg = {
		sComponentName = "RectTransform"
	},
	aniFrame = {sNodeName = "imgFrameBg", sComponentName = "Animator"},
	rtFrame = {
		sNodeName = "imgFrameBg",
		sComponentName = "RectTransform"
	},
	Mask = {
		sComponentName = "RectTransform"
	}
}
SuccessBarCtrl._mapEventConfig = {}
function SuccessBarCtrl:PlayAni(nType, tbAni, nSpeed)
	self.tbAni = tbAni
	self._mapNode.aniFrame:Play("SuccessBar_in" .. nType)
	local nTime = 0.6
	if nSpeed then
		self._mapNode.aniFrame.speed = nSpeed
		nTime = 0.6 / nSpeed
	end
	local wait = function()
		coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
		self:AddTimer(1, nTime, "PlayContentAni", true, true, true)
	end
	cs_coroutine.start(wait)
	EventManager.Hit(EventId.BlockInput, true)
end
function SuccessBarCtrl:PlayContentAni()
	local nAniCount = #self.tbAni
	local nHeight = self._mapNode.BarBg.rect.height
	local nTotalHeight = (nHeight + nFrameHeight) / 2 - nStartHeight
	self._mapNode.aniFrame.enabled = false
	self._mapNode.rtFrame:DOLocalMoveY(nTotalHeight, 0.167):SetUpdate(true):SetEase(Ease.OutCubic)
	self._mapNode.Mask:DOSizeDelta(Vector2(0, nHeight), 0.167):SetUpdate(true):SetEase(Ease.OutCubic)
	local sequence = DOTween.Sequence()
	for i = 1, nAniCount do
		sequence:AppendCallback(function()
			if self.tbAni[i].bMulti then
				for _, v in ipairs(self.tbAni[i]) do
					v:SetTrigger("tIn")
				end
			else
				self.tbAni[i]:SetTrigger("tIn")
			end
			if i == nAniCount then
				EventManager.Hit(EventId.BlockInput, false)
				self:StartShowSkinPanel()
			end
		end)
		sequence:AppendInterval(0.067)
	end
end
function SuccessBarCtrl:StartShowSkinPanel()
	if PlayerData.CharSkin:CheckNewSkin() then
		self:AddTimer(1, 0.8, function()
			PlayerData.CharSkin:TryOpenSkinShowPanel()
			self:ClosePanel()
		end, true, true, true)
		EventManager.Hit(EventId.TemporaryBlockInput, 0.8)
	end
end
function SuccessBarCtrl:ClosePanel()
	if self._panel.callback then
		self._panel.callback()
	end
	EventManager.Hit(EventId.ClosePanel, PanelId.CharSucBar)
end
function SuccessBarCtrl:Awake()
end
function SuccessBarCtrl:OnEnable()
end
function SuccessBarCtrl:OnDisable()
	EventManager.Hit(EventId.BlockInput, false)
	if not PanelManager.CheckPanelOpen(PanelId.ReceiveSpecialReward) then
		PlayerData.CharSkin:TryOpenSkinShowPanel()
	end
end
function SuccessBarCtrl:OnDestroy()
end
return SuccessBarCtrl
