Files
fulpstation/code/__DEFINES/callbacks.dm
SomethingFish edb232b692 March TGU (#953)
* lol.

* bit of changes

* deletes stuff

* some map path updates

* more changes

* deletes unit test that was gonna be deleted in tg

* see if this fixes anything
2023-04-04 22:12:01 -04:00

25 lines
901 B
Plaintext

#define GLOBAL_PROC "some_magic_bullshit"
/// A shorthand for the callback datum, [documented here](datum/callback.html)
#define CALLBACK new /datum/callback
///Per the DM reference, spawn(-1) will execute the spawned code immediately until a block is met.
#define MAKE_SPAWN_ACT_LIKE_WAITFOR -1
///Create a codeblock that will not block the callstack if a block is met.
#define ASYNC spawn(MAKE_SPAWN_ACT_LIKE_WAITFOR)
#define INVOKE_ASYNC(proc_owner, proc_path, proc_arguments...) \
if ((proc_owner) == GLOBAL_PROC) { \
ASYNC { \
call(proc_path)(##proc_arguments); \
}; \
} \
else { \
ASYNC { \
/* Written with `0 ||` to avoid the compiler seeing call("string"), and thinking it's a deprecated DLL */ \
call(0 || proc_owner, proc_path)(##proc_arguments); \
}; \
}
/// like CALLBACK but specifically for verb callbacks
#define VERB_CALLBACK new /datum/callback/verb_callback