| Hi all, I thought this would be quite straight-forward at first, but again, I'm struggling. 
 The user can click anywhere on the screen placing a 'node', these are stored in a list. When the user has placed at least two nodes, I'd like a line created between the points. I'd also like this line stored in a list (the type has the fields x1,y1,x2,y2).
 
 
 SuperStrict
SetGraphicsDriver GLMax2DDriver() 'set graphics driver
Global graphicsx:Int=800 'screen width pixels
Global graphicsy:Int=600 'screen height pixels
Global screenmode:Byte=0 'screen mode 0=windowed, >0=fullscreen
Graphics graphicsx,graphicsy,screenmode 'graphics setup
'********************
'*** Nodes & Rays ***
'********************
Global nodelist:TList=CreateList() 'list of all nodes
Type node
	Field x:Int 'physical x location
	Field y:Int 'physical y location
End Type
Global raylist:TList=CreateList() 'list of all rays
Type ray
	Field x1:Int 'physical x start location
	Field y1:Int 'physical y start location
	Field x2:Int 'physical x end location
	Field y2:Int 'physical y end location
End Type
Function placenode() 'create a new node
	If MouseHit(1) Then
		Local newnode:node=New node
		newnode.x=MouseX()
		newnode.y=MouseY()
		ListAddLast(nodelist,newnode)
		If CountList(nodelist)>0 Then
			If CountList(nodelist) Mod 2=0 Then
		
			Else
				Local newray:ray=New ray
				newray.x1=newnode.x
				newray.y1=newnode.y
				ListAddLast(raylist,newray)
			End If
		End If
	End If
End Function
Function removenode() 'remove previously placed node
	If MouseHit(2) Then 
		If ListIsEmpty(nodelist)=False Then
			nodelist.removelast
		End If
	End If
End Function
Function drawnode() 'draw nodes
	SetColor 255,255,255
	For Local a:node=EachIn nodelist
		Plot a.x,a.y
	Next
	If CountList(nodelist)>0 Then
		For Local b:ray=EachIn raylist
			DrawLine b.x1,b.y1,b.x2,b.y2
		Next
	End If
End Function
'**********************
'*** MAIN GAME LOOP ***
'**********************
While Not KeyHit(KEY_ESCAPE)
	Cls
	placenode()
	removenode()
	drawnode()
	debug()
	Flip
Wend
'*************
'*** DEBUG ***
'*************
Function debug()
	Local a:Int=CountList(nodelist)
	DrawText a,0,0
	Local b:Int=CountList(raylist)
	DrawText b,0,16
End Function
 
 Am I approaching this the right way? It obviously doesn't work right yet - struggling with creating new objects whereby I need to populate them with information from the previously created one (start and end positions of the line).
 
 Sorry if that doesn't make too much sense, or my code looks horrendous! :p
 
 
 |