X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Flib%2Fdefer.qh;h=91782e56c129c4df904f92e72eb025560765cb6a;hb=10e9136856420e9238e2487e23d30f2d161f46d0;hp=6c495663452c2a0dffe4bf001b450c2c8a01498f;hpb=3ae1efa7401791e42e3171f4db2cc2d38adde088;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/defer.qh b/qcsrc/lib/defer.qh index 6c4956634..91782e56c 100644 --- a/qcsrc/lib/defer.qh +++ b/qcsrc/lib/defer.qh @@ -1,48 +1,49 @@ -#ifndef MENUQC #ifndef DEFER_H #define DEFER_H +#ifndef MENUQC -#include "oo.qh" -#include "self.qh" - -entityclass(Defer); -class(Defer) .entity owner; -class(Defer) .void() think; -class(Defer) .float nextthink; - -/* -================== -SUB_Remove - -Remove self -================== -*/ -void SUB_Remove() -{SELFPARAM(); - remove (self); -} - -void defer_think() -{SELFPARAM(); - self.think = SUB_Remove; - self.nextthink = time; - WITH(entity, self, self.owner, self.use()); -} + #include "oo.qh" + #include "self.qh" + + entityclass(Defer); + class(Defer).entity owner; + class(Defer).void() think; + class(Defer).float nextthink; + + /** Remove self */ + void SUB_Remove(entity this) + { + remove(this); + } + + /** Remove self */ + void SUB_Remove_self() + { + SELFPARAM(); + remove(this); + } + + void defer_think() + { + SELFPARAM(); + this.think = SUB_Remove_self; + this.nextthink = time; + WITH(entity, self, this.owner, this.use()); + } /* Execute func() after time + fdelay. self when func is executed = self when defer is called */ -void defer(float fdelay, void() func) -{SELFPARAM(); - entity e; - - e = spawn(); - e.owner = self; - e.use = func; - e.think = defer_think; - e.nextthink = time + fdelay; -} + void defer(entity this, float fdelay, void() func) + { + entity e = new(deferred); + make_pure(e); + e.owner = this; + e.use = func; + e.think = defer_think; + e.nextthink = time + fdelay; + } #endif #endif