Skip to content

Latest commit

 

History

History
126 lines (76 loc) · 3.53 KB

README.md

File metadata and controls

126 lines (76 loc) · 3.53 KB

GeminiTimer

Wildstar Library - provides a central facility for registering timers that accept arguments.

GeminiTimer-1.0 provides a central facility for registering timers. GeminiTimer supports one-shot timers and repeating timers. All timers are stored in an efficient data structure that allows easy dispatching and fast rescheduling. Timers can be registered or canceled at any time, even from within a running timer, without conflict or large overhead. GeminiTimer is currently limited to firing timers at a frequency of 0.1s.

All :Schedule functions will return a handle to the current timer, which you will need to store if you need to cancel the timer you just registered.

GeminiTimer-1.0 can be embeded into your addon, either explicitly by calling GeminiTimer:Embed(MyAddon) or by specifying it as an embeded library in your GeminiAddon. All functions will be available on your addon object and can be accessed directly, without having to explicitly call GeminiTimer itself. It is recommended to embed GeminiTimer, otherwise you'll have to specify a custom self on all calls you make into GeminiTimer.

##GeminiTimer:CancelAllTimers() Cancels all timers registered to the current addon object ('self')

##GeminiTimer:CancelTimer(id) Cancels a timer with the given id, registered by the same addon object as used for :ScheduleTimer Both one-shot and repeating timers can be canceled with this function, as long as the id is valid and the timer has not fired yet or was canceled before.

###Parameters

id

	The id of the timer, as returned by `:ScheduleTimer` or `:ScheduleRepeatingTimer`

##GeminiTimer:ScheduleRepeatingTimer(func, delay, ...) Schedule a repeating timer. The timer will fire every delay seconds, until canceled.

###Parameters

func

	Function to be called when the timer expires

delay

	Delay for the timer, in seconds.

...

	An optional, unlimited amount of arguments to pass to the callback function.

###Returns

id

	Id with which to identify this timer with (For CancelTimer)

###Usage

MyAddOn = Apollo.GetPackage("Gemini:Addon-1.0").tPackage:NewAddon("MyAddOn", false, {}, "Gemini:Timer-1.0")

function MyAddOn:OnEnable()
  self.timerCount = 0
  self.testTimer = self:ScheduleRepeatingTimer("TimerFeedback", 5)
end

function MyAddOn:TimerFeedback()
  self.timerCount = self.timerCount + 1
  Print(("%d seconds passed"):format(5 * self.timerCount))
  -- run 30 seconds in total
  if self.timerCount == 6 then
    self:CancelTimer(self.testTimer)
  end
end

##GeminiTimer:ScheduleTimer(func, delay, ...) Schedule a new one-shot timer. The timer will fire once in delay seconds, unless canceled before.

###Parameters

func

	Function to be called when the timer expires

delay

	Delay for the timer, in seconds.

...

	An optional, unlimited amount of arguments to pass to the callback function.

###Returns

id

	Id with which to identify this timer with (For CancelTimer)

###Usage

MyAddOn = Apollo.GetPackage("Gemini:Addon-1.0").tPackage:NewAddon("MyAddOn", false, {}, "Gemini:Timer-1.0")

function MyAddOn:OnEnable()
  self:ScheduleTimer("TimerFeedback", 5)
end

function MyAddOn:TimerFeedback()
  Print("5 seconds passed")
end

##GeminiTimer:TimeLeft(id) Returns the time left for a timer with the given id, registered by the current addon object ('self'). This function will return 0 when the id is invalid.

###Parameters

id

	The id of the timer, as returned by `:ScheduleTimer` or `:ScheduleRepeatingTimer`

###Return value

The time left on the timer.