Timer help needed

BlitzMax Forums/BlitzMax Beginners Area/Timer help needed

You could use function pointers as a sort of CallBack feature that can simulate multi threading...
Type TTimer
	Field BoundObject:Object
	Field Clock
	Field Interval
	Field NextTick
	Field Enabled = True
	Field TickCallback(Sender:TTimer)
	Function Create:TTimer(Interval, BoundObject:Object = null)
		Local o:TTimer = New TTimer
		o.BoundObject = BoundObject
		o.Interval = Interval
		o.Clock = MilliSecs()
		o.NextTick = o.Clock + o.Interval
		Return o
	End Function
	Method Update()
		If Enabled Then
			If MilliSecs() > NextTick Then
				Clock = MilliSecs()
				NextTick = Clock + Interval
				If TickCallback <> Null Then TickCallback(Self)
			End If
		End If
	End Method
End Type

Function TimerCallback(Sender:TTimer)
     Print "Tick!"
End Function

Local T:TTimer = TTimer.Create(1000)
T.TickCallback = TimerCallback

While Not Keyhit(Key_Escape)
     Cls
     T.Update()
     Flip
     Flushmem
Wend