void timers_clear(attach_type *attach,int mode) { int k; k=timers_find(attach,mode); if (k==-1) return; js.timers[k].mode=timer_mode_dispose; }
void view_draw_debug_timer(int script_idx,int mode,char *name,bool has_chain,char *str) { int timer_idx; timer_type *timer; timer_idx=timers_find(script_idx,mode); if (timer_idx==-1) { sprintf(str,"%s: *",name); return; } timer=js.timer_list.timers[timer_idx]; if (!has_chain) { sprintf(str,"%s: %d",name,timer->count); } else { sprintf(str,"%s: %d [%s]",name,timer->count,timer->chain_func_name); } }
bool timers_add(attach_type *attach,int freq,int user_id,char *chain_func_name,int mode) { int k,script_idx; script_type *script; timer_type *timer; // if already timer for this script, mark it as disposed k=timers_find(attach,mode); if (k!=-1) { js.timers[k].mode=timer_mode_dispose; } // create a new timer if (js.count.timer>=max_timers) return(FALSE); // script script_idx=scripts_find_uid(attach->script_uid); script=&js.scripts[script_idx]; // setup timer timer=&js.timers[js.count.timer]; memmove(&timer->attach,attach,sizeof(attach_type)); timer->mode=mode; timer->freq=freq; if (timer->freq<1) timer->freq=1; timer->count=timer->freq; timer->user_id=user_id; if (chain_func_name!=NULL) strcpy(timer->chain_func_name,chain_func_name); js.count.timer++; return(TRUE); }
static void timer_set_id(Timer* timer) { timer->id = rand(); while (timers_find(timer->id)) { timer->id = rand(); } }