
Structure
Code: Select all
;Created by <David.C#S4701L> 2007
;If you wish to redistribute please ask first! :)
;Official Topic: http://www.purebasic.fr/english/viewtopic.php?t=28818
Global oMax = 5 ;Your maximum amount of objects
Global Dim Object(oMax)
Enumeration
#Create
#Step
#Destroy
EndEnumeration
Procedure EventInstance()
Repeat
For i=0 To oMax
If Object(i) <> 0
CallFunctionFast(Object(i),i,#Step)
EndIf
Next
Delay(16)
ForEver
EndProcedure
Procedure CreateInstance(CodeAddress.l)
For i=0 To oMax
If Object(i)=0
Object(i)=CodeAddress.l
CallFunctionFast(Object(i),i,#Create)
ProcedureReturn i
EndIf
Next
ProcedureReturn -1
EndProcedure
Procedure DestroyInstance(InstanceId)
For i=0 To oMax
If Object(i) = InstanceId
CallFunctionFast(Object(i),#Destroy)
Object(i) = 0
ProcedureReturn 1
EndIf
Next
ProcedureReturn
EndProcedure
Code: Select all
;Created by <David.C#S4701L> 2007
;If you wish to redistribute please ask first! :)
;Official Topic: http://www.purebasic.fr/english/viewtopic.php?t=28818
Global oMax = 5 ;Your maximum amount of objects
Global Dim Object(oMax)
Enumeration
#Create
#Step
#Destroy
EndEnumeration
Procedure Test(InstanceId.l,Type.l=0)
Select Type
Case #Create ;Run straight after the object is made
MessageRequester("Hi","Hello there.")
Case #Step ;Run every "Step"
Debug "Object: Test - made event Step."
Case #Destroy ;Run when we want to remove the object
MessageRequester("MAYDAY!","I'm going down! I'm going down!!")
EndSelect
EndProcedure
Procedure EventInstance()
Repeat
For i=0 To oMax
If Object(i) <> 0
CallFunctionFast(Object(i),i,#Step)
EndIf
Next
Delay(16)
ForEver
EndProcedure
Procedure CreateInstance(CodeAddress.l)
For i=0 To oMax
If Object(i)=0
Object(i)=CodeAddress.l
CallFunctionFast(Object(i),i,#Create)
ProcedureReturn i
EndIf
Next
ProcedureReturn -1
EndProcedure
Procedure DestroyInstance(InstanceId)
For i=0 To oMax
If Object(i) = InstanceId
CallFunctionFast(Object(i),#Destroy)
Object(i) = 0
ProcedureReturn 1
EndIf
Next
ProcedureReturn
EndProcedure
Object1 = CreateInstance(@Test())
ObjectThreadID = CreateThread(@EventInstance(),"")
Repeat
Delay(16)
ForEver

David C