Creating an object within an object
BlitzMax Forums/BlitzMax Programming/Creating an object within an object
| ||
I was wondering if anyone knew how to instantiate an object from a method within an object. The following is an example of what I'm trying to do:
Type map
Field width:Int=50;
Field height:Int=50;
Field layers:TList=CreateList();
' *** CONSTRUCTOR
Function Create:map()
*** Works fine here
End Function
Method addLayer(id:Int,layerName:String)
**** Following line tries to create new layer object
Local layer:mapLayer = New mapLayer.Create(1,layerName,Self.width,Self.height);
For Local rep = 1 To 20
layer.map[Rnd(Self.width),Rnd(Self.height)] = 1;
Next
ListAddLast Self.layers,layer;
End Method
Method drawMap()
**** draw map code
End Method
End Type
Type mapLayer
Field id:Int;
Field name:String;
Field map:Int[50,50];
' *** CONSTRUCTOR
Function Create:mapLayer(layerID:Int,layerName:String,width:Int,height:Int)
Local newLayer:mapLayer = New mapLayer
'newLayer.map = New Int[width,height];
newLayer.name = layerName
End Function
End Type
As you can see from the code, the new object is added to the layers list, but when I try to access the created object, none of the properties such as the map array can be access. |
| ||
| I'm not entirely sure about what you are trying to do but one thing that strikes me odd is that you have a Field map:int[50,50] inside a method - as far as I'm aware, if you want to declare a field in a type, it has to be done outside any methods or functions where all the other ones (e.g. Field width:Int) are declared. I've got a feeling I'm missing the point entirely, but thought I'd mention it. |
| ||
| I wrote an shortened version of the full code and didn't notice that it wasn't complete before I posted. Just edited the code so that it reflects the actual code. What I want to do is create a map object that has a list of tile layers. However, because I've not been able to put an array into the layers list, I've had create an object for each layer. If anyone knows how a similar way to put arrays into lists, this would be good also. |
| ||
| This seems to work.. |
| ||
| Thanks for that Brucey :-) Works a treat! Took me a whole day to figure that out. |
| ||
| I see you changed the original post. So it wasn't too far off then ;-) |
| ||
| Not too far off, but it's amazing how such small things can make a big difference :-D |
| ||
| I see you changed the original post Lol, a little note to that effect, on the first post would go amiss. (Cos Sebs anwser (for example), just looks silly now) |
| ||
| Wouldn't go amiss? |
| ||
| It was only a slight change and I did say in the following post. |