PlayerSingView = class("PlayerSingView", SubView)
autoImport("PlayerSingViewCell")
function PlayerSingView:Init()
	self:AddViewEvents()
end

function PlayerSingView:AddViewEvents(  )
	-- body
	EventManager.Me():AddEventListener(SkillEvent.SkillCastBegin,self.HandleStartProcess,self)
	EventManager.Me():AddEventListener(SkillEvent.SkillCastEnd,self.HandleStopProcess,self)

	EventManager.Me():AddEventListener(SkillEvent.SkillFreeCastBegin,self.HandleStartProcess,self)
	EventManager.Me():AddEventListener(SkillEvent.SkillFreeCastEnd,self.HandleStopProcess,self)
end

function PlayerSingView:OnExit(  )
	-- body
	EventManager.Me():RemoveEventListener(SkillEvent.SkillCastBegin,self.HandleStartProcess,self)
	EventManager.Me():RemoveEventListener(SkillEvent.SkillCastEnd,self.HandleStopProcess,self)

	EventManager.Me():RemoveEventListener(SkillEvent.SkillFreeCastBegin,self.HandleStartProcess,self)
	EventManager.Me():RemoveEventListener(SkillEvent.SkillFreeCastEnd,self.HandleStopProcess,self)
end

function PlayerSingView:HandleStartProcess( note )
	-- body
	local creature = note.data
	if(not creature)then
		return
	end
	local id = creature.data.id
	local castTime = creature.skill and creature.skill:GetCastTime(creature) or 0

	if(castTime > 0)then
		local singCell = self:getSingViewCell(id)
		if(not singCell)then
			local creature = SceneCreatureProxy.FindCreature(id)
			local sceneUI = creature and creature:GetSceneUI() or nil
			if(sceneUI)then
				singCell = sceneUI.roleTopUI:createOrGetTopSingUI()
			end			
		end
		if(singCell)then
			singCell:SetData(creature)
		end
	end
end

function PlayerSingView:getSingViewCell( id )
	-- body
	local creature = SceneCreatureProxy.FindCreature(id)
	local sceneUI = creature and creature:GetSceneUI() or nil
	if(sceneUI)then
		return sceneUI.roleTopUI.topSingUI
	end
end

function PlayerSingView:HandleStopProcess( note )
	-- body
	local creature = note.data
	if(not creature)then
		return
	end
	if(creature.data) then
		local id = creature.data.id
		local singCell = self:getSingViewCell(id)
		if(singCell)then
			singCell:delayProcess()
		end
	end
end