
.namespace hotspothanoi

function OnActivate()
	
	for i=1,3  do --permet de recuperer le tableau sur lequel on vient de cliquer
		if i==1 then
			at=tab1
		elseif i==2 then
			at=tab2
		elseif i==3 then
			at=tab3
		end
			
	
		if self.Name == "Base"..tostring(i).."Hotspot" and i>0 then
		
			if situation==0 then --aucun disque séléctionné
				
				for j=1,4 do --on vérifie le premier disque a recuperer 
					if at[j]==0 then
						i1=i1 - 1
					end
				end
				
				if i1==0 then -- c-a-d quand on sélectionne un espace vide
					i1=4
				elseif i1 > 0 then	-- c-a-d on a selectionné le premier disque
					valachg=at[i1]
					at[i1]=0
					basefrom=i
					situation=1
					i2=1
				end
			
			
			elseif situation==1 then --disque séléctionné
				
				it = OPUnitFactory.GetUnit("disque"..tostring(valachg))
				
				for j=1,4  do --vérifie le premier espace disponible pour poser le disque
					if at[j]~=0 then
						i2=i2 + 1
					end
				end
				
				if i2==1 then --si la base est vide, on met directement le disque
				at[i2]=valachg
				PlaySoundEffect("gmp_sliceadd",true)
				
				elseif at[i2-1]>valachg then -- si le disque de dessous est superieur au disque actuel
				at[i2]=valachg
				PlaySoundEffect("gmp_sliceadd",true)
				elseif at[i2-1]<valachg then -- si le disque de dessous est inferieur au disque actuel
				PlaySoundEffect("gmp_noslice",true)
					baseini = OPUnitFactory.GetUnit("base"..tostring(basefrom))
					
					for m=1,3  do
						if m==1 then
							yt=tab1
						elseif m==2 then
							yt=tab2
						elseif m==3 then
							yt=tab3
						end
						
						if basefrom==m then
							yt[i1]=valachg
							it.Position_X = (baseini.Position_X + tabgraph[valachg])
							if i1==1 then
								if valachg==1 then
									it.Position_Y = 497 - 73
								elseif valachg==2 then
									it.Position_Y = 512 - 73
								elseif valachg==3 then
									it.Position_Y = 492 - 73
								elseif valachg==4 then
									it.Position_Y = 507 - 73
								end
							elseif i1==2 then
								if yt[i1-1]==4 then
									if valachg==1 then
										it.Position_Y = 484 - 73
									elseif valachg==2 then
										it.Position_Y = 491 - 73
									elseif valachg==3 then
										it.Position_Y = 475 - 73
									end
								elseif yt[i1-1]==3 then
									if valachg==1 then
										it.Position_Y = 455 - 73
									elseif valachg==2 then
										it.Position_Y = 472 - 73
									end
								elseif yt[i1-1]==2 then
									if valachg==1 then
										it.Position_Y = 470 - 73
									end
								end
							elseif i1==3 then
								if yt[i1-1]==3 then
									if valachg==1 then
										it.Position_Y = 439 - 73
									elseif valachg==2 then
										it.Position_Y = 452 - 73
									end
								elseif yt[i1-1]==2 and yt[i1-2]==4 then
									it.Position_Y = 450 - 73
								elseif yt[i1-1]==2 and yt[i1-2]==3 then
									it.Position_Y = 429 - 73
								end
							elseif i1==4 then
								it.Position_Y = 409 - 73
							end
						end
					end
							
						placejuste=1
						
				end
				situation=0
				i1=4
				
				
				base = OPUnitFactory.GetUnit("base"..tostring(i))
				if placejuste==0 then	
					it.Position_X = (base.Position_X + tabgraph[valachg])
					if i2==1 then
						if valachg==1 then
							it.Position_Y = 497 - 73
						elseif valachg==2 then
							it.Position_Y = 512 - 73
						elseif valachg==3 then
							it.Position_Y = 492 - 73
						elseif valachg==4 then
							it.Position_Y = 507 - 73
						end
					elseif i2==2 then
						if at[i2-1]==4 then
							if valachg==1 then
								it.Position_Y = 484 - 73
							elseif valachg==2 then
								it.Position_Y = 491 - 73
							elseif valachg==3 then
								it.Position_Y = 475 - 73
							end
						elseif at[i2-1]==3 then
							if valachg==1 then
								it.Position_Y = 455 - 73
							elseif valachg==2 then
								it.Position_Y = 472 - 73
							end
						elseif at[i2-1]==2 then
							if valachg==1 then
								it.Position_Y = 470 - 73
							end
						end
					elseif i2==3 then
						if at[i2-1]==3 then
							if valachg==1 then
								it.Position_Y = 439 - 73
							elseif valachg==2 then
								it.Position_Y = 452 - 73
							end
						elseif at[i2-1]==2 and at[i2-2]==4 then
							it.Position_Y = 450 - 73
						elseif at[i2-1]==2 and at[i2-2]==3 then
							it.Position_Y = 429 - 73
						end
					elseif i2==4 then
						it.Position_Y = 409 - 73
					end
					
					if i~=basefrom then
						nbrcoupjoue=nbrcoupjoue + 1
						localizedtext = string.gsub(GlobalFunctions.GetText("label_s09_c01"),"$a",nbrcoupjoue)
						hanoi_label.Flags_Visible=true
						hanoi_label.Text = localizedtext
					end
				end
				
				placejuste=0
				valachg=0 -- le disque arrete de bouger et se pose
				
				
			end
		
		end
		
	end
	
end



function OnEnable()
	AreaHotspot.OnEnable()
end

function GetSpecificCursor()
	if(self.Name=="Base1Hotspot" and tab1[1]  ~= 0  ) then
		return 3
	end
	if(self.Name=="Base2Hotspot" and tab2[1]  ~= 0  ) then
		return 3
	end
	if(self.Name=="Base3Hotspot" and tab3[1]  ~= 0  ) then
		return 3
	end
	return 0
end

function PrivateCanClickOn()
	return true
end

