
--[[ 
	Voici la liste des fonctions spécifiques possibles pour les objets:
	
	- si cette fonction est définie, elle remplacera la fonction Take() (ne retourne rien)
	function PrivateTake()
		...
	end
	
	- 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 InventoryObject

FLAG_MOUSER_PRESSED = 1
FLAG_MOUSEL_PRESSED = 2


function OnEnable()
	self.CurrentManager = GetCurrentManager()
	self.GameVariables = GameVariables
	self.Conditions = Conditions
	self.FlagsFunctions = FlagsFunctions
end


function OnWbpMouseLDown(x,y,buttonPressed)
	if not self.GameVariables.IsEqual('CurrentObject','') then
		return false
	end
	

	if self.Flags_Visible and self.CanClickOn() then --and self.FatherSpot.CompareFlag(SPOT_RESOLVED)==false then
		self.Take()
		return true
	end

	return false
end

--[[
function OnWbpMouseRDown(x,y,buttonPressed)
	if not IsEqualVariables('CurrentObject','') then
		return false
	end
	
	if OPCore.GetPlatform() == "Wii" and buttonPressed == FLAself.MOUSEL_PRESSED + FLAself.MOUSER_PRESSED then
		if self.CanClickOn() then
			self.Take()
			return true
		end
	end
	
	return false
end
--]]

function Take()
	if self.PrivateTake ~= nil then
		self.PrivateTake()
	else
		OPLog.Log( "L'objet "..self.Name.." se fait cliquer dessus" )
		Cursor.SetObjectDragged( self )
		InventoryBag.Active()
	end
end


function CanClickOn()
	local res = self.Flags_Visible
	res = res and CanClickOnSiteGeneric()

	if self.PrivateCanClickOn ~= nil then
		res = res and self.PrivateCanClickOn()
	end
	
	return res
end

function CanClickOnSiteGeneric()
	return IsEqualVariables("CurrentGamePhase","SearchSite")
end

function OnUpdateAll()
	if self.isDragged==true then
		self.Flags_Visible = false
	end	
end


function SetCursor()
	if OPUnitFactory.GetUnit("Cursor","Cursor").IsDragging() then
		OPUnitFactory.GetUnit("Cursor","Cursor").ChangeCursor(CURSOR_DRAGGING)
		return true
	elseif self.CanClickOn() then
		OPUnitFactory.GetUnit("Cursor","Cursor").ChangeCursor(CURSOR_OBJECT)
		return true
	end
	
	return false
end
