Files
vgstation13/code/datums/callback.dm
DamianX 9235a1c753 Radial menus use callbacks instead of event datums (#27786)
* Radial menus use callbacks instead of event datums

* Removed macro, changed path to /callback

* removed event thingy
2020-09-20 16:58:56 -03:00

31 lines
782 B
Plaintext

/callback
var/datum/thing_to_call
var/proc_to_call
var/list/arguments
/callback/New(datum/thing_to_call, proc_to_call, ...)
src.thing_to_call = thing_to_call
src.proc_to_call = proc_to_call
if(length(args) > 2)
arguments = args.Copy(3)
/callback/proc/invoke(...)
if(!thing_to_call)
return
var/list/calling_arguments = arguments
if(length(args))
if(length(arguments))
calling_arguments = calling_arguments + args //not += so that it creates a new list so the arguments list stays clean
else
calling_arguments = args
if(thing_to_call == GLOBAL_PROC)
return call(proc_to_call)(arglist(calling_arguments))
return call(thing_to_call, proc_to_call)(arglist(calling_arguments))
/callback/proc/invoke_async(...)
set waitfor = FALSE
invoke(arglist(args))