
--[[ 
	Voici la liste des fonctions spécifiques possibles pour les objets:
	
	
	- si cette fonction est définie, elle rajoutera des conditions à l'acceptation
	ou non des clics sur l'objet (retourne un booléen)
	function PrivateCanClickOn()

	end
	
	]]

.namespace Object

FADELENGTH = 0.5
GROWCOEFFECIENT = 1.03

--TODO mettre refpointx,refpointy directement dans les fichiers xls ?

function OnEnable()
	self.found = false	
end


function OnWbpMouseLUp(x,y,buttonPressed)
	if not self.CanClickOn() then
		return false
	end
	
	OPLog.Log("click sur "..self.Name)
	local posres =ObjectManager.CheckPickableObjetAndGetPosForParticules(self.Name)
		
	--sans doute à faire d'une maniére un peu plus propre
	if posres ~= nil then
		self.initx = self.Position_X 
		self.inity = self.Position_Y
		local parts
		
		if self.IsDifficult then
			parts = OPUnitFactory.CopyUnit(particles_pick_difficultobject)
		else
			parts = OPUnitFactory.CopyUnit(particles_pick_object)
		end
		parts.Enabled = true
		
		parts.objectattached = self.Name --pour la distinguer des autres particules
		
		
		--OPLog.Log("pon met objectattached "..parts.Name.." "..parts.objectattached)
		parts.AliasName = "particles_pick_object"

		
		local startx,starty = GetRefPosition()
		parts.LaunchMove(startx,starty,posres.x,posres.y,ObjectManager,self.Name)
		PlayRandomSound({"int_priseobjet01","int_priseobjet02","int_priseobjet03"})
		
		--on reset le compteur de freeze
		Cursor.g_clickcompteur = 0
				
		SpriteFader.Fade(self,false,FADELENGTH,self)
		self.found = true
		return true
	end
	return false
end

function GetRefPosition()
	if self.refpointx ~= nil then
		return (self.Position_X + self.Parent.Position_X + self.refpointx),(self.Position_Y + self.Parent.Position_Y + self.refpointy)
	else
		return (self.Position_X + self.Parent.Position_X + self.Dimension_Width/2),(self.Position_Y + self.Parent.Position_Y + self.Dimension_Height/2)
	end
end

function GetRefPositionWithoutParent()
	if self.refpointx ~= nil then
		return (self.Position_X + self.refpointx),(self.Position_Y + self.refpointy)
	else
		return (self.Position_X + self.Dimension_Width/2),(self.Position_Y + self.Dimension_Height/2)
	end
end

function OnUpdate()
	if self.found then
		self.Scale_X = self.Scale_X * GROWCOEFFECIENT
		self.Scale_Y = self.Scale_Y * GROWCOEFFECIENT
		
		self.Position_X = self.initx - (self.Scale_X - 1) * self.Dimension_Width /2 
		self.Position_Y = self.inity - (self.Scale_Y - 1) * self.Dimension_Height /2
	end
end

function OnFaderEnd()
	self.Enabled = false
end

function CanClickOn()
	local res = self.Flags_Visible and (IsEqualVariables("CurrentGamePhase","SearchSite") or IsEqualVariables("CurrentGamePhase","Closeup")
				or (IsEqualVariables("CurrentGamePhase","Tutorial") and NewTutorialManager.g_message == "TU_04"))				
				
	
	if self.found then
		return false
	end
	
	if self.PrivateCanClickOn ~= nil then
		res = res and self.PrivateCanClickOn()
	end
	
	return res
end


function OnDisable()
	
end


function SetCursor()
	return false
end


function SetUnitToNotify( ut )
	self.UnitToNotify = ut
end


function GetUnitToNotify()
	if self.UnitToNotify ~= nil then
		return self.UnitToNotify
	end
	
	return nil
end


