X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=qcsrc%2Flib%2Fdefer.qh;h=3e7e020c67a5fea2ea7368fb3444a30f9fbebea2;hb=fc15d72b041c9a748b605ba28735380fbe5b5b01;hp=749e4a665ec882a23f2e247551fbdc91f7c5f404;hpb=719ba01817465b96db552e18c7f277721d8dbb7e;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/defer.qh b/qcsrc/lib/defer.qh index 749e4a665..3e7e020c6 100644 --- a/qcsrc/lib/defer.qh +++ b/qcsrc/lib/defer.qh @@ -1,5 +1,5 @@ -#ifndef DEFER_H -#define DEFER_H +#pragma once + #ifndef MENUQC #include "oo.qh" @@ -7,45 +7,32 @@ entityclass(Defer); class(Defer).entity owner; - class(Defer).void() think; - class(Defer).float nextthink; - -/* -================== -SUB_Remove + class(Defer).void(entity) defer_func; -Remove self -================== -*/ - void SUB_Remove() + /** Remove entity */ + void SUB_Remove(entity this) { - SELFPARAM(); - remove(self); + remove(this); } - void defer_think() + void defer_think(entity this) { - SELFPARAM(); - self.think = SUB_Remove; - 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