Hi to all. I am usually using a TList type to store all my game objects. It is very easy to update or draw them in main cycle. But when i need to get a current one of them, i run a loop, and check every linked object for some special field -- an ID for example. I suggest that there is some another and better way to get an object from list, without wasting precious time. Any advices?
Thanks in advance!
For example:
Type thing
Field id$
Field age
Function Create:thing(id$)
t:thing=New thing
t.id=id
thingids.insert id,t 'insert the thing into the map under the key matching its id.
t.age=Rand(10,50) 'make up a random age
Print t.id+": "+t.age
Return t
End Function
Function withid:thing(id$) 'find the thing corresponding to the given id.
If thingids.contains(id)
Return thing(thingids.valueforkey(id))
EndIf
End Function
End Type
Global thingids:tmap=New tmap
thing.Create("Jim")
thing.Create("Bob")
Print "thing.withid(~qJim~q).age : "+thing.withid("Jim").age
And you can maintain a TList and a TMap at the same time, by the way, and use whichever suits your needs in different parts of the program.
I concur.
To be more specific I used to used TLists for certain things where I wanted to look something up and then when I found out how TMaps really work I changed to using them.
Thanks a lot!! Can you imagine -- i even didn't knew anything about this useful TMap type.. Thanks again! I'm so happy :D