enderalse/source/scripts/modevent.psc

52 lines
1.5 KiB
Plaintext

Scriptname ModEvent Hidden
; ModEvent allows sending mod events with any number/type of arguments, unlike the more limited Form.SendModEvent.
;
; Example:
;
; (Sender)
;
; int handle = ModEvent.Create("MYPREFIX_myCustomEvent")
; if (handle)
; ModEvent.PushForm(handle, self)
; ModEvent.PushForm(handle, someOtherForm)
; ModEvent.PushInt(handle, 1000)
; ModEvent.PushString(handle, "It worked!")
; UIDelegate.Send(handle)
; endIf
;
; (Receiver)
;
; function OnInit()
; RegisterForModEvent("MYPREFIX_myCustomEvent", "OnMyCustomEvent")
; endFunction
;
; event OnMyCustomEvent(Form sender, Form theForm, int theInt, string theString)
; ; sender == (Sender)
; ; theForm == someOtherForm
; ; theInt == 1000
; ; theString == "It worked!"
; endEvent
; Creates a new ModEvent and returns the handle.
int Function Create(string eventName) global native
; Sends the ModEvent and releases it.
; Returns true, if it was sent successfully, false if an error happened.
bool Function Send(int handle) global native
; Releases the ModEvent without sending it.
Function Release(int handle) global native
; Push single parameter.
;
; For arguments 1 .. N, the signature of the receiving event callback has to look like this:
;
; event MyCallback(TYPE_1 PARAM_1, ... , TYPE_N PARAM_N)
;
Function PushBool(int handle, bool value) global native
Function PushInt(int handle, int value) global native
Function PushFloat(int handle, float value) global native
Function PushString(int handle, string value) global native
Function PushForm(int handle, Form value) global native