#ifndef MENUQC #ifndef DEFER_H #define DEFER_H #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