#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()); } /* 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; } #endif #endif