Nesting Type
Blitz3D Forums/Blitz3D Beginners Area/Nesting Type
| ||
Could we make a Nesting Type Could someone give some simple example on that |
| ||
Type Player Field ObjectHandle Field xPosition# Field yPosition# Field zPosition# Field PlayerWeapon.Weapon End Type Type Weapon Field Name$ Field ObjectHandle Field Damage# Field FireRate End Type Player.Player = New Player Player\PlayerWeapon.Weapon = New Weapon Player\xPosition# = blah,blah,blah Player\PlayerWeapon\name$ = blah, blah, blah You can nest as many levels as you like Hope this helps a little. |
| ||
Thanks NTense. Its help a lot |
| ||
Be aware that nested types are not "truly" nested. That is, using the above example. If you create three players, and 2 weapons for each of them, when you cycle through all the weapons with For.. Each you will be cycling through all six weapons. There is no command to specifically cycle through only those that correspond to a particular player. For that you will need to add a parent field which stores the type handle of the player who owns the weapon. Of course, in the example given, you probably won't need any of this. But in other cases of nested types, you will need to know the "parent" of the "child" type instance. |
| ||
Clarification: Sybixsus is referring to the internal linked list of type instances. So, to distinguish, all of the actual custom type *objects* are in a linked list, whereas the custom type *pointers* can be nested within other custom types. (And type pointers are what you work with as members of other types.) |
| ||
Is there a way of having an *array* of types inside another type? This sort of thing (except that this doesn't work!): type testType Field lots.otherType(10) end type |
| ||
Type testType Field lots.otherType[10] End Type Just use [] instead of (). But remember, only one-dimensional arrays are allowed!! |
| ||
<EDIT: beat to the punch...> Yes, but you can't put normal arrays in custom types. You must use what are sometimes termed as "BlitzArrays" (search in the forum for descriptions of differences... the main annoying ones are that they can only be one dimension, and they don't show up well in the debugger). Like this: type testType Field lots.otherType[10] end type (notice the difference in brackets versus parens... also, you don't use "Dim") |
| ||
Good enough for what I want though. Thanks! |