X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Flib%2Fdefer.qh;h=4f34bb4853ade7f0149274ebdb3c325d4468147a;hb=a3d9634886e52c442bd9d68a86b8df77e6ed26ed;hp=0fa29747543a8aa0da3fd74935e7dfd1a5971b0c;hpb=1e31381058a302273d1a3f907f1dd72885845b27;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/defer.qh b/qcsrc/lib/defer.qh index 0fa297475..4f34bb485 100644 --- a/qcsrc/lib/defer.qh +++ b/qcsrc/lib/defer.qh @@ -1,51 +1,38 @@ -#ifndef DEFER_H -#define DEFER_H -#ifndef MENUQC +#pragma once + +#ifdef GAMEQC #include "oo.qh" #include "self.qh" entityclass(Defer); class(Defer).entity owner; - class(Defer).void() think; - class(Defer).float nextthink; + class(Defer).void(entity) defer_func; - /** Remove self */ + /** Remove entity */ void SUB_Remove(entity this) { - remove(this); - } - - /** Remove self */ - void SUB_Remove_self() - { - SELFPARAM(); - remove(this); + delete(this); } - void defer_think() + void defer_think(entity this) { - SELFPARAM(); - self.think = SUB_Remove_self; - self.nextthink = time; - WITH(entity, self, self.owner, self.use()); + setthink(this, SUB_Remove); + this.nextthink = time; + this.defer_func(this.owner); } -/* - Execute func() after time + fdelay. - self when func is executed = self when defer is called -*/ - void defer(float fdelay, void() func) + /** + * Execute func() after time + fdelay. + * self when func is executed = self when defer is called + */ + void defer(entity this, float fdelay, void(entity) func) { - SELFPARAM(); - - entity e = new(deferred); - make_pure(e); + entity e = new_pure(deferred); e.owner = this; - e.use = func; - e.think = defer_think; + e.defer_func = func; + setthink(e, defer_think); e.nextthink = time + fdelay; } #endif -#endif