X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Flib%2F_all.inc;h=ab74531605f29a44d7f69c23b7ba99e4f30a3479;hb=e0012447bfce1b551df3dc01b043655aa93dafad;hp=b8d78cd0419e209ff8eca3a62e96240ac4d99bfe;hpb=264c9f48d418d1ebd4b5ef5868b85f92644917dc;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/_all.inc b/qcsrc/lib/_all.inc index b8d78cd04..ab7453160 100644 --- a/qcsrc/lib/_all.inc +++ b/qcsrc/lib/_all.inc @@ -24,6 +24,26 @@ #define bool float #endif +#ifndef QCC_SUPPORT_ACCUMULATE + #warning "QCC does not support accumulate, may not compile correctly" + #define ACCUMULATE +#else + #define ACCUMULATE [[accumulate]] +#endif + +#ifndef QCC_SUPPORT_ERASEABLE + #define ERASEABLE +#else + #define ERASEABLE [[eraseable]] +#endif + +#ifndef QCC_SUPPORT_ALIAS + #warning "QCC does not support alias, may not compile correctly" + #define ALIAS(var) +#else + #define ALIAS(var) [[alias(var)]] +#endif + #include #if defined(CSQC) @@ -41,6 +61,12 @@ #include +#ifndef QCC_SUPPORT_POW + #define pow(a, b) pow(a, b) +#else + #define pow(a, b) ((a) ** (b)) +#endif + #include "self.qh" #define USING(name, T) typedef T name @@ -107,6 +133,7 @@ #include "oo.qh" #include "p2mathlib.qc" #include "progname.qh" +#include "promise.qc" #include "random.qc" #include "registry.qh" #include "registry_net.qh" @@ -135,14 +162,14 @@ void make_safe_for_remove(entity this); #define objerror_safe(e) make_safe_for_remove(e) #endif -#define objerror(this, msg) MACRO_BEGIN { \ +#define objerror(this, msg) MACRO_BEGIN \ LOG_WARN("======OBJECT ERROR======"); \ entity _e = (this); \ eprint(_e); \ objerror_safe(_e); \ delete(_e); \ LOG_WARNF("%s OBJECT ERROR in %s:\n%s\nTip: read above for entity information", PROGNAME, __FUNC__, msg); \ -} MACRO_END +MACRO_END #ifdef MENUQC void _m_init(); @@ -176,7 +203,17 @@ void make_safe_for_remove(entity this); #define SV_Shutdown _SV_Shutdown void _StartFrame(); - void StartFrame() { if (_StartFrame) _StartFrame(); } + bool _StartFrame_init; + void spawnfunc_worldspawn(entity); + void StartFrame() { + if (!_StartFrame_init) { + _StartFrame_init = true; + float oldtime = time; time = 1; + __spawnfunc_expecting = 2; NULL.__spawnfunc_constructor(NULL); + time = oldtime; + } + if (_StartFrame) _StartFrame(); + } #define StartFrame _StartFrame void _SetNewParms(); @@ -225,7 +262,8 @@ void make_safe_for_remove(entity this); void SV_OnEntityPreSpawnFunction() { ENGINE_EVENT(); - if (_SV_OnEntityPreSpawnFunction) _SV_OnEntityPreSpawnFunction(this); + __spawnfunc_expecting = true; + __spawnfunc_expect = this; } #define SV_OnEntityPreSpawnFunction _SV_OnEntityPreSpawnFunction