| New is a built in blitzmax command that instantiates a New instance of an object. 
 New cannot accept any parameters, which means all your auto-initialization stuff has to be handled in the New method for the type.
 
 Create is (generally) a custom made function.
 
 
 
SuperStrict
Type TNewType
	
	Field X:Int
	Field Y:Int
	Field Name:String
	
	Global TypeList:TList
	
	Method New() 
		If TypeList = Null Then TypeList = New TList
		X = 10
		Y = 20
		Name = "New TTest Type"
		Self.TypeList.addLast(Self)
	End Method
	
End Type
Local a:TNewType = New TNewType
	a.X = 20
	a.Y = Rand(101) 
	a.Name = "a"
	
Local b:TNewType = New TNewType
Local c:TNewType = New TNewType
Local d:TNewType = New TNewType
For Local tn:TnewType = EachIn TNewType.TypeList
	Print tn.Name + ": "+ tn.X  + ", " + tn.Y
Next
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Type TCreateType
	
	Field X:Int
	Field Y:Int
	Field Name:String
	
	Global TypeList:TList
	
	Function Create:TCreateType(X:Int = 10 , Y:Int = 20 , Name:String = "New TCreateType")
		If TypeList = Null Then TypeList = New TList
		
		Local temp:TCreateType = New TCreateType
			temp.X = X
			temp.Y = Y
			temp.Name = Name
			
		TypeList.addLast(temp)
			
		Return temp'return the type created in case the user wants to assign it to a variable
	End Function
	
End Type
Local x:TCreateType = TCreateType.Create(10 , 30 , "x") 
Local y:TCreateType = TCreateType.Create() 
Local z:TCreateType = TCreateType.Create(100 , 20) 
Local w:TCreateType = TCreateType.Create(10 , 2 , "W") 
For Local tc:TCreateType = EachIn TCreateType.TypeList
	Print tc.Name + ": "+ tc.X  + ", " + tc.Y
Next
 
 *EDIT*
 Spent too long writing this reply :)
 
 
 |