Glad you could use it, I have however modified it to include mutiply paths with any set of waypoints each:
Graphics 800,600,16,2 ;create a new blue path path1.path=PathNew(0,0,255) ;assign 4 waypoints to it For n=1 To 4 WaypointNew( path1,Rnd(780),Rnd(580) ) Next ;create a new yellow path path2.path=PathNew(255,255,0) ;assign 7 waypoints to it For n=1 To 7 WaypointNew( path2,Rnd(780),Rnd(580) ) Next Type player Field waypoint.waypoint End Type ;create player 1 and let it follow path1 player1.player=New player player1\waypoint=PathFirstWaypoint(path1) ;create player 1 and let it follow path2 player2.player=New player player2\waypoint=PathFirstWaypoint(path2) Repeat Cls Color 255,255,255 Text 400,20,"Press 1 to let player 1 go to next waypoint in path 1 (blue)",True Text 400,40,"Press 2 to let player 2 go to next waypoint in path 2 (yellow)",True ;draw waypoints For w.waypoint=Each waypoint Color w\path\r,w\path\g,w\path\b Oval w\x,w\y,18,18,False Text w\x+9,w\y+9,w\number,True,True Next Color 0,0,255 If Sin(Float(MilliSecs())*10.0)>0 Oval player1\waypoint\x+6,player1\waypoint\y+6,6,6 Else Oval player1\waypoint\x-3,player1\waypoint\y-3,24,24,False EndIf Color 255,255,0 If Sin(Float(MilliSecs())*10.0)>0 Oval player2\waypoint\x+6,player2\waypoint\y+6,6,6 Else Oval player2\waypoint\x-3,player2\waypoint\y-3,24,24,False EndIf If KeyHit(2) player1\waypoint=WaypointNext(player1\waypoint) EndIf If KeyHit(3) player2\waypoint=WaypointNext(player2\waypoint) EndIf Flip Until KeyDown(1) End Type path Field r,g,b Field f.waypoint ;first waypoint Field l.waypoint ;last waypoint End Type Function PathNew.path(r,g,b) p.path=New path p\r=r p\g=g p\b=b Return p End Function Function PathFirstWaypoint.waypoint(p.path) Return p\f End Function Type waypoint Field path.path Field number Field x#,y# Field p.waypoint ;previous waypoint Field n.waypoint ;next waypoint End Type Function WaypointNew.waypoint(p.path,x#,y#) w.waypoint=New waypoint w\path=p w\x=x w\y=y ;check if path's first waypoint is empty If p\f=Null p\f=w EndIf ;check if path's last waypoint is empty If p\l=Null p\l=w EndIf ;assign path's last waypoint to the current waypoint's previous waypoint link w\p=p\l w\p\n=w p\l=w w\number=w\p\number+1 Return w End Function Function WaypointNext.waypoint(w.waypoint) If w\n=Null Return w\path\f EndIf Return w\n End Function Function WaypointPrev.waypoint(w.waypoint) If w\p=Null Return w\path\l EndIf Return w\p End Function